package player

import (
	"blazing/logic/service/common"
	"blazing/logic/service/fight/info"
	"blazing/modules/blazing/model"
	"math/rand"
	"time"
)

type baseplayer struct {
	Info   *model.PlayerInfo
	FightC common.FightI //绑定战斗标识 替代本身的是否战斗标记  //IsFighting bool
	*info.PlayerCaptureContext
}

// NewPlayerCaptureContext 创建用户捕捉上下文（每次登录调用）
func newbaseplayer() baseplayer {
	rng := rand.New(rand.NewSource(time.Now().UnixNano() + int64(rand.Intn(1000000))))
	ret := baseplayer{}
	ret.PlayerCaptureContext = &info.PlayerCaptureContext{
		rng,
		1000,
		0.10, // 15%衰减率
		1,
		make(map[int]int),
	}
	return ret
}
func (p *baseplayer) GetInfo() *model.PlayerInfo {

	return p.Info
}
func (f *baseplayer) SetFightC(ff common.FightI) {
	f.FightC = ff
}

func (f *baseplayer) GetPlayerCaptureContext() *info.PlayerCaptureContext {
	return f.PlayerCaptureContext
}

// 计算整数的二进制1的个数（Integer.bitCount）
func bitsCount(n int) int {
	count := 0
	for n > 0 {
		count += n & 1
		n >>= 1
	}
	return count
}
