20260116
This commit is contained in:
parent
2dab0dffbc
commit
bd520fa719
@ -1,10 +1,10 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
model2 "roserver/baseserver/model"
|
||||
gameModel "roserver/game/model"
|
||||
"roserver/serverproto"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type LiveAnswerRoom struct {
|
||||
@ -113,24 +113,10 @@ func (self *LiveAnswerRoom) GetCMDPlayDataList(readyUidList []uint64, uid uint64
|
||||
// 返回玩家分数排名
|
||||
func (self *LiveAnswerRoom) GetShowResultList(readyUidList []uint64, uid uint64) []*serverproto.LiveRoomPlayerInfo {
|
||||
playerResults := make([]*serverproto.LiveRoomPlayerInfo, 0)
|
||||
maxResultNum := 10
|
||||
if userAnswerInfo, exist := self.userAnswers[uid]; exist {
|
||||
playerInfo := MakeLiveRoomPlayerInfo(uid)
|
||||
for _, tmpUid := range self.readyUidList {
|
||||
playerInfo := MakeLiveRoomPlayerInfo(tmpUid)
|
||||
playerInfo.Data = "0"
|
||||
for k, v := range userAnswerInfo.answers {
|
||||
questionId := k
|
||||
answer := v
|
||||
if self.CheckAnswer(int32(questionId), answer) {
|
||||
playerInfo.Data = "1"
|
||||
break
|
||||
}
|
||||
}
|
||||
playerResults = append(playerResults, playerInfo)
|
||||
}
|
||||
for _, userAnswerInfo := range self.userAnswers {
|
||||
if len(playerResults) < maxResultNum && userAnswerInfo.uid != uid {
|
||||
playerInfo := MakeLiveRoomPlayerInfo(userAnswerInfo.uid)
|
||||
playerInfo.Data = "0"
|
||||
if userAnswerInfo, exist := self.userAnswers[tmpUid]; exist {
|
||||
for k, v := range userAnswerInfo.answers {
|
||||
questionId := k
|
||||
answer := v
|
||||
@ -139,8 +125,8 @@ func (self *LiveAnswerRoom) GetShowResultList(readyUidList []uint64, uid uint64)
|
||||
break
|
||||
}
|
||||
}
|
||||
playerResults = append(playerResults, playerInfo)
|
||||
}
|
||||
playerResults = append(playerResults, playerInfo)
|
||||
}
|
||||
return playerResults
|
||||
}
|
||||
@ -160,13 +146,25 @@ func (self *LiveAnswerRoom) GetShowRewardList(readyUidList []uint64, uid uint64)
|
||||
}
|
||||
|
||||
func (self *LiveAnswerRoom) HasShowData() bool {
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
// 返回游戏过程中的状态数据
|
||||
func (self *LiveAnswerRoom) GetShowData(readyUidList []uint64, uid uint64) []*serverproto.KeyValueType64 {
|
||||
submitResult := make([]*serverproto.KeyValueType64, 0)
|
||||
return submitResult
|
||||
showData := make([]*serverproto.KeyValueType64, 0)
|
||||
for _, v := range self.userAnswers {
|
||||
score := 0
|
||||
for questionId, answer := range v.answers {
|
||||
if self.CheckAnswer(int32(questionId), answer) {
|
||||
score += 1
|
||||
}
|
||||
}
|
||||
showData = append(showData, &serverproto.KeyValueType64{
|
||||
Key: v.uid,
|
||||
Value: int32(score),
|
||||
})
|
||||
}
|
||||
return showData
|
||||
}
|
||||
|
||||
// 处理玩家在游戏过程中提交的输入,玩家提交选择
|
||||
@ -181,8 +179,7 @@ func (self *LiveAnswerRoom) HandleShowSubmit(uid uint64, data []*serverproto.Key
|
||||
}
|
||||
for _, v := range data {
|
||||
questionId := v.Key
|
||||
answerStr := v.StrVal
|
||||
answer, _ := strconv.Atoi(answerStr)
|
||||
answer := v.Value
|
||||
self.userAnswers[uid].answers[questionId] = int32(answer)
|
||||
}
|
||||
return submitResult
|
||||
@ -193,7 +190,8 @@ func (self *LiveAnswerRoom) GetStageEnterParams(stage uint32) string {
|
||||
stageEnterParams := ""
|
||||
switch stage {
|
||||
case LIVEROOM_STAGE_SHOW:
|
||||
stageEnterParams = ""
|
||||
optionStr := ArrayJoin(self.questions[0].options, "-")
|
||||
stageEnterParams = fmt.Sprintf("question:%d;options:%s", self.questions[0].questionCfg.Id, optionStr)
|
||||
}
|
||||
return stageEnterParams
|
||||
}
|
||||
|
||||
@ -63,22 +63,24 @@ func (self *LiveBidRoom) CheckIfShowEnd() bool {
|
||||
|
||||
// 结算阶段:给玩家背包里添加东西
|
||||
func (self *LiveBidRoom) ShowEnd() {
|
||||
uid := self.currBidInfo.uid
|
||||
costItems := make([]*serverproto.KeyValueType, 0)
|
||||
costItems = append(costItems, &serverproto.KeyValueType{
|
||||
Key: int32(serverproto.ResType_Res_Rmb),
|
||||
Value: int32(self.currBidInfo.bidPrice),
|
||||
})
|
||||
self.DeleteItemList(uid, costItems, int32(model2.AddFrom_LiveRoom_Bid), false)
|
||||
addItems := make([]*serverproto.KeyValueType, 0)
|
||||
for _, itemInfo := range self.currBidCfg.Items {
|
||||
itemId, itemNum := model.Str2Res(itemInfo)
|
||||
addItems = append(addItems, &serverproto.KeyValueType{
|
||||
Key: itemId,
|
||||
Value: itemNum,
|
||||
if self.currBidInfo != nil {
|
||||
uid := self.currBidInfo.uid
|
||||
costItems := make([]*serverproto.KeyValueType, 0)
|
||||
costItems = append(costItems, &serverproto.KeyValueType{
|
||||
Key: int32(serverproto.ResType_Res_Rmb),
|
||||
Value: int32(self.currBidInfo.bidPrice),
|
||||
})
|
||||
self.DeleteItemList(uid, costItems, int32(model2.AddFrom_LiveRoom_Bid), false)
|
||||
addItems := make([]*serverproto.KeyValueType, 0)
|
||||
for _, itemInfo := range self.currBidCfg.Items {
|
||||
itemId, itemNum := model.Str2Res(itemInfo)
|
||||
addItems = append(addItems, &serverproto.KeyValueType{
|
||||
Key: itemId,
|
||||
Value: itemNum,
|
||||
})
|
||||
}
|
||||
self.AddItemList(uid, addItems, int32(model2.AddFrom_LiveRoom_Bid), true)
|
||||
}
|
||||
self.AddItemList(uid, addItems, int32(model2.AddFrom_LiveRoom_Bid), true)
|
||||
}
|
||||
|
||||
func (self *LiveBidRoom) GetMaxReadyNum(roomType uint32) int {
|
||||
@ -108,13 +110,15 @@ func (self *LiveBidRoom) GetCMDPlayDataList(readyUidList []uint64, uid uint64, c
|
||||
// 返回客户端显示秒杀成功的玩家信息
|
||||
func (self *LiveBidRoom) GetShowResultList(readyUidList []uint64, uid uint64) []*serverproto.LiveRoomPlayerInfo {
|
||||
playerResults := make([]*serverproto.LiveRoomPlayerInfo, 0)
|
||||
player := RoomMgr.GetPlayer(self.currBidInfo.uid)
|
||||
playerResults = append(playerResults, &serverproto.LiveRoomPlayerInfo{
|
||||
Uid: player.Uid,
|
||||
Nickname: player.Name,
|
||||
HeadId: player.HeadId,
|
||||
Data: fmt.Sprintf("bidPrice:%d;bidCfgId:%d", self.currBidInfo.bidPrice, self.currBidCfg.Id),
|
||||
})
|
||||
if self.currBidInfo != nil {
|
||||
player := RoomMgr.GetPlayer(self.currBidInfo.uid)
|
||||
playerResults = append(playerResults, &serverproto.LiveRoomPlayerInfo{
|
||||
Uid: player.Uid,
|
||||
Nickname: player.Name,
|
||||
HeadId: player.HeadId,
|
||||
Data: fmt.Sprintf("bidPrice:%d;bidCfgId:%d", self.currBidInfo.bidPrice, self.currBidCfg.Id),
|
||||
})
|
||||
}
|
||||
return playerResults
|
||||
}
|
||||
|
||||
|
||||
@ -80,6 +80,21 @@ func SliceIsExist[T comparable](slice []T, value T) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func ArrayJoin[T any](slice []T, str string) string {
|
||||
if len(slice) == 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
var builder strings.Builder
|
||||
for i, v := range slice {
|
||||
if i > 0 {
|
||||
builder.WriteString(str)
|
||||
}
|
||||
builder.WriteString(fmt.Sprint(v)) // 使用 fmt.Sprint 转换为字符串
|
||||
}
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
func WeightedRandomChoice(weights map[string]int) string {
|
||||
total := 0
|
||||
for _, w := range weights {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user