Skip to content

Commit f8e96b0

Browse files
committed
Feature: Show disabled autoRef game events as change
1 parent b3c8717 commit f8e96b0

File tree

7 files changed

+407
-104
lines changed

7 files changed

+407
-104
lines changed

internal/app/engine/engine.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,9 @@ func NewEngine(gameConfig config.Game, engineConfig config.Engine) (e *Engine) {
6464

6565
// Enqueue adds the change to the change queue
6666
func (e *Engine) Enqueue(change *statemachine.Change) {
67-
if change.GetAddGameEvent() != nil {
68-
for t, b := range e.config.GameEventBehavior {
69-
if b == Config_GAME_EVENT_BEHAVIOR_OFF && change.GetAddGameEvent().GameEvent.Type.String() == t {
70-
// disabled game event
71-
return
72-
}
73-
}
67+
if change.GetAddGameEvent() != nil && !e.IsGameEventEnabled(*change.GetAddGameEvent().GameEvent.Type) {
68+
log.Printf("Ignoring disabled game event %v", change.GetAddGameEvent().GameEvent)
69+
return
7470
}
7571
if change.Revertible == nil {
7672
change.Revertible = new(bool)

internal/app/engine/proposals.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ func (e *Engine) EnqueueGameEvent(gameEvent *state.GameEvent) {
1919
origin := gameEvent.Origin[0]
2020

2121
if !e.config.AutoRefConfigs[origin].GameEventEnabled[gameEvent.Type.String()] {
22-
log.Printf("Ignoring disabled game event for %v: %v", origin, *gameEvent)
22+
e.Enqueue(&statemachine.Change{
23+
Origin: &origin,
24+
Change: &statemachine.Change_AddPassiveGameEvent{
25+
AddPassiveGameEvent: &statemachine.AddPassiveGameEvent{
26+
GameEvent: gameEvent,
27+
},
28+
},
29+
})
2330
return
2431
}
2532

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package statemachine
2+
3+
import (
4+
"log"
5+
)
6+
7+
func (s *StateMachine) processChangeAddPassiveGameEvent(change *AddPassiveGameEvent) (changes []*Change) {
8+
log.Printf("Ignoring passive game event %v", change.GameEvent)
9+
return
10+
}

internal/app/statemachine/ssl_gc_change.pb.go

Lines changed: 151 additions & 94 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/app/statemachine/statemachine.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ func (s *StateMachine) Process(currentState *state.State, change *Change) (newSt
7777
newChanges = s.processChangeSwitchColors(newState)
7878
} else if change.GetAddGameEvent() != nil {
7979
newChanges = s.processChangeAddGameEvent(newState, change.GetAddGameEvent())
80+
} else if change.GetAddPassiveGameEvent() != nil {
81+
newChanges = s.processChangeAddPassiveGameEvent(change.GetAddPassiveGameEvent())
8082
} else if change.GetStartBallPlacement() != nil {
8183
newChanges = s.processChangeStartBallPlacement(newState)
8284
} else if change.GetContinue() != nil {

proto/ssl_gc_change.proto

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ message Change {
3030
AddRedCard add_red_card = 6;
3131
YellowCardOver yellow_card_over = 7;
3232
AddGameEvent add_game_event = 8;
33+
AddPassiveGameEvent add_passive_game_event = 19;
3334
AddProposedGameEvent add_proposed_game_event = 9;
3435
StartBallPlacement start_ball_placement = 10;
3536
Continue continue = 11;
@@ -72,6 +73,10 @@ message AddGameEvent {
7273
optional GameEvent game_event = 1;
7374
}
7475

76+
message AddPassiveGameEvent {
77+
optional GameEvent game_event = 1;
78+
}
79+
7580
message AddProposedGameEvent {
7681
optional GameEventProposal proposal = 1;
7782
}

src/proto.js

Lines changed: 228 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14434,6 +14434,7 @@ export const Change = $root.Change = (() => {
1443414434
* @property {IAddRedCard|null} [addRedCard] Change addRedCard
1443514435
* @property {IYellowCardOver|null} [yellowCardOver] Change yellowCardOver
1443614436
* @property {IAddGameEvent|null} [addGameEvent] Change addGameEvent
14437+
* @property {IAddPassiveGameEvent|null} [addPassiveGameEvent] Change addPassiveGameEvent
1443714438
* @property {IAddProposedGameEvent|null} [addProposedGameEvent] Change addProposedGameEvent
1443814439
* @property {IStartBallPlacement|null} [startBallPlacement] Change startBallPlacement
1443914440
* @property {IContinue|null} ["continue"] Change continue
@@ -14532,6 +14533,14 @@ export const Change = $root.Change = (() => {
1453214533
*/
1453314534
Change.prototype.addGameEvent = null;
1453414535

14536+
/**
14537+
* Change addPassiveGameEvent.
14538+
* @member {IAddPassiveGameEvent|null|undefined} addPassiveGameEvent
14539+
* @memberof Change
14540+
* @instance
14541+
*/
14542+
Change.prototype.addPassiveGameEvent = null;
14543+
1453514544
/**
1453614545
* Change addProposedGameEvent.
1453714546
* @member {IAddProposedGameEvent|null|undefined} addProposedGameEvent
@@ -14609,12 +14618,12 @@ export const Change = $root.Change = (() => {
1460914618

1461014619
/**
1461114620
* Change change.
14612-
* @member {"newCommand"|"changeStage"|"setBallPlacementPos"|"addYellowCard"|"addRedCard"|"yellowCardOver"|"addGameEvent"|"addProposedGameEvent"|"startBallPlacement"|"continue"|"updateConfig"|"updateTeamState"|"switchColors"|"revert"|"newGameState"|"acceptGameEventProposals"|undefined} change
14621+
* @member {"newCommand"|"changeStage"|"setBallPlacementPos"|"addYellowCard"|"addRedCard"|"yellowCardOver"|"addGameEvent"|"addPassiveGameEvent"|"addProposedGameEvent"|"startBallPlacement"|"continue"|"updateConfig"|"updateTeamState"|"switchColors"|"revert"|"newGameState"|"acceptGameEventProposals"|undefined} change
1461314622
* @memberof Change
1461414623
* @instance
1461514624
*/
1461614625
Object.defineProperty(Change.prototype, "change", {
14617-
get: $util.oneOfGetter($oneOfFields = ["newCommand", "changeStage", "setBallPlacementPos", "addYellowCard", "addRedCard", "yellowCardOver", "addGameEvent", "addProposedGameEvent", "startBallPlacement", "continue", "updateConfig", "updateTeamState", "switchColors", "revert", "newGameState", "acceptGameEventProposals"]),
14626+
get: $util.oneOfGetter($oneOfFields = ["newCommand", "changeStage", "setBallPlacementPos", "addYellowCard", "addRedCard", "yellowCardOver", "addGameEvent", "addPassiveGameEvent", "addProposedGameEvent", "startBallPlacement", "continue", "updateConfig", "updateTeamState", "switchColors", "revert", "newGameState", "acceptGameEventProposals"]),
1461814627
set: $util.oneOfSetter($oneOfFields)
1461914628
});
1462014629

@@ -14678,6 +14687,8 @@ export const Change = $root.Change = (() => {
1467814687
$root.NewGameState.encode(message.newGameState, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();
1467914688
if (message.acceptGameEventProposals != null && message.hasOwnProperty("acceptGameEventProposals"))
1468014689
$root.AcceptGameEventProposals.encode(message.acceptGameEventProposals, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();
14690+
if (message.addPassiveGameEvent != null && message.hasOwnProperty("addPassiveGameEvent"))
14691+
$root.AddPassiveGameEvent.encode(message.addPassiveGameEvent, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim();
1468114692
return writer;
1468214693
};
1468314694

@@ -14739,6 +14750,9 @@ export const Change = $root.Change = (() => {
1473914750
case 8:
1474014751
message.addGameEvent = $root.AddGameEvent.decode(reader, reader.uint32());
1474114752
break;
14753+
case 19:
14754+
message.addPassiveGameEvent = $root.AddPassiveGameEvent.decode(reader, reader.uint32());
14755+
break;
1474214756
case 9:
1474314757
message.addProposedGameEvent = $root.AddProposedGameEvent.decode(reader, reader.uint32());
1474414758
break;
@@ -14876,6 +14890,16 @@ export const Change = $root.Change = (() => {
1487614890
return "addGameEvent." + error;
1487714891
}
1487814892
}
14893+
if (message.addPassiveGameEvent != null && message.hasOwnProperty("addPassiveGameEvent")) {
14894+
if (properties.change === 1)
14895+
return "change: multiple values";
14896+
properties.change = 1;
14897+
{
14898+
let error = $root.AddPassiveGameEvent.verify(message.addPassiveGameEvent);
14899+
if (error)
14900+
return "addPassiveGameEvent." + error;
14901+
}
14902+
}
1487914903
if (message.addProposedGameEvent != null && message.hasOwnProperty("addProposedGameEvent")) {
1488014904
if (properties.change === 1)
1488114905
return "change: multiple values";
@@ -15020,6 +15044,11 @@ export const Change = $root.Change = (() => {
1502015044
throw TypeError(".Change.addGameEvent: object expected");
1502115045
message.addGameEvent = $root.AddGameEvent.fromObject(object.addGameEvent);
1502215046
}
15047+
if (object.addPassiveGameEvent != null) {
15048+
if (typeof object.addPassiveGameEvent !== "object")
15049+
throw TypeError(".Change.addPassiveGameEvent: object expected");
15050+
message.addPassiveGameEvent = $root.AddPassiveGameEvent.fromObject(object.addPassiveGameEvent);
15051+
}
1502315052
if (object.addProposedGameEvent != null) {
1502415053
if (typeof object.addProposedGameEvent !== "object")
1502515054
throw TypeError(".Change.addProposedGameEvent: object expected");
@@ -15169,6 +15198,11 @@ export const Change = $root.Change = (() => {
1516915198
if (options.oneofs)
1517015199
object.change = "acceptGameEventProposals";
1517115200
}
15201+
if (message.addPassiveGameEvent != null && message.hasOwnProperty("addPassiveGameEvent")) {
15202+
object.addPassiveGameEvent = $root.AddPassiveGameEvent.toObject(message.addPassiveGameEvent, options);
15203+
if (options.oneofs)
15204+
object.change = "addPassiveGameEvent";
15205+
}
1517215206
return object;
1517315207
};
1517415208

@@ -16693,6 +16727,198 @@ export const AddGameEvent = $root.AddGameEvent = (() => {
1669316727
return AddGameEvent;
1669416728
})();
1669516729

16730+
export const AddPassiveGameEvent = $root.AddPassiveGameEvent = (() => {
16731+
16732+
/**
16733+
* Properties of an AddPassiveGameEvent.
16734+
* @exports IAddPassiveGameEvent
16735+
* @interface IAddPassiveGameEvent
16736+
* @property {IGameEvent|null} [gameEvent] AddPassiveGameEvent gameEvent
16737+
*/
16738+
16739+
/**
16740+
* Constructs a new AddPassiveGameEvent.
16741+
* @exports AddPassiveGameEvent
16742+
* @classdesc Represents an AddPassiveGameEvent.
16743+
* @implements IAddPassiveGameEvent
16744+
* @constructor
16745+
* @param {IAddPassiveGameEvent=} [properties] Properties to set
16746+
*/
16747+
function AddPassiveGameEvent(properties) {
16748+
if (properties)
16749+
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
16750+
if (properties[keys[i]] != null)
16751+
this[keys[i]] = properties[keys[i]];
16752+
}
16753+
16754+
/**
16755+
* AddPassiveGameEvent gameEvent.
16756+
* @member {IGameEvent|null|undefined} gameEvent
16757+
* @memberof AddPassiveGameEvent
16758+
* @instance
16759+
*/
16760+
AddPassiveGameEvent.prototype.gameEvent = null;
16761+
16762+
/**
16763+
* Creates a new AddPassiveGameEvent instance using the specified properties.
16764+
* @function create
16765+
* @memberof AddPassiveGameEvent
16766+
* @static
16767+
* @param {IAddPassiveGameEvent=} [properties] Properties to set
16768+
* @returns {AddPassiveGameEvent} AddPassiveGameEvent instance
16769+
*/
16770+
AddPassiveGameEvent.create = function create(properties) {
16771+
return new AddPassiveGameEvent(properties);
16772+
};
16773+
16774+
/**
16775+
* Encodes the specified AddPassiveGameEvent message. Does not implicitly {@link AddPassiveGameEvent.verify|verify} messages.
16776+
* @function encode
16777+
* @memberof AddPassiveGameEvent
16778+
* @static
16779+
* @param {IAddPassiveGameEvent} message AddPassiveGameEvent message or plain object to encode
16780+
* @param {$protobuf.Writer} [writer] Writer to encode to
16781+
* @returns {$protobuf.Writer} Writer
16782+
*/
16783+
AddPassiveGameEvent.encode = function encode(message, writer) {
16784+
if (!writer)
16785+
writer = $Writer.create();
16786+
if (message.gameEvent != null && message.hasOwnProperty("gameEvent"))
16787+
$root.GameEvent.encode(message.gameEvent, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
16788+
return writer;
16789+
};
16790+
16791+
/**
16792+
* Encodes the specified AddPassiveGameEvent message, length delimited. Does not implicitly {@link AddPassiveGameEvent.verify|verify} messages.
16793+
* @function encodeDelimited
16794+
* @memberof AddPassiveGameEvent
16795+
* @static
16796+
* @param {IAddPassiveGameEvent} message AddPassiveGameEvent message or plain object to encode
16797+
* @param {$protobuf.Writer} [writer] Writer to encode to
16798+
* @returns {$protobuf.Writer} Writer
16799+
*/
16800+
AddPassiveGameEvent.encodeDelimited = function encodeDelimited(message, writer) {
16801+
return this.encode(message, writer).ldelim();
16802+
};
16803+
16804+
/**
16805+
* Decodes an AddPassiveGameEvent message from the specified reader or buffer.
16806+
* @function decode
16807+
* @memberof AddPassiveGameEvent
16808+
* @static
16809+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
16810+
* @param {number} [length] Message length if known beforehand
16811+
* @returns {AddPassiveGameEvent} AddPassiveGameEvent
16812+
* @throws {Error} If the payload is not a reader or valid buffer
16813+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
16814+
*/
16815+
AddPassiveGameEvent.decode = function decode(reader, length) {
16816+
if (!(reader instanceof $Reader))
16817+
reader = $Reader.create(reader);
16818+
let end = length === undefined ? reader.len : reader.pos + length, message = new $root.AddPassiveGameEvent();
16819+
while (reader.pos < end) {
16820+
let tag = reader.uint32();
16821+
switch (tag >>> 3) {
16822+
case 1:
16823+
message.gameEvent = $root.GameEvent.decode(reader, reader.uint32());
16824+
break;
16825+
default:
16826+
reader.skipType(tag & 7);
16827+
break;
16828+
}
16829+
}
16830+
return message;
16831+
};
16832+
16833+
/**
16834+
* Decodes an AddPassiveGameEvent message from the specified reader or buffer, length delimited.
16835+
* @function decodeDelimited
16836+
* @memberof AddPassiveGameEvent
16837+
* @static
16838+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
16839+
* @returns {AddPassiveGameEvent} AddPassiveGameEvent
16840+
* @throws {Error} If the payload is not a reader or valid buffer
16841+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
16842+
*/
16843+
AddPassiveGameEvent.decodeDelimited = function decodeDelimited(reader) {
16844+
if (!(reader instanceof $Reader))
16845+
reader = new $Reader(reader);
16846+
return this.decode(reader, reader.uint32());
16847+
};
16848+
16849+
/**
16850+
* Verifies an AddPassiveGameEvent message.
16851+
* @function verify
16852+
* @memberof AddPassiveGameEvent
16853+
* @static
16854+
* @param {Object.<string,*>} message Plain object to verify
16855+
* @returns {string|null} `null` if valid, otherwise the reason why it is not
16856+
*/
16857+
AddPassiveGameEvent.verify = function verify(message) {
16858+
if (typeof message !== "object" || message === null)
16859+
return "object expected";
16860+
if (message.gameEvent != null && message.hasOwnProperty("gameEvent")) {
16861+
let error = $root.GameEvent.verify(message.gameEvent);
16862+
if (error)
16863+
return "gameEvent." + error;
16864+
}
16865+
return null;
16866+
};
16867+
16868+
/**
16869+
* Creates an AddPassiveGameEvent message from a plain object. Also converts values to their respective internal types.
16870+
* @function fromObject
16871+
* @memberof AddPassiveGameEvent
16872+
* @static
16873+
* @param {Object.<string,*>} object Plain object
16874+
* @returns {AddPassiveGameEvent} AddPassiveGameEvent
16875+
*/
16876+
AddPassiveGameEvent.fromObject = function fromObject(object) {
16877+
if (object instanceof $root.AddPassiveGameEvent)
16878+
return object;
16879+
let message = new $root.AddPassiveGameEvent();
16880+
if (object.gameEvent != null) {
16881+
if (typeof object.gameEvent !== "object")
16882+
throw TypeError(".AddPassiveGameEvent.gameEvent: object expected");
16883+
message.gameEvent = $root.GameEvent.fromObject(object.gameEvent);
16884+
}
16885+
return message;
16886+
};
16887+
16888+
/**
16889+
* Creates a plain object from an AddPassiveGameEvent message. Also converts values to other types if specified.
16890+
* @function toObject
16891+
* @memberof AddPassiveGameEvent
16892+
* @static
16893+
* @param {AddPassiveGameEvent} message AddPassiveGameEvent
16894+
* @param {$protobuf.IConversionOptions} [options] Conversion options
16895+
* @returns {Object.<string,*>} Plain object
16896+
*/
16897+
AddPassiveGameEvent.toObject = function toObject(message, options) {
16898+
if (!options)
16899+
options = {};
16900+
let object = {};
16901+
if (options.defaults)
16902+
object.gameEvent = null;
16903+
if (message.gameEvent != null && message.hasOwnProperty("gameEvent"))
16904+
object.gameEvent = $root.GameEvent.toObject(message.gameEvent, options);
16905+
return object;
16906+
};
16907+
16908+
/**
16909+
* Converts this AddPassiveGameEvent to JSON.
16910+
* @function toJSON
16911+
* @memberof AddPassiveGameEvent
16912+
* @instance
16913+
* @returns {Object.<string,*>} JSON object
16914+
*/
16915+
AddPassiveGameEvent.prototype.toJSON = function toJSON() {
16916+
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
16917+
};
16918+
16919+
return AddPassiveGameEvent;
16920+
})();
16921+
1669616922
export const AddProposedGameEvent = $root.AddProposedGameEvent = (() => {
1669716923

1669816924
/**

0 commit comments

Comments
 (0)