Files
bl/logic/service/player/base.go

139 lines
2.9 KiB
Go
Raw Normal View History

package player
import (
"blazing/common/socket/errorcode"
2025-11-23 23:38:03 +00:00
"blazing/common/utils"
"blazing/logic/service/common"
"blazing/logic/service/fight/info"
spaceinfo "blazing/logic/service/space/info"
"blazing/modules/player/model"
"github.com/gogf/gf/v2/util/grand"
)
type baseplayer struct {
//Fightinfo info.Fightinfo
2025-11-19 00:09:12 +00:00
Info *model.PlayerInfo
//canFight uint32
FightC common.FightI //绑定战斗标识 替代本身的是否战斗标记 //IsFighting bool
*info.PlayerCaptureContext
Prop [6]int8
}
// NewPlayerCaptureContext 创建用户捕捉上下文(每次登录调用)
func newbaseplayer() baseplayer {
ret := baseplayer{}
return ret
}
// GetInfo 获取玩家基础信息
func (p *baseplayer) GetInfo() *model.PlayerInfo {
return p.Info
}
2025-11-18 22:16:55 +00:00
func (p *baseplayer) GetPetInfo(limitlevel uint32) []model.PetInfo {
var ret []model.PetInfo
for _, pet := range p.Info.PetList {
if limitlevel > 0 {
pet.Level = utils.Min(pet.Level, limitlevel)
2026-03-23 01:02:49 +08:00
}
2026-03-23 01:02:49 +08:00
ret = append(ret, pet)
}
return ret
}
func (p *baseplayer) AddBattleProp(index int, level int8) {
if p == nil || index < 0 || index >= len(p.Prop) || level == 0 {
return
}
p.Prop[index] += level
if p.Prop[index] > 6 {
p.Prop[index] = 6
}
if p.Prop[index] < -6 {
p.Prop[index] = -6
}
}
func (p *baseplayer) ApplyBattleProps(target *model.AttackValue) {
if p == nil || target == nil {
return
}
target.Prop = p.Prop
}
func (f *baseplayer) InvitePlayer(ff common.PlayerI) {
}
func (p *baseplayer) CanFight() errorcode.ErrorCode {
return 0
}
func (p *baseplayer) QuitFight() {
}
// SetFightC 设置玩家战斗控制器
func (f *baseplayer) SetFightC(fightController common.FightI) {
f.FightC = fightController
}
2025-11-18 23:41:31 +00:00
// GetPlayerCaptureContext 获取玩家捕捉上下文
func (f *baseplayer) GetPlayerCaptureContext() *info.PlayerCaptureContext {
return f.PlayerCaptureContext
}
func (f *baseplayer) Roll(numerator, denominator int) (bool, float64, float64) {
if denominator <= 0 {
return false, 0, 0
}
if numerator < 0 {
numerator = 0
}
if numerator > denominator {
numerator = denominator
}
base := float64(numerator) / float64(denominator) * 100
return grand.Intn(denominator) < numerator, base, 0
}
// FindPet 根据捕捉时间查找宠物
// 返回值: (索引, 宠物信息, 是否找到)
func (f *baseplayer) FindPet(catchTime uint32) (int, *model.PetInfo, bool) {
2025-11-23 23:38:03 +00:00
return utils.FindWithIndex(f.Info.PetList, func(item model.PetInfo) bool {
return item.CatchTime == catchTime
2025-11-23 23:38:03 +00:00
})
}
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) ItemAdd(ItemId, ItemCnt int64) (result bool) {
return true
}
func (lw *baseplayer) SendLoadPercent(info.LoadPercentOutboundInfo) {
}
func (p *baseplayer) ApplyPetDisplayInfo(out *spaceinfo.SimpleInfo) {}