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-19 15:41:15 +0200 |
| commit | a8d818be7dbd6fbcd4e2ad484337c5f275575f41 (patch) | |
| tree | dbb65983d3cc6b4d63f8b70d02ad68aca85e023a /go/game/trigger.go | |
| parent | 8d85a5019d12644588e7ac112556055e7e54c266 (diff) | |
| download | muhqs-game-a8d818be7dbd6fbcd4e2ad484337c5f275575f41.tar.gz muhqs-game-a8d818be7dbd6fbcd4e2ad484337c5f275575f41.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 |
