From 899ef7448222f0d087c194b3379b702f8dd2ff8c Mon Sep 17 00:00:00 2001 From: ewy Date: Mon, 14 Sep 2026 19:48:36 +0200 Subject: add server and websocket comms --- engine/card/attack.go | 26 +++++++++++++++++++++++--- engine/card/card.go | 16 ---------------- engine/card/damage.go | 4 ++++ engine/card/predicate/predicate.go | 18 ++++++++++++++++++ engine/card/reaction.go | 7 +++++++ 5 files changed, 52 insertions(+), 19 deletions(-) delete mode 100644 engine/card/card.go create mode 100644 engine/card/predicate/predicate.go create mode 100644 engine/card/reaction.go (limited to 'engine/card') diff --git a/engine/card/attack.go b/engine/card/attack.go index 19ad196..d05d44a 100644 --- a/engine/card/attack.go +++ b/engine/card/attack.go @@ -1,11 +1,31 @@ package card +import ( + "sakura/engine" + "sakura/engine/pool" +) + type Attack struct { - *Card + *engine.Card MinDistance RangeValue MaxDistance RangeValue - AuraDamage DamageValue - HealthDamage DamageValue + AuraDamage DamageValue + LifeDamage DamageValue + + Unreactable bool +} + +func (a *Attack) Attack() *Attack { + return a +} + +func (a *Attack) Do(g *engine.Game, to *pool.Pool) { +} + +type IsAttack interface { + Attack() *Attack + Prepare(g *engine.Game) + Do(g *engine.Game, to *pool.Pool) } diff --git a/engine/card/card.go b/engine/card/card.go deleted file mode 100644 index f2dce83..0000000 --- a/engine/card/card.go +++ /dev/null @@ -1,16 +0,0 @@ -package card - -type Card struct { - Name string - AllOut bool - Text string - Flavor string -} - -func (c *Card) Base() *Card { - return c -} - -type IsCard interface { - Base() *Card -} diff --git a/engine/card/damage.go b/engine/card/damage.go index fccb073..6d7dafd 100644 --- a/engine/card/damage.go +++ b/engine/card/damage.go @@ -3,3 +3,7 @@ package card type DamageValue int const Unselectable = DamageValue(-1) + +func (d DamageValue) Value() int { + return int(d) +} diff --git a/engine/card/predicate/predicate.go b/engine/card/predicate/predicate.go new file mode 100644 index 0000000..5770c3d --- /dev/null +++ b/engine/card/predicate/predicate.go @@ -0,0 +1,18 @@ +package predicate + +import ( + "sakura/engine" + "sakura/engine/card" +) + +func Reaction(c engine.IsCard) bool { + _, ok := c.(card.IsReaction) + return ok +} + +func ReactionApplicable(c engine.IsCard) bool { + r, isReaction := c.(card.IsReaction) + if isReaction { + return r.Applicable(c) + } +} diff --git a/engine/card/reaction.go b/engine/card/reaction.go new file mode 100644 index 0000000..3eed8c4 --- /dev/null +++ b/engine/card/reaction.go @@ -0,0 +1,7 @@ +package card + +import "sakura/engine" + +type IsReaction interface { + Applicable(c engine.IsCard) bool +} -- cgit v1.3.1