Skip to content

Commit 5d64b61

Browse files
committed
Implement multiple cards rule
1 parent 5a03700 commit 5d64b61

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

internal/app/statemachine/change_cards.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@ import (
66
)
77

88
func (s *StateMachine) processChangeAddYellowCard(newState *state.State, change *AddYellowCard) (changes []*Change) {
9-
newState.TeamInfo(*change.ForTeam).AddYellowCard(s.gameConfig.YellowCardDuration, change.CausedByGameEvent)
10-
s.updateMaxBots(newState)
9+
if activeYellowCards(newState.TeamInfo(*change.ForTeam).YellowCards) >= 2 {
10+
changes = append(changes, s.multipleYellowCardsChange(*change.ForTeam))
11+
} else {
12+
newState.TeamInfo(*change.ForTeam).AddYellowCard(s.gameConfig.YellowCardDuration, change.CausedByGameEvent)
13+
s.updateMaxBots(newState)
14+
}
15+
1116
return
1217
}
1318

@@ -40,3 +45,22 @@ func activeYellowCards(cards []*state.YellowCard) (count int32) {
4045
}
4146
return
4247
}
48+
49+
// multipleYellowCardsChange creates a multiple cards event change
50+
func (s *StateMachine) multipleYellowCardsChange(byTeam state.Team) *Change {
51+
eventType := state.GameEvent_MULTIPLE_CARDS
52+
return &Change{
53+
Change: &Change_AddGameEvent{
54+
AddGameEvent: &AddGameEvent{
55+
GameEvent: &state.GameEvent{
56+
Type: &eventType,
57+
Event: &state.GameEvent_MultipleCards_{
58+
MultipleCards: &state.GameEvent_MultipleCards{
59+
ByTeam: &byTeam,
60+
},
61+
},
62+
},
63+
},
64+
},
65+
}
66+
}

internal/app/statemachine/change_gameevent.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,12 @@ func addsYellowCard(gameEvent state.GameEvent_Type) bool {
257257
return false
258258
}
259259

260-
// addsYellowCard checks if the game event adds a yellow card
260+
// addsRedCard checks if the game event adds a red card
261261
func addsRedCard(gameEvent state.GameEvent_Type) bool {
262262
switch gameEvent {
263263
case
264264
state.GameEvent_DEFENDER_IN_DEFENSE_AREA,
265+
state.GameEvent_MULTIPLE_CARDS,
265266
state.GameEvent_UNSPORTING_BEHAVIOR_MAJOR:
266267
return true
267268
}

0 commit comments

Comments
 (0)