From 9a1a181ecd113e72ca4e8bca9bbb7f4720faff7b Mon Sep 17 00:00:00 2001 From: xinian Date: Sat, 21 Mar 2026 00:34:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8B=86=E5=88=86=E6=88=98?= =?UTF-8?q?=E6=96=97=E8=A7=84=E5=88=99=E6=96=87=E4=BB=B6=E4=B8=BA=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/service/fight/rule/rule1.go | 153 -------------------------- logic/service/fight/rule/rule300.go | 21 ++++ logic/service/fight/rule/rule301.go | 21 ++++ logic/service/fight/rule/rule302.go | 6 + logic/service/fight/rule/rule303.go | 6 + logic/service/fight/rule/rule304.go | 6 + logic/service/fight/rule/rule305.go | 6 + logic/service/fight/rule/rule306.go | 6 + logic/service/fight/rule/rule307.go | 6 + logic/service/fight/rule/rule308.go | 6 + logic/service/fight/rule/rule309.go | 6 + logic/service/fight/rule/rule310.go | 6 + logic/service/fight/rule/rule311.go | 6 + logic/service/fight/rule/rule312.go | 6 + logic/service/fight/rule/rule313.go | 6 + logic/service/fight/rule/rule314.go | 6 + logic/service/fight/rule/rule315.go | 6 + logic/service/fight/rule/rule316.go | 6 + logic/service/fight/rule/rule_base.go | 21 ++++ logic/service/fight/rule/rule_init.go | 24 ++++ 20 files changed, 177 insertions(+), 153 deletions(-) delete mode 100644 logic/service/fight/rule/rule1.go create mode 100644 logic/service/fight/rule/rule300.go create mode 100644 logic/service/fight/rule/rule301.go create mode 100644 logic/service/fight/rule/rule302.go create mode 100644 logic/service/fight/rule/rule303.go create mode 100644 logic/service/fight/rule/rule304.go create mode 100644 logic/service/fight/rule/rule305.go create mode 100644 logic/service/fight/rule/rule306.go create mode 100644 logic/service/fight/rule/rule307.go create mode 100644 logic/service/fight/rule/rule308.go create mode 100644 logic/service/fight/rule/rule309.go create mode 100644 logic/service/fight/rule/rule310.go create mode 100644 logic/service/fight/rule/rule311.go create mode 100644 logic/service/fight/rule/rule312.go create mode 100644 logic/service/fight/rule/rule313.go create mode 100644 logic/service/fight/rule/rule314.go create mode 100644 logic/service/fight/rule/rule315.go create mode 100644 logic/service/fight/rule/rule316.go create mode 100644 logic/service/fight/rule/rule_base.go create mode 100644 logic/service/fight/rule/rule_init.go diff --git a/logic/service/fight/rule/rule1.go b/logic/service/fight/rule/rule1.go deleted file mode 100644 index 3351422b3..000000000 --- a/logic/service/fight/rule/rule1.go +++ /dev/null @@ -1,153 +0,0 @@ -package rule - -import ( - "blazing/logic/service/common" - "blazing/logic/service/fight/input" - "blazing/modules/player/model" -) - -func init() { - // 注册战斗规则300-316(注册逻辑不变) - input.InitRule(300, &Rule300{}) - input.InitRule(301, &Rule301{}) - input.InitRule(302, &Rule302{}) - input.InitRule(303, &Rule303{}) - input.InitRule(304, &Rule304{}) - input.InitRule(305, &Rule305{}) - input.InitRule(306, &Rule306{}) - input.InitRule(307, &Rule307{}) - input.InitRule(308, &Rule308{}) - input.InitRule(309, &Rule309{}) - input.InitRule(310, &Rule310{}) - input.InitRule(311, &Rule311{}) - input.InitRule(312, &Rule312{}) - input.InitRule(313, &Rule313{}) - input.InitRule(314, &Rule314{}) - input.InitRule(315, &Rule315{}) - input.InitRule(316, &Rule316{}) -} - -// RuleBase 规则基类:包含通用参数存储和基础方法 -type RuleBase struct { - args []int // 通用参数存储,替代各个子类的 params -} - -// Exec 基类默认执行方法(子类可重写) -func (r *RuleBase) Exec(f common.FightI, t *model.FightOverInfo) bool { - return true -} - -// SetArgs 基类参数设置方法(所有子类继承使用) -func (r *RuleBase) SetArgs(param ...int) { - r.args = param -} - -// ------------------------------ -// 所有具体规则都嵌入 RuleBase 实现继承 -// 移除所有 params 字段,统一使用父类的 args -// ------------------------------ - -// Rule300 致命一击击败后获取奖励 -type Rule300 struct { - RuleBase // 嵌入基类,继承 args、SetArgs、Exec -} - -func (r *Rule300) Exec(f common.FightI, t *model.FightOverInfo) bool { - if t.WinnerId == f.Ownerid() { //获胜 - - if f.GetAttackValue(false).IsCritical != 0 { - return true - } - } - return false -} - -// Rule301 n回合内击败获取奖励 -type Rule301 struct { - RuleBase // 继承基类的所有属性和方法 -} - -func (r *Rule301) Exec(f common.FightI, t *model.FightOverInfo) bool { - if t.WinnerId == f.Ownerid() { //获胜 - - if f.GetOverInfo().Round < uint32(r.args[0]) { - return true - } - } - return false -} - -// Rule302 n回合后击败获取奖励 -type Rule302 struct { - RuleBase -} - -// Rule303 使用xx技能击败(攻击致死)获取奖励 -type Rule303 struct { - RuleBase -} - -// Rule304 使用xx技能后(属性技能)击败获取奖励 -type Rule304 struct { - RuleBase -} - -// Rule305 满血击败后获取奖励 -type Rule305 struct { - RuleBase -} - -// Rule306 对方在xx异常状态下击败后获取奖励 -type Rule306 struct { - RuleBase -} - -// Rule307 满足特定属性强化下击败后获取奖励 -type Rule307 struct { - RuleBase -} - -// Rule308 战斗中超过n伤害获取奖励 -type Rule308 struct { - RuleBase -} - -// Rule309 战斗持续n回合后获取奖励 -type Rule309 struct { - RuleBase -} - -// Rule310 不使用xx药剂击败获取奖励 -type Rule310 struct { - RuleBase -} - -// Rule311 偶数回合击败后获取奖励 -type Rule311 struct { - RuleBase -} - -// Rule312 奇数回合击败后获取奖励 -type Rule312 struct { - RuleBase -} - -// Rule313 特定回合击败后获取奖励 -type Rule313 struct { - RuleBase -} - -// Rule314 自身处于xx状态击败后获取奖励 -type Rule314 struct { - RuleBase -} - -// Rule315 自身不大于1/n血量击败 -type Rule315 struct { - RuleBase -} - -// Rule316 在自身所有技能都进入PP耗尽状态的情况下获胜获取精灵 -type Rule316 struct { - RuleBase -} diff --git a/logic/service/fight/rule/rule300.go b/logic/service/fight/rule/rule300.go new file mode 100644 index 000000000..fdf12be1a --- /dev/null +++ b/logic/service/fight/rule/rule300.go @@ -0,0 +1,21 @@ +package rule + +import ( + "blazing/logic/service/common" + "blazing/modules/player/model" +) + +// Rule300 致命一击击败后获取奖励 +type Rule300 struct { + RuleBase // 嵌入基类,继承 args、SetArgs、Exec +} + +func (r *Rule300) Exec(f common.FightI, t *model.FightOverInfo) bool { + if t.WinnerId == f.Ownerid() { //获胜 + + if f.GetAttackValue(false).IsCritical != 0 { + return true + } + } + return false +} diff --git a/logic/service/fight/rule/rule301.go b/logic/service/fight/rule/rule301.go new file mode 100644 index 000000000..74b788e7b --- /dev/null +++ b/logic/service/fight/rule/rule301.go @@ -0,0 +1,21 @@ +package rule + +import ( + "blazing/logic/service/common" + "blazing/modules/player/model" +) + +// Rule301 n回合内击败获取奖励 +type Rule301 struct { + RuleBase // 继承基类的所有属性和方法 +} + +func (r *Rule301) Exec(f common.FightI, t *model.FightOverInfo) bool { + if t.WinnerId == f.Ownerid() { //获胜 + + if f.GetOverInfo().Round < uint32(r.args[0]) { + return true + } + } + return false +} diff --git a/logic/service/fight/rule/rule302.go b/logic/service/fight/rule/rule302.go new file mode 100644 index 000000000..ba8c98099 --- /dev/null +++ b/logic/service/fight/rule/rule302.go @@ -0,0 +1,6 @@ +package rule + +// Rule302 n回合后击败获取奖励 +type Rule302 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule303.go b/logic/service/fight/rule/rule303.go new file mode 100644 index 000000000..df94688ef --- /dev/null +++ b/logic/service/fight/rule/rule303.go @@ -0,0 +1,6 @@ +package rule + +// Rule303 使用xx技能击败(攻击致死)获取奖励 +type Rule303 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule304.go b/logic/service/fight/rule/rule304.go new file mode 100644 index 000000000..42f6b7e81 --- /dev/null +++ b/logic/service/fight/rule/rule304.go @@ -0,0 +1,6 @@ +package rule + +// Rule304 使用xx技能后(属性技能)击败获取奖励 +type Rule304 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule305.go b/logic/service/fight/rule/rule305.go new file mode 100644 index 000000000..14b4b9aeb --- /dev/null +++ b/logic/service/fight/rule/rule305.go @@ -0,0 +1,6 @@ +package rule + +// Rule305 满血击败后获取奖励 +type Rule305 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule306.go b/logic/service/fight/rule/rule306.go new file mode 100644 index 000000000..c89315d5b --- /dev/null +++ b/logic/service/fight/rule/rule306.go @@ -0,0 +1,6 @@ +package rule + +// Rule306 对方在xx异常状态下击败后获取奖励 +type Rule306 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule307.go b/logic/service/fight/rule/rule307.go new file mode 100644 index 000000000..932ebf5d2 --- /dev/null +++ b/logic/service/fight/rule/rule307.go @@ -0,0 +1,6 @@ +package rule + +// Rule307 满足特定属性强化下击败后获取奖励 +type Rule307 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule308.go b/logic/service/fight/rule/rule308.go new file mode 100644 index 000000000..42cad91ab --- /dev/null +++ b/logic/service/fight/rule/rule308.go @@ -0,0 +1,6 @@ +package rule + +// Rule308 战斗中超过n伤害获取奖励 +type Rule308 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule309.go b/logic/service/fight/rule/rule309.go new file mode 100644 index 000000000..89f4ffd04 --- /dev/null +++ b/logic/service/fight/rule/rule309.go @@ -0,0 +1,6 @@ +package rule + +// Rule309 战斗持续n回合后获取奖励 +type Rule309 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule310.go b/logic/service/fight/rule/rule310.go new file mode 100644 index 000000000..1b9d6da58 --- /dev/null +++ b/logic/service/fight/rule/rule310.go @@ -0,0 +1,6 @@ +package rule + +// Rule310 不使用xx药剂击败获取奖励 +type Rule310 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule311.go b/logic/service/fight/rule/rule311.go new file mode 100644 index 000000000..779cafaec --- /dev/null +++ b/logic/service/fight/rule/rule311.go @@ -0,0 +1,6 @@ +package rule + +// Rule311 偶数回合击败后获取奖励 +type Rule311 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule312.go b/logic/service/fight/rule/rule312.go new file mode 100644 index 000000000..e620d9c60 --- /dev/null +++ b/logic/service/fight/rule/rule312.go @@ -0,0 +1,6 @@ +package rule + +// Rule312 奇数回合击败后获取奖励 +type Rule312 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule313.go b/logic/service/fight/rule/rule313.go new file mode 100644 index 000000000..7020488ab --- /dev/null +++ b/logic/service/fight/rule/rule313.go @@ -0,0 +1,6 @@ +package rule + +// Rule313 特定回合击败后获取奖励 +type Rule313 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule314.go b/logic/service/fight/rule/rule314.go new file mode 100644 index 000000000..315e3b942 --- /dev/null +++ b/logic/service/fight/rule/rule314.go @@ -0,0 +1,6 @@ +package rule + +// Rule314 自身处于xx状态击败后获取奖励 +type Rule314 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule315.go b/logic/service/fight/rule/rule315.go new file mode 100644 index 000000000..6d1fe6b84 --- /dev/null +++ b/logic/service/fight/rule/rule315.go @@ -0,0 +1,6 @@ +package rule + +// Rule315 自身不大于1/n血量击败 +type Rule315 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule316.go b/logic/service/fight/rule/rule316.go new file mode 100644 index 000000000..df3b6068a --- /dev/null +++ b/logic/service/fight/rule/rule316.go @@ -0,0 +1,6 @@ +package rule + +// Rule316 在自身所有技能都进入PP耗尽状态的情况下获胜获取精灵 +type Rule316 struct { + RuleBase +} diff --git a/logic/service/fight/rule/rule_base.go b/logic/service/fight/rule/rule_base.go new file mode 100644 index 000000000..b0f68e77d --- /dev/null +++ b/logic/service/fight/rule/rule_base.go @@ -0,0 +1,21 @@ +package rule + +import ( + "blazing/logic/service/common" + "blazing/modules/player/model" +) + +// RuleBase 规则基类:包含通用参数存储和基础方法 +type RuleBase struct { + args []int // 通用参数存储,替代各个子类的 params +} + +// Exec 基类默认执行方法(子类可重写) +func (r *RuleBase) Exec(f common.FightI, t *model.FightOverInfo) bool { + return true +} + +// SetArgs 基类参数设置方法(所有子类继承使用) +func (r *RuleBase) SetArgs(param ...int) { + r.args = param +} diff --git a/logic/service/fight/rule/rule_init.go b/logic/service/fight/rule/rule_init.go new file mode 100644 index 000000000..4e38a5be2 --- /dev/null +++ b/logic/service/fight/rule/rule_init.go @@ -0,0 +1,24 @@ +package rule + +import "blazing/logic/service/fight/input" + +func init() { + // 注册战斗规则300-316 + input.InitRule(300, &Rule300{}) + input.InitRule(301, &Rule301{}) + input.InitRule(302, &Rule302{}) + input.InitRule(303, &Rule303{}) + input.InitRule(304, &Rule304{}) + input.InitRule(305, &Rule305{}) + input.InitRule(306, &Rule306{}) + input.InitRule(307, &Rule307{}) + input.InitRule(308, &Rule308{}) + input.InitRule(309, &Rule309{}) + input.InitRule(310, &Rule310{}) + input.InitRule(311, &Rule311{}) + input.InitRule(312, &Rule312{}) + input.InitRule(313, &Rule313{}) + input.InitRule(314, &Rule314{}) + input.InitRule(315, &Rule315{}) + input.InitRule(316, &Rule316{}) +}