| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package data
- import (
- "f1-game/internal/pb"
- clog "github.com/cherry-game/cherry/logger"
- )
- var (
- monsterBattleSquadMap map[int32][]*MonsterSquad // 怪物战斗小队集合 key: 怪物组id, value: 小队列表
- )
- type (
- // 怪物小队
- MonsterSquad struct {
- TileIndex int32 `json:"tileIndex"`
- Fighter *MonsterFighter `json:"fighter"`
- TroopTypeID int32 `json:"troopTypeID"`
- Troop int32 `json:"troop"`
- }
- )
- func (p *monsterGroupConfig) OnAfterLoad(_ bool) {
- loadMap := map[int32][]*MonsterSquad{}
- for _, row := range p.list {
- monster, found := Monster.GetByID(row.MonsterID)
- if !found {
- clog.Warnf("monster not found, monsterGroupID: %d, lineupIndex: %d, monsterID: %d", row.ID, row.LineupIndex, row.MonsterID)
- continue
- }
- monsterSquad := &MonsterSquad{
- TileIndex: row.LineupIndex,
- Fighter: monster.buildMonsterFighter(row.ID, row.LineupIndex),
- TroopTypeID: row.TroopTypeID,
- Troop: row.Troop,
- }
- loadMap[row.ID] = append(loadMap[row.ID], monsterSquad)
- }
- monsterBattleSquadMap = loadMap
- clog.Infof("monsterGroupConfig load success, len: %v", len(monsterBattleSquadMap))
- }
- func (p *MonsterSquad) ToProto() *pb.BattleSquadParam {
- fighter, troopsAttrs := p.Fighter.ToProto()
- ret := &pb.BattleSquadParam{
- TileIndex: p.TileIndex,
- Fighter: fighter,
- TroopsID: p.TroopTypeID,
- TroopsNum: p.Troop,
- HeroTroopNum: p.Troop, // 怪物上限跟数量一致
- Attrs: troopsAttrs,
- }
- return ret
- }
- // 获取怪物战斗小队参数
- func GetBattleSquadParam(monsterGroupID int32) []*pb.BattleSquadParam {
- var ret []*pb.BattleSquadParam
- monsterSquads, found := monsterBattleSquadMap[monsterGroupID]
- if !found {
- clog.Warnf("monster squad not found, monsterGroupID: %d", monsterGroupID)
- return ret
- }
- for _, squad := range monsterSquads {
- ret = append(ret, squad.ToProto())
- }
- return ret
- }
- // 构建怪物战斗阵营参数
- func BuildBattleCampParam(monsterGroupID int32, camp int32) *pb.BattleCampParam {
- ret := &pb.BattleCampParam{
- Camp: camp,
- Squads: GetBattleSquadParam(monsterGroupID),
- }
- return ret
- }
|