Files
hk4e/gs/game/gcg_ai.go
2023-01-07 20:02:59 +08:00

53 lines
1.8 KiB
Go

package game
import (
"hk4e/pkg/logger"
"hk4e/protocol/proto"
)
type GCGAi struct {
game *GCGGame // 所在的游戏
controllerId uint32 // 操控者Id
}
// ReceiveGCGMessagePackNotify 接收GCG消息包通知
func (g *GCGAi) ReceiveGCGMessagePackNotify(notify *proto.GCGMessagePackNotify) {
// 获取玩家的操控者对象
gameController := g.game.controllerMap[g.controllerId]
if gameController == nil {
logger.Error("ai 角色 nil")
return
}
for _, pack := range notify.MsgPackList {
for _, message := range pack.MsgList {
switch message.Message.(type) {
case *proto.GCGMessage_PhaseChange:
// 阶段改变
msg := message.GetPhaseChange()
switch msg.AfterPhase {
case proto.GCGPhaseType_GCG_PHASE_TYPE_ON_STAGE:
logger.Error("请选择你的英雄 hhh")
// 默认选第一张牌
cardInfo := gameController.cardList[0]
// 操控者选择角色牌
g.game.ControllerSelectChar(gameController, cardInfo, []uint32{})
}
case *proto.GCGMessage_DiceRoll:
// 摇完骰子
msg := message.GetPhaseChange()
switch msg.AfterPhase {
case proto.GCGPhaseType_GCG_PHASE_TYPE_ON_STAGE:
logger.Error("战斗意识?!")
cardInfo1 := g.game.controllerMap[g.controllerId].cardList[0]
cardInfo2 := g.game.controllerMap[g.controllerId].cardList[1]
g.game.AddMsgPack(0, proto.GCGActionType_GCG_ACTION_TYPE_NONE, g.game.GCGMsgPVEIntention(&proto.GCGMsgPVEIntention{CardGuid: cardInfo1.guid, SkillIdList: []uint32{cardInfo1.skillIdList[1]}}, &proto.GCGMsgPVEIntention{CardGuid: cardInfo2.guid, SkillIdList: []uint32{cardInfo2.skillIdList[0]}}))
g.game.SendAllMsgPack()
g.game.SetControllerAllow(g.game.controllerMap[g.controllerId], false, true)
g.game.AddMsgPack(0, proto.GCGActionType_GCG_ACTION_TYPE_SEND_MESSAGE, g.game.GCGMsgPhaseContinue())
}
}
}
}
}