aboutsummaryrefslogtreecommitdiff
path: root/go/game/trigger.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-08-17 15:22:52 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:39 +0200
commita30839fcdff7585e2b36edf29f7b2230c1923f30 (patch)
treef20013934ebfd4eedec71b6b28dcbafa1a720f27 /go/game/trigger.go
parent9463ec4cb063f0bde03d0e1b2a650f5887ad29ff (diff)
downloadmuhqs-game-a30839fcdff7585e2b36edf29f7b2230c1923f30.tar.gz
muhqs-game-a30839fcdff7585e2b36edf29f7b2230c1923f30.zip
add more events
Diffstat (limited to 'go/game/trigger.go')
-rw-r--r--go/game/trigger.go87
1 files changed, 1 insertions, 86 deletions
diff --git a/go/game/trigger.go b/go/game/trigger.go
index b061ea78..93b155c6 100644
--- a/go/game/trigger.go
+++ b/go/game/trigger.go
@@ -1,97 +1,12 @@
package game
import (
- "fmt"
- "log"
-
"golang.org/x/exp/slices"
+ "muhq.space/muhqs-game/go/log"
"muhq.space/muhqs-game/go/utils"
)
-type eventType int
-
-const (
- destruction eventType = iota
- eot
- sacrifice
- play
- target
- etb
- damageDealt
-)
-
-var EventTypes = struct {
- Destruction eventType
- Eot eventType
- Sacrifice eventType
- Play eventType
- Target eventType
- Etb eventType
- DamageDealt eventType
-}{
- Destruction: destruction,
- Eot: eot,
- Sacrifice: sacrifice,
- Play: play,
- Target: target,
- Etb: etb,
- DamageDealt: damageDealt,
-}
-
-func (e eventType) String() string {
- switch e {
- case destruction:
- return "destruction"
- case eot:
- return "eot"
- case sacrifice:
- return "sacrifice"
- case play:
- return "play"
- case target:
- return "target"
- case etb:
- return "etb"
- case damageDealt:
- return "damageDealt"
- }
-
- log.Panicf("Unknown evenType: %d", e)
- return ""
-}
-
-type Event struct {
- eventType eventType
- sources []any
- affected []any
-}
-
-func (e Event) String() string {
- if len(e.sources) == 0 {
- return e.eventType.String()
- }
-
- return fmt.Sprintf("%v:%v", e.sources, e.eventType)
-}
-
-func newEotEvent() Event {
- return Event{eventType: eot}
-}
-
-func newTargetEvent(source any, targets *Targets) Event {
- affected := make([]any, 0, len(targets.ts))
- for _, t := range targets.ts {
- affected = append(affected, t.sel...)
- }
- return Event{eventType: target, sources: []any{source}, affected: affected}
-}
-
-func (s *LocalState) fireEvent(e Event) {
- log.Println("fire event:", e)
- s.events = append(s.events, e)
-}
-
type Trigger interface {
Source() any
String() string