diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-08-17 15:22:52 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:39 +0200 |
| commit | a30839fcdff7585e2b36edf29f7b2230c1923f30 (patch) | |
| tree | f20013934ebfd4eedec71b6b28dcbafa1a720f27 /go/game/trigger.go | |
| parent | 9463ec4cb063f0bde03d0e1b2a650f5887ad29ff (diff) | |
| download | muhqs-game-a30839fcdff7585e2b36edf29f7b2230c1923f30.tar.gz muhqs-game-a30839fcdff7585e2b36edf29f7b2230c1923f30.zip | |
add more events
Diffstat (limited to 'go/game/trigger.go')
| -rw-r--r-- | go/game/trigger.go | 87 |
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 |
