Files
bl/logic/service/fight/info/battle.go
昔念 f90581e0f6 ```
feat(fight): 优化擂台战斗逻辑与状态管理

- 修改了擂台主人设置逻辑,引入 `Set` 方法统一处理玩家信息更新
- 增加对擂主是否可战斗的判断,防止无效挑战
- 调整连胜计算和广播机制,确保数据一致性
- 修复擂台挑战失败时的状态回滚问题
- 引入错误码替代硬编码返回值,提高代码可读性与维护性
- 统一访问擂台玩家的方式,移除冗余字段
2025-11-28 00:16:51 +08:00

127 lines
5.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package info
import (
"github.com/tnnmigga/enum"
)
// type Battle struct {
// Rand *random.RandomXS128 //本次战斗随机数
// same []BattleInputSourceEntity //同阵营
// Round int //回合数
// BattleMode EnumBattleMode //战斗模式
// opposite []BattleInputSourceEntity //不同阵营
// Effects *NodeManager //挂载effect,实际上是给每个输入源,然后触发时候循环调用Effects ,
// //A的effect->触发死亡->这时候就应该调用对手的切换,实现effect62
// }
// 执行下一回合
// func (b *Battle) NextRound() {
// b.Round++ //回合数加1
// }
// 战斗模式
// BattleMode 战斗模式对应AS中的战斗类型常量
var BattleMode = enum.New[struct {
// 基础模式
FIGHT_WITH_NPC uint32 `enum:"0"` //NPC模式
SINGLE_MODE uint32 `enum:"1"` // 单人模式
MULTI_MODE uint32 `enum:"2"` // 多人模式
PET_MELEE uint32 `enum:"3"` // 宠物乱斗模式
DARK_FIGHT uint32 `enum:"4"` // 暗黑战斗
PET_TOPLEVEL uint32 `enum:"5"` // 宠物顶级战
PET_ELEMENT_FIGHT uint32 `enum:"6"` // 宠物元素战斗修正原拼写错误ELMENT → ELEMENT
FIGHT_DEMON_SPACE uint32 `enum:"7"` // 魔域战斗
BATTLE_LAB uint32 `enum:"8"` // 战斗实验室
LUCKY_BATTLE uint32 `enum:"9"` // 幸运战斗
FIGHT_ARENA uint32 `enum:"10"` // 竞技场战斗
CORE_FIGHT uint32 `enum:"11"` // 核心战斗
IMAGE_FIGHT uint32 `enum:"12"` // 镜像战斗
TOP_WAR_BEYOND uint32 `enum:"13"` // 巅峰之战·超越
HIGHER_FIGHT uint32 `enum:"14"` // 高阶战斗
GOLDEN_PALACE_FIGHT uint32 `enum:"15"` // 金殿战斗
FANTASY_PET_MELEE uint32 `enum:"16"` // 梦幻宠物乱斗
REFRACTIVE_MAGIC uint32 `enum:"17"` // 折射魔法战
PET_MELEE_FIGHT_BOSS uint32 `enum:"18"` // 宠物乱斗·打BOSS
PET_TRY_FIGHT uint32 `enum:"19"` // 宠物试玩战斗
PET_TOPLEVEL_NEW uint32 `enum:"20"` // 宠物顶级战(新版)
CATCH_LENNY_GAME uint32 `enum:"21"` // 捕捉莱尼小游戏
PEAK_JIHAD_FREE uint32 `enum:"22"` // 巅峰圣战·自由战
PEAK_JIHAD_3V3 uint32 `enum:"23"` // 巅峰圣战·3V3
GOBLINKING_BATTLE uint32 `enum:"24"` // 哥布林王战斗
DOOM_FIGHT uint32 `enum:"25"` // 末日战斗
SHOW_ROUND uint32 `enum:"26"` // 展示回合(试玩/演示)
PEAK_JIHAD_6V6 uint32 `enum:"27"` // 巅峰圣战·6V6
PEAK_JIHAD_FREE_PLAN uint32 `enum:"28"` // 巅峰圣战·自由战(计划版)
PEAK_JIHAD_6V6_JJ uint32 `enum:"29"` // 巅峰圣战·6V6竞技版
WIZARDKING_BIGFIGHT uint32 `enum:"30"` // 法老王大战
QINGLONG_COMPLETE_FIGHT uint32 `enum:"83"` // 青龙全套战斗修正原拼写COMPLELETE → COMPLETE
PEAK_JIHAD_FIGHT_WITH_FIGURE uint32 `enum:"87"` // 巅峰圣战·角色对战
PEAK_JIHAD_BIG_MELEE uint32 `enum:"88"` // 巅峰圣战·大乱斗
PEAK_JIHAD_LIMIT_AC uint32 `enum:"999"` // 巅峰圣战·限AC账号类型限制
}]()
// 玩家离线数据
type PlayerOfflineData struct {
// 可以根据需要添加字段
PlayerID int64
}
// 玩家逃脱数据
type PlayerEscapeData struct {
// 可以根据需要添加字段
PlayerID int64
}
// 玩家捕获成功数据
type PlayerCaptureSuccessData struct {
// 可以根据需要添加字段
CaptorID int64
TargetID int64
CaptureTime int64
}
// 默认结束数据
type DefaultEndData struct {
// 可以根据需要添加字段
Reason string
}
// 战斗结束原因枚举
type EnumBattleOverReason int
var BattleOverReason = enum.New[struct {
PlayerOffline EnumBattleOverReason `enum:"1"` //掉线
PlayerOVerTime EnumBattleOverReason `enum:"2"` //超时
NOTwind EnumBattleOverReason `enum:"3"` //打成平手
DefaultEnd EnumBattleOverReason `enum:"4"` //默认结束
PlayerEscape EnumBattleOverReason `enum:"5"` //逃跑
}]()
// 战斗模式
var Playerinvitemap map[uint32][]Playerinvite = make(map[uint32][]Playerinvite) //玩家邀请信息 ,比如一个玩家被多人邀请对战
type Playerinvite struct { //挂载到[]Playerinvite上? 被邀请者->邀请者
InviteID uint32 // 邀请者
InviteTime uint32 //游戏模式
}
// 能力操作类型枚举
type EnumAbilityOpType string
var AbilityOpType = enum.New[struct {
ADD EnumAbilityOpType `enum:"1"` // 能力增加(强化)
SUB EnumAbilityOpType `enum:"2"` // 能力减少(弱化)
COPY EnumAbilityOpType `enum:"3"` // 复制强化/弱化
RESET EnumAbilityOpType `enum:"4"` // 能力重置
StealStrengthen EnumAbilityOpType `enum:"6"` // 吸取强化
Reverse EnumAbilityOpType `enum:"7"` // 反转强化/弱化
BounceWeaken EnumAbilityOpType `enum:"10"` // 弹弱(反弹弱化效果)
}]()