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/action.go | |
| parent | c69e6c0770359e2febafcf487eb21c4aa608c3e9 (diff) | |
add server and websocket comms
Diffstat (limited to 'engine/action.go')
| -rw-r--r-- | engine/action.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/engine/action.go b/engine/action.go new file mode 100644 index 0000000..2a73982 --- /dev/null +++ b/engine/action.go @@ -0,0 +1,62 @@ +package engine + +type BaseAction struct { + User *Player + BaseSource IsCard +} + +func (b *BaseAction) Actor() *Player { + return b.User +} + +func (b *BaseAction) Source() IsCard { + return b.BaseSource +} + +func (b *BaseAction) Then(g *Game) { +} + +type Action interface { + Actor() *Player + Source() IsCard + Then(g *Game) +} + +func Interactions(a ...Action) map[InteractionID]Action { + m := make(map[InteractionID]Action, len(a)) + for i, ac := range a { + m[InteractionID(i)] = ac + } + return m +} + +type DamageDecision bool + +var ( + Aura DamageDecision = true + Life DamageDecision = false +) + +type DesignateDamage struct { + Attacker *Player + Defender *Player + SourceCard *Card +} + +func (d *DesignateDamage) Actor() *Player { + return d.Defender +} +func (d *DesignateDamage) Instigator() *Player { + return d.Attacker +} + +func (d *DesignateDamage) Then(g *Game) { +} + +func (d *DesignateDamage) Source() IsCard { + return d.SourceCard +} + +type PlayCard struct { + *BaseAction +} |
