Skip to content

Commit c584355

Browse files
committed
Add a "Fail Ballplacement" option to ssl-remote-control
1 parent 244533e commit c584355

File tree

4 files changed

+129
-80
lines changed

4 files changed

+129
-80
lines changed

frontend/src/proto/rcon/ssl_gc_rcon_remotecontrol_pb.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
1414
* Describes the file rcon/ssl_gc_rcon_remotecontrol.proto.
1515
*/
1616
export const file_rcon_ssl_gc_rcon_remotecontrol: GenFile = /*@__PURE__*/
17-
fileDesc("CiRyY29uL3NzbF9nY19yY29uX3JlbW90ZWNvbnRyb2wucHJvdG8iTwoZUmVtb3RlQ29udHJvbFJlZ2lzdHJhdGlvbhITCgR0ZWFtGAEgAigOMgUuVGVhbRIdCglzaWduYXR1cmUYAiABKAsyCi5TaWduYXR1cmUivQIKGVJlbW90ZUNvbnRyb2xUb0NvbnRyb2xsZXISHQoJc2lnbmF0dXJlGAEgASgLMgouU2lnbmF0dXJlEjUKB3JlcXVlc3QYAiABKA4yIi5SZW1vdGVDb250cm9sVG9Db250cm9sbGVyLlJlcXVlc3RIABIYCg5kZXNpcmVkX2tlZXBlchgDIAEoBUgAEiQKGnJlcXVlc3Rfcm9ib3Rfc3Vic3RpdHV0aW9uGAQgASgISAASGQoPcmVxdWVzdF90aW1lb3V0GAUgASgISAASIAoWcmVxdWVzdF9lbWVyZ2VuY3lfc3RvcBgGIAEoCEgAIkYKB1JlcXVlc3QSCwoHVU5LTk9XThAAEggKBFBJTkcQARISCg5DSEFMTEVOR0VfRkxBRxACEhAKDFNUT1BfVElNRU9VVBADQgUKA21zZyJvChlDb250cm9sbGVyVG9SZW1vdGVDb250cm9sEioKEGNvbnRyb2xsZXJfcmVwbHkYASABKAsyEC5Db250cm9sbGVyUmVwbHkSJgoFc3RhdGUYAiABKAsyFy5SZW1vdGVDb250cm9sVGVhbVN0YXRlIr8DChZSZW1vdGVDb250cm9sVGVhbVN0YXRlEhMKBHRlYW0YDCABKA4yBS5UZWFtEjUKEmF2YWlsYWJsZV9yZXF1ZXN0cxgBIAMoDjIZLlJlbW90ZUNvbnRyb2xSZXF1ZXN0VHlwZRIyCg9hY3RpdmVfcmVxdWVzdHMYAiADKA4yGS5SZW1vdGVDb250cm9sUmVxdWVzdFR5cGUSEQoJa2VlcGVyX2lkGAMgASgFEhkKEWVtZXJnZW5jeV9zdG9wX2luGAQgASgCEhUKDXRpbWVvdXRzX2xlZnQYBSABKAUSGQoRdGltZW91dF90aW1lX2xlZnQYCiABKAISHAoUY2hhbGxlbmdlX2ZsYWdzX2xlZnQYBiABKAUSEgoKbWF4X3JvYm90cxgHIAEoBRIXCg9yb2JvdHNfb25fZmllbGQYCSABKAUSGAoQeWVsbG93X2NhcmRzX2R1ZRgIIAMoAhIcChRjYW5fc3Vic3RpdHV0ZV9yb2JvdBgLIAEoCBIeChZib3Rfc3Vic3RpdHV0aW9uc19sZWZ0GA0gASgNEiIKGmJvdF9zdWJzdGl0dXRpb25fdGltZV9sZWZ0GA4gASgCKqkBChhSZW1vdGVDb250cm9sUmVxdWVzdFR5cGUSGAoUVU5LTk9XTl9SRVFVRVNUX1RZUEUQABISCg5FTUVSR0VOQ1lfU1RPUBABEhYKElJPQk9UX1NVQlNUSVRVVElPThACEgsKB1RJTUVPVVQQAxISCg5DSEFMTEVOR0VfRkxBRxAEEhQKEENIQU5HRV9LRUVQRVJfSUQQBRIQCgxTVE9QX1RJTUVPVVQQBkJdQhtTc2xHY1Jjb25SZW1vdGVjb250cm9sUHJvdG9QAVo8Z2l0aHViLmNvbS9Sb2JvQ3VwLVNTTC9zc2wtZ2FtZS1jb250cm9sbGVyL2ludGVybmFsL2FwcC9yY29u", [file_state_ssl_gc_common, file_rcon_ssl_gc_rcon]);
17+
fileDesc("CiRyY29uL3NzbF9nY19yY29uX3JlbW90ZWNvbnRyb2wucHJvdG8iTwoZUmVtb3RlQ29udHJvbFJlZ2lzdHJhdGlvbhITCgR0ZWFtGAEgAigOMgUuVGVhbRIdCglzaWduYXR1cmUYAiABKAsyCi5TaWduYXR1cmUi1QIKGVJlbW90ZUNvbnRyb2xUb0NvbnRyb2xsZXISHQoJc2lnbmF0dXJlGAEgASgLMgouU2lnbmF0dXJlEjUKB3JlcXVlc3QYAiABKA4yIi5SZW1vdGVDb250cm9sVG9Db250cm9sbGVyLlJlcXVlc3RIABIYCg5kZXNpcmVkX2tlZXBlchgDIAEoBUgAEiQKGnJlcXVlc3Rfcm9ib3Rfc3Vic3RpdHV0aW9uGAQgASgISAASGQoPcmVxdWVzdF90aW1lb3V0GAUgASgISAASIAoWcmVxdWVzdF9lbWVyZ2VuY3lfc3RvcBgGIAEoCEgAIl4KB1JlcXVlc3QSCwoHVU5LTk9XThAAEggKBFBJTkcQARISCg5DSEFMTEVOR0VfRkxBRxACEhAKDFNUT1BfVElNRU9VVBADEhYKEkZBSUxfQkFMTFBMQUNFTUVOVBAEQgUKA21zZyJvChlDb250cm9sbGVyVG9SZW1vdGVDb250cm9sEioKEGNvbnRyb2xsZXJfcmVwbHkYASABKAsyEC5Db250cm9sbGVyUmVwbHkSJgoFc3RhdGUYAiABKAsyFy5SZW1vdGVDb250cm9sVGVhbVN0YXRlIr8DChZSZW1vdGVDb250cm9sVGVhbVN0YXRlEhMKBHRlYW0YDCABKA4yBS5UZWFtEjUKEmF2YWlsYWJsZV9yZXF1ZXN0cxgBIAMoDjIZLlJlbW90ZUNvbnRyb2xSZXF1ZXN0VHlwZRIyCg9hY3RpdmVfcmVxdWVzdHMYAiADKA4yGS5SZW1vdGVDb250cm9sUmVxdWVzdFR5cGUSEQoJa2VlcGVyX2lkGAMgASgFEhkKEWVtZXJnZW5jeV9zdG9wX2luGAQgASgCEhUKDXRpbWVvdXRzX2xlZnQYBSABKAUSGQoRdGltZW91dF90aW1lX2xlZnQYCiABKAISHAoUY2hhbGxlbmdlX2ZsYWdzX2xlZnQYBiABKAUSEgoKbWF4X3JvYm90cxgHIAEoBRIXCg9yb2JvdHNfb25fZmllbGQYCSABKAUSGAoQeWVsbG93X2NhcmRzX2R1ZRgIIAMoAhIcChRjYW5fc3Vic3RpdHV0ZV9yb2JvdBgLIAEoCBIeChZib3Rfc3Vic3RpdHV0aW9uc19sZWZ0GA0gASgNEiIKGmJvdF9zdWJzdGl0dXRpb25fdGltZV9sZWZ0GA4gASgCKsEBChhSZW1vdGVDb250cm9sUmVxdWVzdFR5cGUSGAoUVU5LTk9XTl9SRVFVRVNUX1RZUEUQABISCg5FTUVSR0VOQ1lfU1RPUBABEhYKElJPQk9UX1NVQlNUSVRVVElPThACEgsKB1RJTUVPVVQQAxISCg5DSEFMTEVOR0VfRkxBRxAEEhQKEENIQU5HRV9LRUVQRVJfSUQQBRIQCgxTVE9QX1RJTUVPVVQQBhIWChJGQUlMX0JBTExQTEFDRU1FTlQQB0JdQhtTc2xHY1Jjb25SZW1vdGVjb250cm9sUHJvdG9QAVo8Z2l0aHViLmNvbS9Sb2JvQ3VwLVNTTC9zc2wtZ2FtZS1jb250cm9sbGVyL2ludGVybmFsL2FwcC9yY29u", [file_state_ssl_gc_common, file_rcon_ssl_gc_rcon]);
1818

