package player import ( "blazing/common/socket/errorcode" "blazing/common/utils" "blazing/logic/service/common" "blazing/logic/service/fight/info" "blazing/modules/player/model" "math/rand" "time" "github.com/gogf/gf/v2/util/grand" ) type baseplayer struct { //Fightinfo info.Fightinfo Info *model.PlayerInfo //canFight uint32 FightC common.FightI //绑定战斗标识 替代本身的是否战斗标记 //IsFighting bool *info.PlayerCaptureContext } // NewPlayerCaptureContext 创建用户捕捉上下文(每次登录调用) func newbaseplayer() baseplayer { rng := rand.New(rand.NewSource(time.Now().UnixNano() + int64(grand.Intn(1000000)))) ret := baseplayer{} ret.PlayerCaptureContext = &info.PlayerCaptureContext{ Random: rng, Denominator: 1000, DecayFactor: 0.10, // 15%衰减率 MinDecayNum: 1, Guarantees: make(map[int]int), } return ret } // GetInfo 获取玩家基础信息 func (p *baseplayer) GetInfo() *model.PlayerInfo { return p.Info } func (f *baseplayer) InvitePlayer(ff common.PlayerI) { } func (p *baseplayer) QuitFight() { } // SetFightC 设置玩家战斗控制器 func (f *baseplayer) SetFightC(fightController common.FightI) { f.FightC = fightController } // GetPlayerCaptureContext 获取玩家捕捉上下文 func (f *baseplayer) GetPlayerCaptureContext() *info.PlayerCaptureContext { return f.PlayerCaptureContext } // FindPet 根据捕捉时间查找宠物 // 返回值: (索引, 宠物信息, 是否找到) func (f *baseplayer) FindPet(catchTime uint32) (int, *model.PetInfo, bool) { return utils.FindWithIndex(f.Info.PetList, func(item model.PetInfo) bool { return item.CatchTime == catchTime }) } func (p *baseplayer) Getfightinfo() info.Fightinfo { return info.Fightinfo{} } func (f *baseplayer) SendPack(b []byte) error { return nil } func (f *baseplayer) MessWin(b bool) { } func (f *baseplayer) SendPackCmd(_ uint32, _ any) { //fmt.Println("战斗结束") } func (p *baseplayer) GetPetInfo() []model.PetInfo { return p.Info.PetList } func (p *baseplayer) ItemAdd(ItemId, ItemCnt int64) (result bool) { return true } func (lw *baseplayer) SendLoadPercent(info.LoadPercentOutboundInfo) { } func (p *baseplayer) CanFight() errorcode.ErrorCode { return 0 }