Files
bl/logic/service/player/new.go
昔念 ea1148039e ```
refactor(login): 重构登录重置逻辑,使用 defer 替代 goroutine

将每日任务重置逻辑从 goroutine 改为 defer 执行,确保在函数结束时正确重置任务状态。
同时将 TaskInfo 中的 Info 字段重命名为 Data,保持结构一致性。

refactor(task): 统一任务数据字段名为 Data

将 task 相关结构体中的 Info 字段统一
2025-09-23 13:24:40 +08:00

55 lines
1.0 KiB
Go

package player
import (
"blazing/modules/blazing/model"
"time"
)
// NewPlayer 使用 Options 模式创建 Player 实例
func NewPlayer(opts ...PlayerOption) *Player {
p := &Player{
loginChan: make(chan struct{}),
HavePVPinfo: make([]*Player, 0),
baseplayer: newbaseplayer(),
}
p.monsters = generateThreeUniqueNumbers()
p.StopChan = make(chan struct{})
// 启动刷怪协程
go func(stopChan chan struct{}) {
ticker := time.NewTicker(10 * time.Second)
defer ticker.Stop()
for {
select {
case <-stopChan:
// 收到停止信号,退出协程
return
case <-ticker.C:
// 刷新当前地图的怪物
if p.Canmon && p.FightC == nil { //已经进入地图或者没在战斗中,就可以刷新怪
p.SpawnMonsters()
}
}
}
}(p.StopChan)
for _, opt := range opts {
opt(p)
}
return p
}
func NewAI_player(i *model.PlayerInfo) *AI_player {
ret := &AI_player{
baseplayer: newbaseplayer(),
}
ret.Info = i
//ret.Info.Nick = xmlres.PetMAP[int(m.ID)].DefName
return ret
}