diff options
| author | ewy <ewy0@protonmail.com> | 2026-09-14 19:48:36 +0200 |
|---|---|---|
| committer | ewy <ewy0@protonmail.com> | 2026-09-14 19:48:36 +0200 |
| commit | 899ef7448222f0d087c194b3379b702f8dd2ff8c (patch) | |
| tree | 8c2b508bb4d01236c7f582e4eee91fd178d09670 /engine/card | |
| parent | c69e6c0770359e2febafcf487eb21c4aa608c3e9 (diff) | |
add server and websocket comms
Diffstat (limited to 'engine/card')
| -rw-r--r-- | engine/card/attack.go | 26 | ||||
| -rw-r--r-- | engine/card/card.go | 16 | ||||
| -rw-r--r-- | engine/card/damage.go | 4 | ||||
| -rw-r--r-- | engine/card/predicate/predicate.go | 18 | ||||
| -rw-r--r-- | engine/card/reaction.go | 7 |
5 files changed, 52 insertions, 19 deletions
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 +} |
