go_dreamfactory/modules/parkour/core.go
2023-10-18 18:33:23 +08:00

91 lines
2.1 KiB
Go

package parkour
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
)
type Recommend struct {
parkour *pb.DBParkour
user *pb.DBUser
member *pb.DBRaceMember
}
///捕羊大赛对象
type RaceItem struct {
Id string //战斗id
lock sync.Mutex //战斗锁 防止计时器和消息同时操作对象
Rtype pb.RaceType //比赛类型
RedMember []*pb.DBRaceMember //红方成员
RedScore int32 //红方分值
BuleMember []*pb.DBRaceMember //蓝方成员
Session map[string]comm.IUserSession
BuleScore int32 //蓝方分值
overtimer *timewheel.Task //准备倒计时定时器
}
type AILevel int32
const (
AILevelS AILevel = iota
AILevelSS
AILevelSSS
)
type AIHandleType int32
const (
AIHandle_Null AIHandleType = iota //空操作
AIHandle_Avoid //躲避障碍
AIHandle_Shot //射门
AIHandle_AddBlood //加血
)
type AIHandle struct {
htype AIHandleType
cd int32
weight int32
}
func NewAI(battleid string, uid string, conf *cfg.GameBukashiAiData) (_ai *AI) {
_ai = &AI{
Bid: battleid,
Uid: uid,
Conf: conf,
Handles: make([]*AIHandle, 0),
CD: conf.BehaviorCD,
}
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Null,
weight: conf.EmptyWeight,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Avoid,
weight: conf.BumpWeight,
cd: conf.BumpCD,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_AddBlood,
weight: conf.HpBumpWeight,
cd: conf.HpBumpCD,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Shot,
weight: conf.CatchQteWeight,
cd: conf.CatchQteCD,
})
return
}
//捕羊大赛AI对象
type AI struct {
Bid string //战场id
Uid string //用户id
Conf *cfg.GameBukashiAiData //配置
Handles []*AIHandle //操作列表
CD int32 //CD
}