2025-09-21 14:56:37 +00:00
|
|
|
package player
|
|
|
|
|
|
|
|
|
|
import (
|
2025-11-18 23:41:31 +00:00
|
|
|
"blazing/logic/service/common"
|
2025-12-12 19:10:09 +00:00
|
|
|
"blazing/modules/base/service"
|
2026-01-19 18:51:56 +08:00
|
|
|
"blazing/modules/player/model"
|
2025-12-17 09:52:44 +00:00
|
|
|
"time"
|
2026-02-21 22:41:59 +08:00
|
|
|
|
|
|
|
|
"github.com/panjf2000/gnet/v2"
|
2025-09-21 14:56:37 +00:00
|
|
|
)
|
|
|
|
|
|
2026-02-03 00:23:51 +08:00
|
|
|
// 定义刷野间隔常量(可根据业务调整)
|
|
|
|
|
const (
|
2026-02-13 22:57:05 +08:00
|
|
|
//firstEnterInterval = 7 * time.Second // 首次进图/退出战斗后首次 刷新间隔
|
2026-02-03 00:23:51 +08:00
|
|
|
normalRefreshInterval = 10 * time.Second // 正常循环 刷新间隔
|
|
|
|
|
)
|
|
|
|
|
|
2025-09-21 14:56:37 +00:00
|
|
|
// NewPlayer 使用 Options 模式创建 Player 实例
|
2026-02-21 22:41:59 +08:00
|
|
|
func NewPlayer(opts gnet.Conn) *Player {
|
2025-09-21 14:56:37 +00:00
|
|
|
p := &Player{
|
2025-10-14 14:36:39 +00:00
|
|
|
|
2025-11-18 23:41:31 +00:00
|
|
|
HavePVPinfo: make([]common.PlayerI, 0),
|
2025-09-21 14:56:37 +00:00
|
|
|
baseplayer: newbaseplayer(),
|
|
|
|
|
}
|
2025-12-16 08:35:22 +00:00
|
|
|
|
2025-12-12 19:10:09 +00:00
|
|
|
p.User = service.NewBaseSysUserService()
|
2025-09-21 14:56:37 +00:00
|
|
|
p.monsters = generateThreeUniqueNumbers()
|
2025-11-16 21:11:44 +00:00
|
|
|
p.Done = NewDone(p) //发布订阅事件
|
2025-12-16 08:35:22 +00:00
|
|
|
|
2026-02-02 23:25:05 +08:00
|
|
|
p.MapNPC = time.AfterFunc(10*time.Second, func() {
|
2026-01-20 02:25:02 +08:00
|
|
|
p.GenMonster() //生成野怪
|
2025-10-13 18:51:41 +08:00
|
|
|
})
|
|
|
|
|
|
2026-02-21 22:41:59 +08:00
|
|
|
p.MainConn = opts
|
2025-09-21 14:56:37 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
}
|