2025-06-14 22:49:29 +08:00

109 lines
3.7 KiB
Go

package msg
import (
"log"
"rocommon"
"rocommon/util"
"roserver/baseserver/model"
model2 "roserver/fruit/model"
"roserver/serverproto"
)
func init() {
log.Println("fruit msg init ..")
serverproto.Handle_FRUIT_SSPlayerOnlineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.SSPlayerOnlineNtf)
util.InfoF("receive SSPlayerOnlineNtf msg:%v", msg)
model2.FruitMgr.AddPlayer(msg.BriefInfo.Uid, msg.BriefInfo.NickName)
})
serverproto.Handle_FRUIT_SSPlayerOfflineNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.SSPlayerOfflineNtf)
util.InfoF("receive SSPlayerOfflineNtf msg:%v", msg)
model2.FruitMgr.Room.Leave(msg.Uid)
model2.FruitMgr.RemovePlayer(msg.Uid)
})
serverproto.Handle_FRUIT_CSFruitJoinReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitJoinReq)
util.InfoF("receive CSFruitJoinReq msg:%v", msg)
model2.FruitMgr.Room.Join(msg.Uid)
player := model2.FruitMgr.GetPlayer(msg.Uid)
player.ChipNum = 10000
totalBetInfo := make([]*serverproto.FruitSlotInfo, 0)
for slot := 1; slot <= 8; slot++ {
betNum := model2.FruitMgr.Room.TotalBetInfo[int32(slot)]
totalBetInfo = append(totalBetInfo, &serverproto.FruitSlotInfo{
Slot: int32(slot),
Num: betNum,
})
}
myBetInfo := make([]*serverproto.FruitSlotInfo, 0)
for slot := 1; slot <= 8; slot++ {
betNum := player.CurrBetInfo[int32(slot)]
myBetInfo = append(myBetInfo, &serverproto.FruitSlotInfo{
Slot: int32(slot),
Num: betNum,
})
}
ackMsg := &serverproto.SCFruitJoinAck{
Uid: msg.Uid,
Error: 0,
Stage: model2.FruitMgr.Room.Stage,
Sec: model2.FruitMgr.Room.Sec,
MyChipNum: player.ChipNum,
PoolChipNum: model2.FruitMgr.Room.PoolChipNum,
TotalBetInfo: totalBetInfo,
MyBetInfo: myBetInfo,
SettleHistory: model2.FruitMgr.Room.SettleHistory,
CurrAwardSlots: model2.FruitMgr.Room.CurrAwardSlots,
CurrTargetSlot: model2.FruitMgr.Room.CurrTargetSlot,
PlayerAwardRank: model2.FruitMgr.Room.CurrPlayerAwardRank,
}
model.ServiceReplay(ev, ackMsg)
})
serverproto.Handle_FRUIT_CSFruitLeaveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitLeaveReq)
util.InfoF("receive CSFruitLeaveReq msg:%v", msg)
model2.FruitMgr.Room.Leave(msg.Uid)
ackMsg := &serverproto.SCFruitLeaveAck{
Uid: msg.Uid,
Error: 0,
}
model.ServiceReplay(ev, ackMsg)
})
serverproto.Handle_FRUIT_CSFruitBetReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
msg := ev.Msg().(*serverproto.CSFruitBetReq)
util.InfoF("receive CSFruitBetReq msg:%v", msg)
uid := msg.Uid
errCode := model2.FruitMgr.Room.Bet(msg.Uid, msg.GetBetInfo())
player := model2.FruitMgr.GetPlayer(uid)
totalBetInfo := make([]*serverproto.FruitSlotInfo, 0)
myBetInfo := make([]*serverproto.FruitSlotInfo, 0)
var i int32
for i = 1; i <= 8; i++ {
slotTotalBetNum := model2.FruitMgr.Room.TotalBetInfo[i]
myBetNum := player.CurrBetInfo[i]
totalBetInfo = append(totalBetInfo, &serverproto.FruitSlotInfo{
Slot: i,
Num: slotTotalBetNum,
})
myBetInfo = append(myBetInfo, &serverproto.FruitSlotInfo{
Slot: i,
Num: myBetNum,
})
}
ackMsg := &serverproto.SCFruitBetAck{
Uid: msg.Uid,
Error: int32(errCode),
MyChipNum: player.ChipNum,
PoolChipNum: uint32(model2.FruitMgr.Room.PoolChipNum),
TotalBetInfo: totalBetInfo,
MyBetInfo: myBetInfo,
}
model.ServiceReplay(ev, ackMsg)
})
}