Skip to content

Commit 5b9cfac

Browse files
committed
[refactoring] Reduce ball placement failure to a single event
1 parent e561fb5 commit 5b9cfac

File tree

9 files changed

+183
-338
lines changed

9 files changed

+183
-338
lines changed

internal/app/controller/engine.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ func (s *State) noTeamCanPlaceBall() bool {
261261

262262
func (s *State) ballPlacementFailedBefore() bool {
263263
for _, gameEvent := range s.GameEvents {
264-
if gameEvent.Type == GameEventPlacementFailedByTeamInFavor {
264+
if gameEvent.Type == GameEventPlacementFailed {
265265
return true
266266
}
267267
}
@@ -608,7 +608,7 @@ func (e *Engine) processGameEvent(event *GameEvent) error {
608608
e.addCard(&EventCard{Type: CardTypeRed, ForTeam: team, Operation: CardOperationAdd}, team, 0)
609609
}
610610

611-
if event.IncrementsBallPlacementFailureCounter() {
611+
if event.Type == GameEventPlacementFailed {
612612
team := event.ByTeam()
613613
if team.Unknown() {
614614
return errors.New("Missing team in game event")
@@ -689,7 +689,7 @@ func (e *Engine) allTeamsFailedPlacement() bool {
689689
}
690690
failures := 0
691691
for _, e := range e.State.GameEvents {
692-
if e.Type == GameEventPlacementFailedByTeamInFavor {
692+
if e.Type == GameEventPlacementFailed {
693693
failures++
694694
if failures >= possibleFailures {
695695
return true

internal/app/controller/gameEvent.go

Lines changed: 15 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@ type GameEventType string
1313
const (
1414
GameEventNone GameEventType = ""
1515

16-
GameEventPrepared GameEventType = "prepared"
17-
GameEventNoProgressInGame GameEventType = "noProgressInGame"
18-
GameEventPlacementFailedByTeamInFavor GameEventType = "placementFailedByTeamInFavor"
19-
GameEventPlacementFailedByOpponent GameEventType = "placementFailedByOpponent"
20-
GameEventPlacementSucceeded GameEventType = "placementSucceeded"
21-
GameEventBotSubstitution GameEventType = "botSubstitution"
22-
GameEventTooManyRobots GameEventType = "tooManyRobots"
16+
GameEventPrepared GameEventType = "prepared"
17+
GameEventNoProgressInGame GameEventType = "noProgressInGame"
18+
GameEventPlacementFailed GameEventType = "placementFailed"
19+
GameEventPlacementSucceeded GameEventType = "placementSucceeded"
20+
GameEventBotSubstitution GameEventType = "botSubstitution"
21+
GameEventTooManyRobots GameEventType = "tooManyRobots"
2322

2423
GameEventBallLeftFieldTouchLine GameEventType = "ballLeftFieldTouchLine"
2524
GameEventBallLeftFieldGoalLine GameEventType = "ballLeftFieldGoalLine"
@@ -64,8 +63,7 @@ var GameEventTypes = []GameEventType{
6463
GameEventNone,
6564
GameEventPrepared,
6665
GameEventNoProgressInGame,
67-
GameEventPlacementFailedByTeamInFavor,
68-
GameEventPlacementFailedByOpponent,
66+
GameEventPlacementFailed,
6967
GameEventPlacementSucceeded,
7068
GameEventBotSubstitution,
7169
GameEventTooManyRobots,
@@ -161,8 +159,7 @@ func AllGameEvents() []GameEventType {
161159
GameEventMultiplePlacementFailures,
162160
GameEventKickTimeout,
163161
GameEventNoProgressInGame,
164-
GameEventPlacementFailedByTeamInFavor,
165-
GameEventPlacementFailedByOpponent,
162+
GameEventPlacementFailed,
166163
GameEventPlacementSucceeded,
167164
GameEventPrepared,
168165
GameEventBotSubstitution,
@@ -223,15 +220,6 @@ func (e GameEvent) AddsRedCard() bool {
223220
return false
224221
}
225222

226-
func (e GameEvent) IncrementsBallPlacementFailureCounter() bool {
227-
switch e.Type {
228-
case GameEventPlacementFailedByTeamInFavor,
229-
GameEventPlacementFailedByOpponent:
230-
return true
231-
}
232-
return false
233-
}
234-
235223
// IsSecondary checks if this game event is a secondary one that does not influence the next referee command
236224
func (e GameEvent) IsSecondary() bool {
237225
switch e.Type {
@@ -346,10 +334,8 @@ func (e GameEvent) ToProto() *refproto.GameEvent {
346334
protoEvent.Event = &refproto.GameEvent_KickTimeout_{KickTimeout: e.Details.KickTimeout}
347335
case GameEventNoProgressInGame:
348336
protoEvent.Event = &refproto.GameEvent_NoProgressInGame_{NoProgressInGame: e.Details.NoProgressInGame}
349-
case GameEventPlacementFailedByTeamInFavor:
350-
protoEvent.Event = &refproto.GameEvent_PlacementFailedByTeamInFavor_{PlacementFailedByTeamInFavor: e.Details.PlacementFailedByTeamInFavor}
351-
case GameEventPlacementFailedByOpponent:
352-
protoEvent.Event = &refproto.GameEvent_PlacementFailedByOpponent_{PlacementFailedByOpponent: e.Details.PlacementFailedByOpponent}
337+
case GameEventPlacementFailed:
338+
protoEvent.Event = &refproto.GameEvent_PlacementFailed_{PlacementFailed: e.Details.PlacementFailed}
353339
case GameEventPlacementSucceeded:
354340
protoEvent.Event = &refproto.GameEvent_PlacementSucceeded_{PlacementSucceeded: e.Details.PlacementSucceeded}
355341
case GameEventPrepared:
@@ -400,8 +386,7 @@ type GameEventDetails struct {
400386
MultiplePlacementFailures *refproto.GameEvent_MultiplePlacementFailures `json:"multiplePlacementFailures,omitempty"`
401387
KickTimeout *refproto.GameEvent_KickTimeout `json:"kickTimeout,omitempty"`
402388
NoProgressInGame *refproto.GameEvent_NoProgressInGame `json:"noProgressInGame,omitempty"`
403-
PlacementFailedByTeamInFavor *refproto.GameEvent_PlacementFailedByTeamInFavor `json:"placementFailedByTeamInFavor,omitempty"`
404-
PlacementFailedByOpponent *refproto.GameEvent_PlacementFailedByOpponent `json:"placementFailedByOpponent,omitempty"`
389+
PlacementFailed *refproto.GameEvent_PlacementFailed `json:"placementFailed,omitempty"`
405390
PlacementSucceeded *refproto.GameEvent_PlacementSucceeded `json:"placementSucceeded,omitempty"`
406391
Prepared *refproto.GameEvent_Prepared `json:"prepared,omitempty"`
407392
BotSubstitution *refproto.GameEvent_BotSubstitution `json:"botSubstitution,omitempty"`
@@ -509,11 +494,8 @@ func (d GameEventDetails) EventType() GameEventType {
509494
if d.NoProgressInGame != nil {
510495
return GameEventNoProgressInGame
511496
}
512-
if d.PlacementFailedByTeamInFavor != nil {
513-
return GameEventPlacementFailedByTeamInFavor
514-
}
515-
if d.PlacementFailedByOpponent != nil {
516-
return GameEventPlacementFailedByOpponent
497+
if d.PlacementFailed != nil {
498+
return GameEventPlacementFailed
517499
}
518500
if d.PlacementSucceeded != nil {
519501
return GameEventPlacementSucceeded
@@ -718,10 +700,7 @@ func (d GameEventDetails) String() string {
718700
if d.NoProgressInGame != nil {
719701
return ""
720702
}
721-
if d.PlacementFailedByTeamInFavor != nil {
722-
return ""
723-
}
724-
if d.PlacementFailedByOpponent != nil {
703+
if d.PlacementFailed != nil {
725704
return ""
726705
}
727706
if d.PlacementSucceeded != nil {
@@ -774,8 +753,7 @@ func GameEventDetailsFromProto(event refproto.GameEvent) (d GameEventDetails) {
774753
d.MultiplePlacementFailures = event.GetMultiplePlacementFailures()
775754
d.KickTimeout = event.GetKickTimeout()
776755
d.NoProgressInGame = event.GetNoProgressInGame()
777-
d.PlacementFailedByTeamInFavor = event.GetPlacementFailedByTeamInFavor()
778-
d.PlacementFailedByOpponent = event.GetPlacementFailedByOpponent()
756+
d.PlacementFailed = event.GetPlacementFailed()
779757
d.PlacementSucceeded = event.GetPlacementSucceeded()
780758
d.Prepared = event.GetPrepared()
781759
d.BotSubstitution = event.GetBotSubstitution()

internal/app/controller/placementPos.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,7 @@ func (e *Engine) BallPlacementPos() *Location {
9595
return e.validateLocation(e.State.PlacementPos)
9696
case GameEventNoProgressInGame:
9797
return e.validateProtoLocation(event.Details.NoProgressInGame.Location)
98-
case GameEventPlacementFailedByTeamInFavor:
99-
return e.validateLocation(e.State.PlacementPos)
100-
case GameEventPlacementFailedByOpponent:
98+
case GameEventPlacementFailed:
10199
return e.validateLocation(e.State.PlacementPos)
102100
default:
103101
log.Print("Warn: Unknown game event: ", event.Type)

0 commit comments

Comments
 (0)