1919
/**
2020
* a registration that must be send by the remote control to the controller as the very first message
@@ -83,8 +83,7 @@ export type RemoteControlToController = Message<"RemoteControlToController"> & {
8383
*/
8484
msg: {
8585
/**
86-
* send a ping to the GC to test if the connection is still open.
87-
* the value is ignored and a reply is sent back
86+
* send a request to the GC
8887
*
8988
* @generated from field: RemoteControlToController.Request request = 2;
9089
*/
@@ -142,8 +141,7 @@ export type RemoteControlToControllerJson = {
142141
signature?: SignatureJson;
143142

144143
/**
145-
* send a ping to the GC to test if the connection is still open.
146-
* the value is ignored and a reply is sent back
144+
* send a request to the GC
147145
*
148146
* @generated from field: RemoteControlToController.Request request = 2;
149147
*/
@@ -217,12 +215,19 @@ export enum RemoteControlToController_Request {
217215
* @generated from enum value: STOP_TIMEOUT = 3;
218216
*/
219217
STOP_TIMEOUT = 3,
218+
219+
/**
220+
* Fail a ball placement
221+
*
222+
* @generated from enum value: FAIL_BALLPLACEMENT = 4;
223+
*/
224+
FAIL_BALLPLACEMENT = 4,
220225
}
221226

222227
/**
223228
* @generated from enum RemoteControlToController.Request
224229
*/
225-
export type RemoteControlToController_RequestJson = "UNKNOWN" | "PING" | "CHALLENGE_FLAG" | "STOP_TIMEOUT";
230+
export type RemoteControlToController_RequestJson = "UNKNOWN" | "PING" | "CHALLENGE_FLAG" | "STOP_TIMEOUT" | "FAIL_BALLPLACEMENT";
226231

227232
/**
228233
* Describes the enum RemoteControlToController.Request.
@@ -538,14 +543,19 @@ export enum RemoteControlRequestType {
538543
* @generated from enum value: STOP_TIMEOUT = 6;
539544
*/
540545
STOP_TIMEOUT = 6,
546+
547+
/**
548+
* @generated from enum value: FAIL_BALLPLACEMENT = 7;
549+
*/
550+
FAIL_BALLPLACEMENT = 7,
541551
}
542552

543553
/**
544554
* All possible request types that the remote control can make
545555
*
546556
* @generated from enum RemoteControlRequestType
547557
*/
548-
export type RemoteControlRequestTypeJson = "UNKNOWN_REQUEST_TYPE" | "EMERGENCY_STOP" | "ROBOT_SUBSTITUTION" | "TIMEOUT" | "CHALLENGE_FLAG" | "CHANGE_KEEPER_ID" | "STOP_TIMEOUT";
558+
export type RemoteControlRequestTypeJson = "UNKNOWN_REQUEST_TYPE" | "EMERGENCY_STOP" | "ROBOT_SUBSTITUTION" | "TIMEOUT" | "CHALLENGE_FLAG" | "CHANGE_KEEPER_ID" | "STOP_TIMEOUT" | "FAIL_BALLPLACEMENT";
549559

550560
/**
551561
* Describes the enum RemoteControlRequestType.

internal/app/rcon/server_remotecontrol.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ func (c *RemoteControlClient) findAvailableRequestTypes() []RemoteControlRequest
247247
if c.checkChangeKeeper() == nil {
248248
availableRequests = append(availableRequests, RemoteControlRequestType_CHANGE_KEEPER_ID)
249249
}
250+
if c.checkFailBallPlacement() == nil {
251+
availableRequests = append(availableRequests, RemoteControlRequestType_FAIL_BALLPLACEMENT)
252+
}
250253
return availableRequests
251254
}
252255

@@ -277,6 +280,14 @@ func (c *RemoteControlClient) checkStopTimeout() error {
277280
return errors.New("Timeout not active for team")
278281
}
279282

283+
func (c *RemoteControlClient) checkFailBallPlacement() error {
284+
gameState := c.gcEngine.CurrentState().GameState
285+
if *gameState.Type == state.GameState_BALL_PLACEMENT && *gameState.ForTeam == *c.team {
286+
return nil
287+
}
288+
return errors.New("Ball placement not active for team")
289+
}
290+
280291
func (c *RemoteControlClient) checkRequestRobotSubstitution() error {
281292
return nil
282293
}
@@ -376,6 +387,23 @@ func (c *RemoteControlClient) processRequest(request *RemoteControlToController)
376387
return nil
377388
}
378389

390+
if request.GetRequest() == RemoteControlToController_FAIL_BALLPLACEMENT {
391+
if err := c.checkFailBallPlacement(); err != nil {
392+
return errors.Wrap(err, "Can not fail ballplacement")
393+
}
394+
eventType := state.GameEvent_PLACEMENT_FAILED
395+
c.gcEngine.EnqueueGameEvent(&state.GameEvent{
396+
Type: &eventType,
397+
Origin: []string{*c.origin()},
398+
Event: &state.GameEvent_PlacementFailed_{
399+
PlacementFailed: &state.GameEvent_PlacementFailed{
400+
ByTeam: c.team,
401+
},
402+
},
403+
})
404+
return nil
405+
}
406+
379407
if x, ok := request.GetMsg().(*RemoteControlToController_RequestEmergencyStop); ok {
380408
emergencyStopRequested := teamState.RequestsEmergencyStopSince != nil
381409
if emergencyStopRequested != x.RequestEmergencyStop {

0 commit comments

Comments
 (0)