Skip to content

Commit fbf26c2

Browse files
committed
[feature] Add+Implement events placementSucceeded and prepared
1 parent 659081b commit fbf26c2

File tree

9 files changed

+484
-112
lines changed

9 files changed

+484
-112
lines changed

internal/app/controller/engine.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,14 @@ func (e *Engine) processGameEvent(event *GameEvent) error {
570570
e.PlacementFailuresIncremented(team)
571571
}
572572

573+
if event.Type == GameEventPlacementSucceeded {
574+
team := event.ByTeam()
575+
if team.Unknown() {
576+
return errors.New("Missing team in game event")
577+
}
578+
e.State.TeamState[team].BallPlacementFailures = 0
579+
}
580+
573581
e.State.PlacementPos = e.BallPlacementPos()
574582

575583
if e.State.GameState() != GameStateHalted && !event.IsContinued() && !event.IsSecondary() {

internal/app/controller/gameEvent.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const (
4545
GameEventNoProgressInGame GameEventType = "noProgressInGame"
4646
GameEventPlacementFailedByTeamInFavor GameEventType = "placementFailedByTeamInFavor"
4747
GameEventPlacementFailedByOpponent GameEventType = "placementFailedByOpponent"
48+
GameEventPlacementSucceeded GameEventType = "placementSucceeded"
49+
GameEventPrepared GameEventType = "prepared"
4850
)
4951

5052
// GameEvent combines the type of a game event with the corresponding detail structures
@@ -124,7 +126,9 @@ func (e GameEvent) IsSecondary() bool {
124126
GameEventBotCrashUniqueContinue,
125127
GameEventBotPushedBotContinue,
126128
GameEventPlacementFailedByTeamInFavor,
127-
GameEventPlacementFailedByOpponent:
129+
GameEventPlacementFailedByOpponent,
130+
GameEventPlacementSucceeded,
131+
GameEventPrepared:
128132
return true
129133
}
130134
return false
@@ -213,6 +217,10 @@ func (e GameEvent) ToProto() *refproto.GameEvent {
213217
protoEvent.Event = &refproto.GameEvent_PlacementFailedByTeamInFavor_{PlacementFailedByTeamInFavor: e.Details.PlacementFailedByTeamInFavor}
214218
case GameEventPlacementFailedByOpponent:
215219
protoEvent.Event = &refproto.GameEvent_PlacementFailedByOpponent_{PlacementFailedByOpponent: e.Details.PlacementFailedByOpponent}
220+
case GameEventPlacementSucceeded:
221+
protoEvent.Event = &refproto.GameEvent_PlacementSucceeded_{PlacementSucceeded: e.Details.PlacementSucceeded}
222+
case GameEventPrepared:
223+
protoEvent.Event = &refproto.GameEvent_Prepared_{Prepared: e.Details.Prepared}
216224
default:
217225
log.Printf("Warn: Could not map game e %v", e.Type)
218226
return nil
@@ -256,6 +264,8 @@ type GameEventDetails struct {
256264
NoProgressInGame *refproto.GameEvent_NoProgressInGame `json:"noProgressInGame,omitempty"`
257265
PlacementFailedByTeamInFavor *refproto.GameEvent_PlacementFailedByTeamInFavor `json:"placementFailedByTeamInFavor,omitempty"`
258266
PlacementFailedByOpponent *refproto.GameEvent_PlacementFailedByOpponent `json:"placementFailedByOpponent,omitempty"`
267+
PlacementSucceeded *refproto.GameEvent_PlacementSucceeded `json:"placementSucceeded,omitempty"`
268+
Prepared *refproto.GameEvent_Prepared `json:"prepared,omitempty"`
259269
}
260270

261271
func (d GameEventDetails) EventType() GameEventType {
@@ -346,6 +356,9 @@ func (d GameEventDetails) EventType() GameEventType {
346356
if d.MultipleFouls != nil {
347357
return GameEventMultipleFouls
348358
}
359+
if d.MultiplePlacementFailures != nil {
360+
return GameEventMultiplePlacementFailures
361+
}
349362
if d.KickTimeout != nil {
350363
return GameEventKickTimeout
351364
}
@@ -358,6 +371,12 @@ func (d GameEventDetails) EventType() GameEventType {
358371
if d.PlacementFailedByOpponent != nil {
359372
return GameEventPlacementFailedByOpponent
360373
}
374+
if d.PlacementSucceeded != nil {
375+
return GameEventPlacementSucceeded
376+
}
377+
if d.Prepared != nil {
378+
return GameEventPrepared
379+
}
361380
return GameEventNone
362381
}
363382

@@ -533,6 +552,9 @@ func (d GameEventDetails) Description() string {
533552
if d.MultipleFouls != nil {
534553
return ""
535554
}
555+
if d.MultiplePlacementFailures != nil {
556+
return ""
557+
}
536558
if d.KickTimeout != nil {
537559
return ""
538560
}
@@ -545,6 +567,12 @@ func (d GameEventDetails) Description() string {
545567
if d.PlacementFailedByOpponent != nil {
546568
return ""
547569
}
570+
if d.PlacementSucceeded != nil {
571+
return ""
572+
}
573+
if d.Prepared != nil {
574+
return ""
575+
}
548576
return ""
549577
}
550578

@@ -578,9 +606,12 @@ func NewGameEventDetails(event refproto.GameEvent) (d GameEventDetails) {
578606
d.UnsportiveBehaviorMajor = event.GetUnsportiveBehaviorMajor()
579607
d.MultipleCards = event.GetMultipleCards()
580608
d.MultipleFouls = event.GetMultipleFouls()
609+
d.MultiplePlacementFailures = event.GetMultiplePlacementFailures()
581610
d.KickTimeout = event.GetKickTimeout()
582611
d.NoProgressInGame = event.GetNoProgressInGame()
583612
d.PlacementFailedByTeamInFavor = event.GetPlacementFailedByTeamInFavor()
584613
d.PlacementFailedByOpponent = event.GetPlacementFailedByOpponent()
614+
d.PlacementSucceeded = event.GetPlacementSucceeded()
615+
d.Prepared = event.GetPrepared()
585616
return
586617
}

0 commit comments

Comments
 (0)