| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package mapPlayer
- import (
- "f1-game/internal/code"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- "f1-game/nodes/map/internal/db"
- )
- func (p *actorPlayer) initHero() {
- p.Remote().Register(nameRemote.MapPlayer_HeroCheckBusy, p.checkHeroBusy)
- p.Remote().Register(nameRemote.MapPlayer_HeroDelete, p.heroDelete)
- }
- func (p *actorPlayer) checkHeroBusy(req *pb.I64List) int32 {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- heroList = req.List
- )
- if len(heroList) <= 0 {
- return code.IllegalArgument
- }
- for _, heroGUID := range heroList {
- hero, found := playerTable.Heroes.Get(heroGUID)
- if !found || hero.TeamID <= 0 {
- continue
- }
- team, found := playerTable.Teams.GetTeam(hero.TeamID)
- if !found {
- return code.MapTeamNotFound
- }
- if team.IsNotStandby() {
- return code.HeroIsBusy
- }
- }
- return code.OK
- }
- // 英雄删除
- func (p *actorPlayer) heroDelete(req *pb.I64List) int32 {
- var (
- playerTable = db.GetMapPlayerTable(p.playerID)
- heroGUIDs = req.List
- deleteHeros = []int64{}
- )
- for _, heroGUID := range heroGUIDs {
- heroEntity, found := playerTable.Heroes.Get(heroGUID)
- if !found {
- continue
- }
- // 判断是否上阵 如果上阵 则不能被删除
- if heroEntity.TeamID > 0 {
- return code.HeroIsBusy
- }
- deleteHeros = append(deleteHeros, heroGUID)
- }
- if len(deleteHeros) > 0 {
- playerTable.Heroes.Remove(deleteHeros...)
- playerTable.Save2Queue()
- }
- return code.OK
- }
|