Skip to content

Commit fb9c700

Browse files
committed
[feature] Allow settings all event behaviors at once
1 parent 9d1ffb4 commit fb9c700

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

internal/app/controller/engine.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,13 @@ func (e *Engine) processModify(m *EventModifyValue) error {
547547
e.GcState.FirstKickoffTeam = Team(*m.FirstKickoffTeam)
548548
e.updateNextCommandForStage()
549549
} else if m.GameEventBehavior != nil {
550-
e.GcState.GameEventBehavior[m.GameEventBehavior.GameEventType] = m.GameEventBehavior.GameEventBehavior
550+
if m.GameEventBehavior.GameEventType == GameEventAll {
551+
for i := range e.GcState.GameEventBehavior {
552+
e.GcState.GameEventBehavior[i] = m.GameEventBehavior.GameEventBehavior
553+
}
554+
} else {
555+
e.GcState.GameEventBehavior[m.GameEventBehavior.GameEventType] = m.GameEventBehavior.GameEventBehavior
556+
}
551557
} else if m.RemoveGameEvent != nil {
552558
i := *m.RemoveGameEvent
553559
if i >= len(e.State.GameEvents) {

internal/app/controller/gameEvent.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type GameEventType string
1313

1414
const (
1515
GameEventNone GameEventType = ""
16+
GameEventAll GameEventType = "all"
1617

1718
GameEventPrepared GameEventType = "prepared"
1819
GameEventNoProgressInGame GameEventType = "noProgressInGame"

src/components/settings/EventBehavior.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,30 @@
11
<template>
22
<div class="game-controller-container">
33
<table>
4+
<tr>
5+
<td align="left"><b>All</b></td>
6+
<td>
7+
<div class="btn-group-toggle btn-group">
8+
<label :class="{btn:true, 'btn-secondary': true, active: allBehaviorsAre('on')}"
9+
@click="changeAllBehaviorsTo('on')">
10+
On
11+
</label>
12+
<label :class="{btn:true, 'btn-secondary': true, active: allBehaviorsAre('majority')}"
13+
@click="changeAllBehaviorsTo('majority')">
14+
Majority
15+
</label>
16+
<label :class="{btn:true, 'btn-secondary': true, active: allBehaviorsAre('off')}"
17+
@click="changeAllBehaviorsTo('off')">
18+
Off
19+
</label>
20+
</div>
21+
</td>
22+
</tr>
23+
<tr>
24+
<td colspan="2">
25+
<hr>
26+
</td>
27+
</tr>
428
<tr v-for="eventType in eventTypes" :key="eventType">
529
<td align="left">{{eventType}}</td>
630
<td>
@@ -43,6 +67,17 @@
4367
this.$socket.sendObj({
4468
'modify': {'gameEventBehavior': {gameEventType: eventType, gameEventBehavior: eventBehavior}}
4569
})
70+
},
71+
allBehaviorsAre(value) {
72+
for (let behavior in Object.values(this.gcState.gameEventBehavior)) {
73+
if (behavior !== value) {
74+
return false;
75+
}
76+
}
77+
return true;
78+
},
79+
changeAllBehaviorsTo(eventBehavior) {
80+
this.changeBehavior('all', eventBehavior);
4681
}
4782
}
4883
}

0 commit comments

Comments
 (0)