feat(fight): 实现精灵大乱斗模式并优化对战逻辑 新增大乱斗模式(PET_MELEE)支持,重构原有精灵王之战相关逻辑。 更新战斗初始化流程,添加随机精灵选择机制。 调整玩家匹配与取消邀请接口实现方式。 完善战斗结束处理函数,移除未实现异常抛出。 ```
106 lines
3.0 KiB
Go
106 lines
3.0 KiB
Go
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
|
||
|
||
// }
|
||
|
||
// 战斗模式
|
||
type EnumBattleMode int
|
||
|
||
var BattleMode = enum.New[struct {
|
||
PET_MELEE EnumBattleMode `enum:"3"` //乱斗模式
|
||
SINGLE_MODE EnumBattleMode `enum:"1"` // 单人模式
|
||
MULTI_MODE EnumBattleMode `enum:"2"` // 多人模式
|
||
}]()
|
||
var BattleStatus = enum.New[struct {
|
||
// 原ActionScript中的常量映射
|
||
|
||
FIGHT_WITH_NPC EnumBattleMode `enum:"3"` // 与NPC战斗
|
||
FIGHT_WITH_BOSS EnumBattleMode `enum:"2"` // 与BOSS战斗
|
||
FIGHT_WITH_PLAYER EnumBattleMode `enum:"1"` // 与玩家战斗(PVP)
|
||
|
||
}]()
|
||
|
||
// 玩家离线数据
|
||
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"` //超时
|
||
PlayerCaptureSuccess EnumBattleOverReason `enum:"3"` //捕捉成功
|
||
DefaultEnd EnumBattleOverReason `enum:"4"` //默认结束
|
||
PlayerEscape EnumBattleOverReason `enum:"5"` //逃跑
|
||
}]()
|
||
|
||
// 战斗模式
|
||
|
||
var BattleMode_PVP = enum.New[struct {
|
||
PVP_1V1 EnumBattleMode `enum:"1"`
|
||
PVP_6V6 EnumBattleMode `enum:"2"`
|
||
}]()
|
||
var Playerinvitemap map[uint32][]Playerinvite = make(map[uint32][]Playerinvite) //玩家邀请信息 ,比如一个玩家被多人邀请对战
|
||
|
||
type Playerinvite struct { //挂载到[]Playerinvite上? 被邀请者->邀请者
|
||
InviteID uint32 // 邀请者
|
||
InviteTime EnumBattleMode //游戏模式
|
||
}
|
||
|
||
// 能力操作类型枚举
|
||
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"` // 弹弱(反弹弱化效果)
|
||
}]()
|