game_sync/gamesrv/base/ai.go

180 lines
4.0 KiB
Go

package base
type AI interface {
// SetOwner 挂载玩家
SetOwner(*Player)
// GetOwner 获取挂载玩家
GetOwner() *Player
// GetAttribute 获取属性
GetAttribute(key interface{}) (interface{}, bool)
// SetAttribute 设置属性
SetAttribute(key, val interface{})
// OnStart 开启事件
OnStart()
// OnStop 停止事件
OnStop()
// OnTick 心跳事件
OnTick(s *Scene)
// OnSelfEnter 自己进入事件
OnSelfEnter(s *Scene, p *Player)
// OnSelfLeave 自己离开事件
OnSelfLeave(s *Scene, p *Player, reason int)
// OnPlayerEnter 其他玩家进入事件
OnPlayerEnter(s *Scene, p *Player)
// OnPlayerLeave 其他玩家离开事件
OnPlayerLeave(s *Scene, p *Player, reason int)
// OnPlayerDropLine 其他玩家掉线事件
OnPlayerDropLine(s *Scene, p *Player)
// OnPlayerRehold 其他玩家重连事件
OnPlayerRehold(s *Scene, p *Player)
// OnPlayerReturn 其他玩家返回房间事件
OnPlayerReturn(s *Scene, p *Player)
// OnPlayerOp 其他玩家操作事件
OnPlayerOp(s *Scene, p *Player, opcode int, params []int64) bool
// OnPlayerOperate 其他玩家操作事件
OnPlayerOperate(s *Scene, p *Player, params interface{}) bool
// OnPlayerEvent 其他玩家事件
OnPlayerEvent(s *Scene, p *Player, evtcode int, params []int64)
// OnAudienceEnter 其他观众进入事件
OnAudienceEnter(s *Scene, p *Player)
// OnAudienceLeave 其他观众离开事件
OnAudienceLeave(s *Scene, p *Player, reason int)
// OnAudienceSit 其他观众坐下事件
OnAudienceSit(s *Scene, p *Player)
// OnAudienceDropLine 其他观众掉线事件
OnAudienceDropLine(s *Scene, p *Player)
// OnChangeSceneState 房间状态变化事件
OnChangeSceneState(s *Scene, oldstate, newstate int)
}
type BaseAI struct {
owner *Player
attribute map[interface{}]interface{}
}
// 挂载玩家
func (b *BaseAI) SetOwner(p *Player) {
b.owner = p
}
// 获取挂载玩家
func (b *BaseAI) GetOwner() *Player {
return b.owner
}
// 获取属性
func (b *BaseAI) GetAttribute(key interface{}) (interface{}, bool) {
if b.attribute != nil {
v, ok := b.attribute[key]
return v, ok
}
return nil, false
}
// 设置属性
func (b *BaseAI) SetAttribute(key, val interface{}) {
if b.attribute != nil {
b.attribute[key] = val
}
}
// 开启事件
func (b *BaseAI) OnStart() {
}
// 关闭事件
func (b *BaseAI) OnStop() {
}
// 心跳事件
func (b *BaseAI) OnTick(s *Scene) {
}
// 自己进入事件
func (b *BaseAI) OnSelfEnter(s *Scene, p *Player) {
if !p.IsLocal {
return
}
takeCoin, leaveCoin, gameTimes := s.RandTakeCoin(p)
p.Coin = takeCoin
p.SetTakeCoin(takeCoin)
p.ExpectGameTime = int32(gameTimes)
p.ExpectLeaveCoin = leaveCoin
//当局游戏结束后剩余金额 起始设置
p.SetCurrentCoin(takeCoin)
p.LastSyncCoin = p.Coin
}
// 自己离开事件
func (b *BaseAI) OnSelfLeave(s *Scene, p *Player, reason int) {
}
// 其他玩家进入事件
func (b *BaseAI) OnPlayerEnter(s *Scene, p *Player) {
}
// 其他玩家离开事件
func (b *BaseAI) OnPlayerLeave(s *Scene, p *Player, reason int) {
}
// 其他玩家掉线
func (b *BaseAI) OnPlayerDropLine(s *Scene, p *Player) {
}
// 其他玩家重连
func (b *BaseAI) OnPlayerRehold(s *Scene, p *Player) {
}
// 其他玩家 返回房间
func (b *BaseAI) OnPlayerReturn(s *Scene, p *Player) {
}
// 其他玩家操作事件
func (b *BaseAI) OnPlayerOp(s *Scene, p *Player, opcode int, params []int64) bool {
return true
}
// 其他玩家操作事件
func (b *BaseAI) OnPlayerOperate(s *Scene, p *Player, params interface{}) bool {
return true
}
// 其他玩家事件
func (b *BaseAI) OnPlayerEvent(s *Scene, p *Player, evtcode int, params []int64) {
}
// 观众进入事件
func (b *BaseAI) OnAudienceEnter(s *Scene, p *Player) {
}
// 观众离开事件
func (b *BaseAI) OnAudienceLeave(s *Scene, p *Player, reason int) {
}
// 观众坐下事件
func (b *BaseAI) OnAudienceSit(s *Scene, p *Player) {
}
// 观众掉线事件
func (b *BaseAI) OnAudienceDropLine(s *Scene, p *Player) {
}
// 房间状态变化事件
func (b *BaseAI) OnChangeSceneState(s *Scene, oldstate, newstate int) {
}