```
feat(fight): 添加擂台系统相关功能与协议支持 新增了擂台系统相关的消息结构体和处理逻辑,包括: - 添加了多个与擂台交互的命令结构体(如 ARENA_SET_OWENR、ARENA_FIGHT_OWENR 等) - 实现了玩家发送擂台信息的方法 Send_ARENA_GET_INFO - 在 Space 结构中增加了擂台相关信息及操作方法 Can_ARENA 和 UP_ARENA - 修复了一个伤害计算公式错误,将乘法修正为除法 - 当
This commit is contained in:
73
logic/controller/fight_leitai.go
Normal file
73
logic/controller/fight_leitai.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space"
|
||||
)
|
||||
|
||||
// public static const ARENA_SET_OWENR:uint = 2417;
|
||||
// 如果星际擂台上无人,站到星际擂台的包
|
||||
// 前端到后端无数据内容 空包
|
||||
// 后端到前端无数据内容 空包
|
||||
// 都需要通过2419包广播更新擂台状态
|
||||
func (h Controller) ARENA_SET_OWENR(data *fight.ARENA_SET_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if c.CanFight() {
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 1)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// public static const ARENA_FIGHT_OWENR:uint = 2418;
|
||||
// 挑战擂台的包
|
||||
// 前端到后端无数据内容 空包
|
||||
// 后端到前端无数据内容 空包
|
||||
// 还是后端主动发送2503的包给双方前端后 等待前端加载完毕 主动发送2404包通知后端开始战斗
|
||||
// 并不会通知对方是否接受挑战。只要有人挑战就直接进入对战
|
||||
func (h Controller) ARENA_FIGHT_OWENR(data *fight.ARENA_FIGHT_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return
|
||||
}
|
||||
|
||||
t := space.GetSpace(c.Info.MapID).Can_ARENA(c)
|
||||
if t != nil {
|
||||
fight.NewFight(info.BattleMode.SINGLE_MODE, info.BattleStatus.FIGHT_WITH_PLAYER, t, c) ///开始对战,房主方以及被邀请方
|
||||
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 获取星际擂台信息的包 进入空间站地图前端会发送请求包 或者 有人站到星际擂台上后 广播回包
|
||||
// 前端到后端无数据内容
|
||||
// 后端到前端
|
||||
func (h Controller) ARENA_GET_INFO(data *fight.ARENA_GET_INFO, c *player.Player) (result *info.S2C_ARENA_GET_INFO, err errorcode.ErrorCode) {
|
||||
|
||||
result = &space.GetSpace(c.Info.MapID).ARENA
|
||||
return
|
||||
}
|
||||
|
||||
// public static const ARENA_UPFIGHT:uint = 2420;
|
||||
// 放弃擂台挑战的包
|
||||
// 前端到后端无数据内容
|
||||
// 后端到前端无数据内容
|
||||
// 都需要通过2419包广播更新擂台状态
|
||||
func (h Controller) ARENA_UPFIGHT(data *fight.ARENA_UPFIGHT, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 0)
|
||||
//result = &info.S2C_ARENA_GET_INFO{}
|
||||
return
|
||||
}
|
||||
func (h Controller) ARENA_OWENR_ACCE(data *fight.ARENA_OWENR_ACCE, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 3)
|
||||
//result = &info.S2C_ARENA_GET_INFO{}
|
||||
return
|
||||
}
|
||||
|
||||
// public static const ARENA_OWENR_ACCE:uint = 2422;
|
||||
// 此包为擂台战对战结束后 胜方前端会发送给后端 具体作用为通知后端发送2419包更新擂台信息。
|
||||
// 前端到后端无数据内容
|
||||
// 后端到前端无数据内容
|
||||
// public static const ARENA_OWENR_OUT:uint = 2423;
|
||||
// 此包不清楚具体怎么触发 但已知此包为后端主动发送。不清楚什么情况下回用到
|
||||
Reference in New Issue
Block a user