Skip to content

Commit 8c312d9

Browse files
committed
Add hull color to referee message and GC UI
1 parent 6eddb26 commit 8c312d9

File tree

16 files changed

+512
-252
lines changed

16 files changed

+512
-252
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<script setup lang="ts">
2+
import {computed, inject} from "vue";
3+
import ButtonToggleInput from "@/components/common/ButtonToggleInput.vue";
4+
import {useMatchStateStore} from "@/store/matchState";
5+
import {type TeamJson} from "@/proto/state/ssl_gc_common_pb";
6+
import type {ControlApi} from "@/providers/controlApi";
7+
import {type HullColorJson} from "@/proto/state/ssl_gc_referee_message_pb";
8+
9+
const props = defineProps<{
10+
team: TeamJson,
11+
}>()
12+
13+
const store = useMatchStateStore()
14+
const control = inject<ControlApi>('control-api')
15+
16+
const model = computed(() => {
17+
return store.matchState.teamState?.[props.team].hullColor!
18+
})
19+
const options: { label: string, value: HullColorJson }[] = [
20+
{label: 'Dark', value: 'HULL_COLOR_DARK'},
21+
{label: 'Light', value: 'HULL_COLOR_LIGHT'},
22+
]
23+
24+
const onChange = (value: HullColorJson) => {
25+
control?.UpdateTeamState({
26+
forTeam: props.team,
27+
hullColor: value,
28+
})
29+
}
30+
</script>
31+
32+
<template>
33+
<ButtonToggleInput
34+
:modelValue="model"
35+
:options="options"
36+
@update:model-value="onChange"
37+
/>
38+
</template>

frontend/src/helpers/ChangeDetails.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ function teamStateChangeTitle(change: Change_UpdateTeamStateJson): string {
226226
return `Remove foul ${change.removeFoul}`
227227
} else if (change.botSubstitutionsLeft !== undefined) {
228228
return `Bot substitutions left: ${change.botSubstitutionsLeft}`
229+
} else if (change.hullColor !== undefined) {
230+
return `Change hull color: ${change.hullColor}`
229231
}
230232
return "Unknown team state change: " + JSON.stringify(change)
231233
}

frontend/src/proto/state/ssl_gc_referee_message_pb.ts

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf";
1212
* Describes the file state/ssl_gc_referee_message.proto.
1313
*/
1414
export const file_state_ssl_gc_referee_message: GenFile = /*@__PURE__*/
15-
fileDesc("CiJzdGF0ZS9zc2xfZ2NfcmVmZXJlZV9tZXNzYWdlLnByb3RvIrUOCgdSZWZlcmVlEhkKEXNvdXJjZV9pZGVudGlmaWVyGBIgASgJEi0KCm1hdGNoX3R5cGUYEyABKA4yCi5NYXRjaFR5cGU6DVVOS05PV05fTUFUQ0gSGAoQcGFja2V0X3RpbWVzdGFtcBgBIAIoBBIdCgVzdGFnZRgCIAIoDjIOLlJlZmVyZWUuU3RhZ2USFwoPc3RhZ2VfdGltZV9sZWZ0GAMgASgSEiEKB2NvbW1hbmQYBCACKA4yEC5SZWZlcmVlLkNvbW1hbmQSFwoPY29tbWFuZF9jb3VudGVyGAUgAigNEhkKEWNvbW1hbmRfdGltZXN0YW1wGAYgAigEEiEKBnllbGxvdxgHIAIoCzIRLlJlZmVyZWUuVGVhbUluZm8SHwoEYmx1ZRgIIAIoCzIRLlJlZmVyZWUuVGVhbUluZm8SKwoTZGVzaWduYXRlZF9wb3NpdGlvbhgJIAEoCzIOLlJlZmVyZWUuUG9pbnQSIgoaYmx1ZV90ZWFtX29uX3Bvc2l0aXZlX2hhbGYYCiABKAgSJgoMbmV4dF9jb21tYW5kGAwgASgOMhAuUmVmZXJlZS5Db21tYW5kEh8KC2dhbWVfZXZlbnRzGBAgAygLMgouR2FtZUV2ZW50EjUKFGdhbWVfZXZlbnRfcHJvcG9zYWxzGBEgAygLMhcuR2FtZUV2ZW50UHJvcG9zYWxHcm91cBIlCh1jdXJyZW50X2FjdGlvbl90aW1lX3JlbWFpbmluZxgPIAEoAxIWCg5zdGF0dXNfbWVzc2FnZRgUIAEoCRrEAwoIVGVhbUluZm8SDAoEbmFtZRgBIAIoCRINCgVzY29yZRgCIAIoDRIRCglyZWRfY2FyZHMYAyACKA0SHQoReWVsbG93X2NhcmRfdGltZXMYBCADKA1CAhABEhQKDHllbGxvd19jYXJkcxgFIAIoDRIQCgh0aW1lb3V0cxgGIAIoDRIUCgx0aW1lb3V0X3RpbWUYByACKA0SEgoKZ29hbGtlZXBlchgIIAIoDRIUCgxmb3VsX2NvdW50ZXIYCSABKA0SHwoXYmFsbF9wbGFjZW1lbnRfZmFpbHVyZXMYCiABKA0SFgoOY2FuX3BsYWNlX2JhbGwYDCABKAgSGAoQbWF4X2FsbG93ZWRfYm90cxgNIAEoDRIfChdib3Rfc3Vic3RpdHV0aW9uX2ludGVudBgOIAEoCBInCh9iYWxsX3BsYWNlbWVudF9mYWlsdXJlc19yZWFjaGVkGA8gASgIEiAKGGJvdF9zdWJzdGl0dXRpb25fYWxsb3dlZBgQIAEoCBIeChZib3Rfc3Vic3RpdHV0aW9uc19sZWZ0GBEgASgNEiIKGmJvdF9zdWJzdGl0dXRpb25fdGltZV9sZWZ0GBIgASgNGh0KBVBvaW50EgkKAXgYASACKAISCQoBeRgCIAIoAiLRAgoFU3RhZ2USGQoVTk9STUFMX0ZJUlNUX0hBTEZfUFJFEAASFQoRTk9STUFMX0ZJUlNUX0hBTEYQARIUChBOT1JNQUxfSEFMRl9USU1FEAISGgoWTk9STUFMX1NFQ09ORF9IQUxGX1BSRRADEhYKEk5PUk1BTF9TRUNPTkRfSEFMRhAEEhQKEEVYVFJBX1RJTUVfQlJFQUsQBRIYChRFWFRSQV9GSVJTVF9IQUxGX1BSRRAGEhQKEEVYVFJBX0ZJUlNUX0hBTEYQBxITCg9FWFRSQV9IQUxGX1RJTUUQCBIZChVFWFRSQV9TRUNPTkRfSEFMRl9QUkUQCRIVChFFWFRSQV9TRUNPTkRfSEFMRhAKEhoKFlBFTkFMVFlfU0hPT1RPVVRfQlJFQUsQCxIUChBQRU5BTFRZX1NIT09UT1VUEAwSDQoJUE9TVF9HQU1FEA0ilgMKB0NvbW1hbmQSCAoESEFMVBAAEggKBFNUT1AQARIQCgxOT1JNQUxfU1RBUlQQAhIPCgtGT1JDRV9TVEFSVBADEhoKFlBSRVBBUkVfS0lDS09GRl9ZRUxMT1cQBBIYChRQUkVQQVJFX0tJQ0tPRkZfQkxVRRAFEhoKFlBSRVBBUkVfUEVOQUxUWV9ZRUxMT1cQBhIYChRQUkVQQVJFX1BFTkFMVFlfQkxVRRAHEhYKEkRJUkVDVF9GUkVFX1lFTExPVxAIEhQKEERJUkVDVF9GUkVFX0JMVUUQCRIcChRJTkRJUkVDVF9GUkVFX1lFTExPVxAKGgIIARIaChJJTkRJUkVDVF9GUkVFX0JMVUUQCxoCCAESEgoOVElNRU9VVF9ZRUxMT1cQDBIQCgxUSU1FT1VUX0JMVUUQDRITCgtHT0FMX1lFTExPVxAOGgIIARIRCglHT0FMX0JMVUUQDxoCCAESGQoVQkFMTF9QTEFDRU1FTlRfWUVMTE9XEBASFwoTQkFMTF9QTEFDRU1FTlRfQkxVRRARSgQICxAMSgQIDRAOSgQIDhAPIlcKFkdhbWVFdmVudFByb3Bvc2FsR3JvdXASCgoCaWQYAyABKAkSHwoLZ2FtZV9ldmVudHMYASADKAsyCi5HYW1lRXZlbnQSEAoIYWNjZXB0ZWQYAiABKAgqVAoJTWF0Y2hUeXBlEhEKDVVOS05PV05fTUFUQ0gQABIPCgtHUk9VUF9QSEFTRRABEhUKEUVMSU1JTkFUSU9OX1BIQVNFEAISDAoIRlJJRU5ETFkQA0JbQhhTc2xHY1JlZmVyZWVNZXNzYWdlUHJvdG9QAVo9Z2l0aHViLmNvbS9Sb2JvQ3VwLVNTTC9zc2wtZ2FtZS1jb250cm9sbGVyL2ludGVybmFsL2FwcC9zdGF0ZQ", [file_state_ssl_gc_game_event]);
15+
fileDesc("CiJzdGF0ZS9zc2xfZ2NfcmVmZXJlZV9tZXNzYWdlLnByb3RvItUOCgdSZWZlcmVlEhkKEXNvdXJjZV9pZGVudGlmaWVyGBIgASgJEi0KCm1hdGNoX3R5cGUYEyABKA4yCi5NYXRjaFR5cGU6DVVOS05PV05fTUFUQ0gSGAoQcGFja2V0X3RpbWVzdGFtcBgBIAIoBBIdCgVzdGFnZRgCIAIoDjIOLlJlZmVyZWUuU3RhZ2USFwoPc3RhZ2VfdGltZV9sZWZ0GAMgASgSEiEKB2NvbW1hbmQYBCACKA4yEC5SZWZlcmVlLkNvbW1hbmQSFwoPY29tbWFuZF9jb3VudGVyGAUgAigNEhkKEWNvbW1hbmRfdGltZXN0YW1wGAYgAigEEiEKBnllbGxvdxgHIAIoCzIRLlJlZmVyZWUuVGVhbUluZm8SHwoEYmx1ZRgIIAIoCzIRLlJlZmVyZWUuVGVhbUluZm8SKwoTZGVzaWduYXRlZF9wb3NpdGlvbhgJIAEoCzIOLlJlZmVyZWUuUG9pbnQSIgoaYmx1ZV90ZWFtX29uX3Bvc2l0aXZlX2hhbGYYCiABKAgSJgoMbmV4dF9jb21tYW5kGAwgASgOMhAuUmVmZXJlZS5Db21tYW5kEh8KC2dhbWVfZXZlbnRzGBAgAygLMgouR2FtZUV2ZW50EjUKFGdhbWVfZXZlbnRfcHJvcG9zYWxzGBEgAygLMhcuR2FtZUV2ZW50UHJvcG9zYWxHcm91cBIlCh1jdXJyZW50X2FjdGlvbl90aW1lX3JlbWFpbmluZxgPIAEoAxIWCg5zdGF0dXNfbWVzc2FnZRgUIAEoCRrkAwoIVGVhbUluZm8SDAoEbmFtZRgBIAIoCRINCgVzY29yZRgCIAIoDRIRCglyZWRfY2FyZHMYAyACKA0SHQoReWVsbG93X2NhcmRfdGltZXMYBCADKA1CAhABEhQKDHllbGxvd19jYXJkcxgFIAIoDRIQCgh0aW1lb3V0cxgGIAIoDRIUCgx0aW1lb3V0X3RpbWUYByACKA0SEgoKZ29hbGtlZXBlchgIIAIoDRIUCgxmb3VsX2NvdW50ZXIYCSABKA0SHwoXYmFsbF9wbGFjZW1lbnRfZmFpbHVyZXMYCiABKA0SFgoOY2FuX3BsYWNlX2JhbGwYDCABKAgSGAoQbWF4X2FsbG93ZWRfYm90cxgNIAEoDRIfChdib3Rfc3Vic3RpdHV0aW9uX2ludGVudBgOIAEoCBInCh9iYWxsX3BsYWNlbWVudF9mYWlsdXJlc19yZWFjaGVkGA8gASgIEiAKGGJvdF9zdWJzdGl0dXRpb25fYWxsb3dlZBgQIAEoCBIeChZib3Rfc3Vic3RpdHV0aW9uc19sZWZ0GBEgASgNEiIKGmJvdF9zdWJzdGl0dXRpb25fdGltZV9sZWZ0GBIgASgNEh4KCmh1bGxfY29sb3IYEyABKA4yCi5IdWxsQ29sb3IaHQoFUG9pbnQSCQoBeBgBIAIoAhIJCgF5GAIgAigCItECCgVTdGFnZRIZChVOT1JNQUxfRklSU1RfSEFMRl9QUkUQABIVChFOT1JNQUxfRklSU1RfSEFMRhABEhQKEE5PUk1BTF9IQUxGX1RJTUUQAhIaChZOT1JNQUxfU0VDT05EX0hBTEZfUFJFEAMSFgoSTk9STUFMX1NFQ09ORF9IQUxGEAQSFAoQRVhUUkFfVElNRV9CUkVBSxAFEhgKFEVYVFJBX0ZJUlNUX0hBTEZfUFJFEAYSFAoQRVhUUkFfRklSU1RfSEFMRhAHEhMKD0VYVFJBX0hBTEZfVElNRRAIEhkKFUVYVFJBX1NFQ09ORF9IQUxGX1BSRRAJEhUKEUVYVFJBX1NFQ09ORF9IQUxGEAoSGgoWUEVOQUxUWV9TSE9PVE9VVF9CUkVBSxALEhQKEFBFTkFMVFlfU0hPT1RPVVQQDBINCglQT1NUX0dBTUUQDSKWAwoHQ29tbWFuZBIICgRIQUxUEAASCAoEU1RPUBABEhAKDE5PUk1BTF9TVEFSVBACEg8KC0ZPUkNFX1NUQVJUEAMSGgoWUFJFUEFSRV9LSUNLT0ZGX1lFTExPVxAEEhgKFFBSRVBBUkVfS0lDS09GRl9CTFVFEAUSGgoWUFJFUEFSRV9QRU5BTFRZX1lFTExPVxAGEhgKFFBSRVBBUkVfUEVOQUxUWV9CTFVFEAcSFgoSRElSRUNUX0ZSRUVfWUVMTE9XEAgSFAoQRElSRUNUX0ZSRUVfQkxVRRAJEhwKFElORElSRUNUX0ZSRUVfWUVMTE9XEAoaAggBEhoKEklORElSRUNUX0ZSRUVfQkxVRRALGgIIARISCg5USU1FT1VUX1lFTExPVxAMEhAKDFRJTUVPVVRfQkxVRRANEhMKC0dPQUxfWUVMTE9XEA4aAggBEhEKCUdPQUxfQkxVRRAPGgIIARIZChVCQUxMX1BMQUNFTUVOVF9ZRUxMT1cQEBIXChNCQUxMX1BMQUNFTUVOVF9CTFVFEBFKBAgLEAxKBAgNEA5KBAgOEA8iVwoWR2FtZUV2ZW50UHJvcG9zYWxHcm91cBIKCgJpZBgDIAEoCRIfCgtnYW1lX2V2ZW50cxgBIAMoCzIKLkdhbWVFdmVudBIQCghhY2NlcHRlZBgCIAEoCCpUCglNYXRjaFR5cGUSEQoNVU5LTk9XTl9NQVRDSBAAEg8KC0dST1VQX1BIQVNFEAESFQoRRUxJTUlOQVRJT05fUEhBU0UQAhIMCghGUklFTkRMWRADKk4KCUh1bGxDb2xvchIWChJIVUxMX0NPTE9SX1VOS05PV04QABITCg9IVUxMX0NPTE9SX0RBUksQARIUChBIVUxMX0NPTE9SX0xJR0hUEAJCW0IYU3NsR2NSZWZlcmVlTWVzc2FnZVByb3RvUAFaPWdpdGh1Yi5jb20vUm9ib0N1cC1TU0wvc3NsLWdhbWUtY29udHJvbGxlci9pbnRlcm5hbC9hcHAvc3RhdGU", [file_state_ssl_gc_game_event]);
1616

1717
/**
1818
* Each UDP packet contains one of these messages.
@@ -422,6 +422,13 @@ export type Referee_TeamInfo = Message<"Referee.TeamInfo"> & {
422422
* @generated from field: optional uint32 bot_substitution_time_left = 18;
423423
*/
424424
botSubstitutionTimeLeft: number;
425+
426+
/**
427+
* The color of the hull of the robots of this team
428+
*
429+
* @generated from field: optional HullColor hull_color = 19;
430+
*/
431+
hullColor: HullColor;
425432
};
426433

427434
/**
@@ -551,6 +558,13 @@ export type Referee_TeamInfoJson = {
551558
* @generated from field: optional uint32 bot_substitution_time_left = 18;
552559
*/
553560
botSubstitutionTimeLeft?: number;
561+
562+
/**
563+
* The color of the hull of the robots of this team
564+
*
565+
* @generated from field: optional HullColor hull_color = 19;
566+
*/
567+
hullColor?: HullColorJson;
554568
};
555569

556570
/**
@@ -998,3 +1012,44 @@ export type MatchTypeJson = "UNKNOWN_MATCH" | "GROUP_PHASE" | "ELIMINATION_PHASE
9981012
export const MatchTypeSchema: GenEnum<MatchType, MatchTypeJson> = /*@__PURE__*/
9991013
enumDesc(file_state_ssl_gc_referee_message, 0);
10001014

1015+
/**
1016+
* HullColor is the color of the hull of the robots of a team
1017+
*
1018+
* @generated from enum HullColor
1019+
*/
1020+
export enum HullColor {
1021+
/**
1022+
* not set
1023+
*
1024+
* @generated from enum value: HULL_COLOR_UNKNOWN = 0;
1025+
*/
1026+
UNKNOWN = 0,
1027+
1028+
/**
1029+
* dark hull color
1030+
*
1031+
* @generated from enum value: HULL_COLOR_DARK = 1;
1032+
*/
1033+
DARK = 1,
1034+
1035+
/**
1036+
* light hull color
1037+
*
1038+
* @generated from enum value: HULL_COLOR_LIGHT = 2;
1039+
*/
1040+
LIGHT = 2,
1041+
}
1042+
1043+
/**
1044+
* HullColor is the color of the hull of the robots of a team
1045+
*
1046+
* @generated from enum HullColor
1047+
*/
1048+
export type HullColorJson = "HULL_COLOR_UNKNOWN" | "HULL_COLOR_DARK" | "HULL_COLOR_LIGHT";
1049+
1050+
/**
1051+
* Describes the enum HullColor.
1052+
*/
1053+
export const HullColorSchema: GenEnum<HullColor, HullColorJson> = /*@__PURE__*/
1054+
enumDesc(file_state_ssl_gc_referee_message, 1);
1055+

frontend/src/proto/state/ssl_gc_state_pb.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { Vector2, Vector2Json } from "../geom/ssl_gc_geometry_pb";
1010
import { file_geom_ssl_gc_geometry } from "../geom/ssl_gc_geometry_pb";
1111
import type { GameEvent, GameEventJson } from "./ssl_gc_game_event_pb";
1212
import { file_state_ssl_gc_game_event } from "./ssl_gc_game_event_pb";
13-
import type { MatchType, MatchTypeJson, Referee_Stage, Referee_StageJson } from "./ssl_gc_referee_message_pb";
13+
import type { HullColor, HullColorJson, MatchType, MatchTypeJson, Referee_Stage, Referee_StageJson } from "./ssl_gc_referee_message_pb";
1414
import { file_state_ssl_gc_referee_message } from "./ssl_gc_referee_message_pb";
1515
import type { Duration, DurationJson, Timestamp, TimestampJson } from "@bufbuild/protobuf/wkt";
1616
import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
@@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
2020
* Describes the file state/ssl_gc_state.proto.
2121
*/
2222
export const file_state_ssl_gc_state: GenFile = /*@__PURE__*/
23-
fileDesc("ChhzdGF0ZS9zc2xfZ2Nfc3RhdGUucHJvdG8idQoKWWVsbG93Q2FyZBIKCgJpZBgBIAEoDRIoChRjYXVzZWRfYnlfZ2FtZV9ldmVudBgCIAEoCzIKLkdhbWVFdmVudBIxCg50aW1lX3JlbWFpbmluZxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiI/CgdSZWRDYXJkEgoKAmlkGAEgASgNEigKFGNhdXNlZF9ieV9nYW1lX2V2ZW50GAIgASgLMgouR2FtZUV2ZW50ImsKBEZvdWwSCgoCaWQYASABKA0SKAoUY2F1c2VkX2J5X2dhbWVfZXZlbnQYAiABKAsyCi5HYW1lRXZlbnQSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLZAQoHQ29tbWFuZBIbCgR0eXBlGAEgAigOMg0uQ29tbWFuZC5UeXBlEhcKCGZvcl90ZWFtGAIgAigOMgUuVGVhbSKXAQoEVHlwZRILCgdVTktOT1dOEAASCAoESEFMVBABEggKBFNUT1AQAhIQCgxOT1JNQUxfU1RBUlQQAxIPCgtGT1JDRV9TVEFSVBAEEgoKBkRJUkVDVBAFEgsKB0tJQ0tPRkYQBxILCgdQRU5BTFRZEAgSCwoHVElNRU9VVBAJEhIKDkJBTExfUExBQ0VNRU5UEAoiBAgGEAYiwwEKCUdhbWVTdGF0ZRIdCgR0eXBlGAEgAigOMg8uR2FtZVN0YXRlLlR5cGUSFwoIZm9yX3RlYW0YAiABKA4yBS5UZWFtIn4KBFR5cGUSCwoHVU5LTk9XThAAEggKBEhBTFQQARIICgRTVE9QEAISCwoHUlVOTklORxADEg0KCUZSRUVfS0lDSxAEEgsKB0tJQ0tPRkYQBRILCgdQRU5BTFRZEAYSCwoHVElNRU9VVBAHEhIKDkJBTExfUExBQ0VNRU5UEAgiWQoIUHJvcG9zYWwSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIeCgpnYW1lX2V2ZW50GAIgASgLMgouR2FtZUV2ZW50IlEKDVByb3Bvc2FsR3JvdXASCgoCaWQYBCABKAkSHAoJcHJvcG9zYWxzGAEgAygLMgkuUHJvcG9zYWwSEAoIYWNjZXB0ZWQYAiABKAhKBAgDEAQi0gUKCFRlYW1JbmZvEgwKBG5hbWUYASABKAkSDQoFZ29hbHMYAiABKAUSEgoKZ29hbGtlZXBlchgDIAEoBRIhCgx5ZWxsb3dfY2FyZHMYBCADKAsyCy5ZZWxsb3dDYXJkEhsKCXJlZF9jYXJkcxgFIAMoCzIILlJlZENhcmQSFQoNdGltZW91dHNfbGVmdBgGIAEoBRI0ChF0aW1lb3V0X3RpbWVfbGVmdBgHIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIYChBvbl9wb3NpdGl2ZV9oYWxmGAggASgIEhQKBWZvdWxzGAkgAygLMgUuRm91bBIfChdiYWxsX3BsYWNlbWVudF9mYWlsdXJlcxgKIAEoBRInCh9iYWxsX3BsYWNlbWVudF9mYWlsdXJlc19yZWFjaGVkGAsgASgIEhYKDmNhbl9wbGFjZV9iYWxsGAwgASgIEhgKEG1heF9hbGxvd2VkX2JvdHMYDSABKAUSQwofcmVxdWVzdHNfYm90X3N1YnN0aXR1dGlvbl9zaW5jZRgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoWcmVxdWVzdHNfdGltZW91dF9zaW5jZRgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQodcmVxdWVzdHNfZW1lcmdlbmN5X3N0b3Bfc2luY2UYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NoYWxsZW5nZV9mbGFncxgRIAEoBRIgChhib3Rfc3Vic3RpdHV0aW9uX2FsbG93ZWQYEiABKAgSHgoWYm90X3N1YnN0aXR1dGlvbnNfbGVmdBgTIAEoBRI9Chpib3Rfc3Vic3RpdHV0aW9uX3RpbWVfbGVmdBgUIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiKxBgoFU3RhdGUSHQoFc3RhZ2UYASABKA4yDi5SZWZlcmVlLlN0YWdlEhkKB2NvbW1hbmQYAiABKAsyCC5Db21tYW5kEh4KCmdhbWVfc3RhdGUYEyABKAsyCi5HYW1lU3RhdGUSNQoSc3RhZ2VfdGltZV9lbGFwc2VkGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjIKD3N0YWdlX3RpbWVfbGVmdBgFIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI0ChBtYXRjaF90aW1lX3N0YXJ0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgp0ZWFtX3N0YXRlGAggAygLMhUuU3RhdGUuVGVhbVN0YXRlRW50cnkSHwoNcGxhY2VtZW50X3BvcxgJIAEoCzIILlZlY3RvcjISHgoMbmV4dF9jb21tYW5kGAogASgLMgguQ29tbWFuZBJACh1jdXJyZW50X2FjdGlvbl90aW1lX3JlbWFpbmluZxgMIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIfCgtnYW1lX2V2ZW50cxgNIAMoCzIKLkdhbWVFdmVudBInCg9wcm9wb3NhbF9ncm91cHMYDiADKAsyDi5Qcm9wb3NhbEdyb3VwEhsKCGRpdmlzaW9uGA8gASgOMgkuRGl2aXNpb24SIQoSZmlyc3Rfa2lja29mZl90ZWFtGBEgASgOMgUuVGVhbRIeCgptYXRjaF90eXBlGBIgASgOMgouTWF0Y2hUeXBlEjcKE3JlYWR5X2NvbnRpbnVlX3RpbWUYFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKDnNob290b3V0X3N0YXRlGBUgASgLMg4uU2hvb3RvdXRTdGF0ZRIWCg5zdGF0dXNfbWVzc2FnZRgWIAEoCRIZChFtYXhfYm90c19wZXJfdGVhbRgXIAEoBRo7Cg5UZWFtU3RhdGVFbnRyeRILCgNrZXkYASABKAkSGAoFdmFsdWUYAiABKAsyCS5UZWFtSW5mbzoCOAFKBAgQEBEipAEKDVNob290b3V0U3RhdGUSGAoJbmV4dF90ZWFtGAEgASgOMgUuVGVhbRJAChJudW1iZXJfb2ZfYXR0ZW1wdHMYAiADKAsyJC5TaG9vdG91dFN0YXRlLk51bWJlck9mQXR0ZW1wdHNFbnRyeRo3ChVOdW1iZXJPZkF0dGVtcHRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4AUJSQg9Tc2xHY1N0YXRlUHJvdG9QAVo9Z2l0aHViLmNvbS9Sb2JvQ3VwLVNTTC9zc2wtZ2FtZS1jb250cm9sbGVyL2ludGVybmFsL2FwcC9zdGF0ZQ", [file_state_ssl_gc_common, file_geom_ssl_gc_geometry, file_state_ssl_gc_game_event, file_state_ssl_gc_referee_message, file_google_protobuf_duration, file_google_protobuf_timestamp]);
23+
fileDesc("ChhzdGF0ZS9zc2xfZ2Nfc3RhdGUucHJvdG8idQoKWWVsbG93Q2FyZBIKCgJpZBgBIAEoDRIoChRjYXVzZWRfYnlfZ2FtZV9ldmVudBgCIAEoCzIKLkdhbWVFdmVudBIxCg50aW1lX3JlbWFpbmluZxgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiI/CgdSZWRDYXJkEgoKAmlkGAEgASgNEigKFGNhdXNlZF9ieV9nYW1lX2V2ZW50GAIgASgLMgouR2FtZUV2ZW50ImsKBEZvdWwSCgoCaWQYASABKA0SKAoUY2F1c2VkX2J5X2dhbWVfZXZlbnQYAiABKAsyCi5HYW1lRXZlbnQSLQoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLZAQoHQ29tbWFuZBIbCgR0eXBlGAEgAigOMg0uQ29tbWFuZC5UeXBlEhcKCGZvcl90ZWFtGAIgAigOMgUuVGVhbSKXAQoEVHlwZRILCgdVTktOT1dOEAASCAoESEFMVBABEggKBFNUT1AQAhIQCgxOT1JNQUxfU1RBUlQQAxIPCgtGT1JDRV9TVEFSVBAEEgoKBkRJUkVDVBAFEgsKB0tJQ0tPRkYQBxILCgdQRU5BTFRZEAgSCwoHVElNRU9VVBAJEhIKDkJBTExfUExBQ0VNRU5UEAoiBAgGEAYiwwEKCUdhbWVTdGF0ZRIdCgR0eXBlGAEgAigOMg8uR2FtZVN0YXRlLlR5cGUSFwoIZm9yX3RlYW0YAiABKA4yBS5UZWFtIn4KBFR5cGUSCwoHVU5LTk9XThAAEggKBEhBTFQQARIICgRTVE9QEAISCwoHUlVOTklORxADEg0KCUZSRUVfS0lDSxAEEgsKB0tJQ0tPRkYQBRILCgdQRU5BTFRZEAYSCwoHVElNRU9VVBAHEhIKDkJBTExfUExBQ0VNRU5UEAgiWQoIUHJvcG9zYWwSLQoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIeCgpnYW1lX2V2ZW50GAIgASgLMgouR2FtZUV2ZW50IlEKDVByb3Bvc2FsR3JvdXASCgoCaWQYBCABKAkSHAoJcHJvcG9zYWxzGAEgAygLMgkuUHJvcG9zYWwSEAoIYWNjZXB0ZWQYAiABKAhKBAgDEAQi8gUKCFRlYW1JbmZvEgwKBG5hbWUYASABKAkSDQoFZ29hbHMYAiABKAUSEgoKZ29hbGtlZXBlchgDIAEoBRIhCgx5ZWxsb3dfY2FyZHMYBCADKAsyCy5ZZWxsb3dDYXJkEhsKCXJlZF9jYXJkcxgFIAMoCzIILlJlZENhcmQSFQoNdGltZW91dHNfbGVmdBgGIAEoBRI0ChF0aW1lb3V0X3RpbWVfbGVmdBgHIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIYChBvbl9wb3NpdGl2ZV9oYWxmGAggASgIEhQKBWZvdWxzGAkgAygLMgUuRm91bBIfChdiYWxsX3BsYWNlbWVudF9mYWlsdXJlcxgKIAEoBRInCh9iYWxsX3BsYWNlbWVudF9mYWlsdXJlc19yZWFjaGVkGAsgASgIEhYKDmNhbl9wbGFjZV9iYWxsGAwgASgIEhgKEG1heF9hbGxvd2VkX2JvdHMYDSABKAUSQwofcmVxdWVzdHNfYm90X3N1YnN0aXR1dGlvbl9zaW5jZRgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoWcmVxdWVzdHNfdGltZW91dF9zaW5jZRgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQodcmVxdWVzdHNfZW1lcmdlbmN5X3N0b3Bfc2luY2UYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2NoYWxsZW5nZV9mbGFncxgRIAEoBRIgChhib3Rfc3Vic3RpdHV0aW9uX2FsbG93ZWQYEiABKAgSHgoWYm90X3N1YnN0aXR1dGlvbnNfbGVmdBgTIAEoBRI9Chpib3Rfc3Vic3RpdHV0aW9uX3RpbWVfbGVmdBgUIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIeCgpodWxsX2NvbG9yGBUgASgOMgouSHVsbENvbG9yIrEGCgVTdGF0ZRIdCgVzdGFnZRgBIAEoDjIOLlJlZmVyZWUuU3RhZ2USGQoHY29tbWFuZBgCIAEoCzIILkNvbW1hbmQSHgoKZ2FtZV9zdGF0ZRgTIAEoCzIKLkdhbWVTdGF0ZRI1ChJzdGFnZV90aW1lX2VsYXBzZWQYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SMgoPc3RhZ2VfdGltZV9sZWZ0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjQKEG1hdGNoX3RpbWVfc3RhcnQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEikKCnRlYW1fc3RhdGUYCCADKAsyFS5TdGF0ZS5UZWFtU3RhdGVFbnRyeRIfCg1wbGFjZW1lbnRfcG9zGAkgASgLMgguVmVjdG9yMhIeCgxuZXh0X2NvbW1hbmQYCiABKAsyCC5Db21tYW5kEkAKHWN1cnJlbnRfYWN0aW9uX3RpbWVfcmVtYWluaW5nGAwgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEh8KC2dhbWVfZXZlbnRzGA0gAygLMgouR2FtZUV2ZW50EicKD3Byb3Bvc2FsX2dyb3VwcxgOIAMoCzIOLlByb3Bvc2FsR3JvdXASGwoIZGl2aXNpb24YDyABKA4yCS5EaXZpc2lvbhIhChJmaXJzdF9raWNrb2ZmX3RlYW0YESABKA4yBS5UZWFtEh4KCm1hdGNoX3R5cGUYEiABKA4yCi5NYXRjaFR5cGUSNwoTcmVhZHlfY29udGludWVfdGltZRgUIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJgoOc2hvb3RvdXRfc3RhdGUYFSABKAsyDi5TaG9vdG91dFN0YXRlEhYKDnN0YXR1c19tZXNzYWdlGBYgASgJEhkKEW1heF9ib3RzX3Blcl90ZWFtGBcgASgFGjsKDlRlYW1TdGF0ZUVudHJ5EgsKA2tleRgBIAEoCRIYCgV2YWx1ZRgCIAEoCzIJLlRlYW1JbmZvOgI4AUoECBAQESKkAQoNU2hvb3RvdXRTdGF0ZRIYCgluZXh0X3RlYW0YASABKA4yBS5UZWFtEkAKEm51bWJlcl9vZl9hdHRlbXB0cxgCIAMoCzIkLlNob290b3V0U3RhdGUuTnVtYmVyT2ZBdHRlbXB0c0VudHJ5GjcKFU51bWJlck9mQXR0ZW1wdHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBQlJCD1NzbEdjU3RhdGVQcm90b1ABWj1naXRodWIuY29tL1JvYm9DdXAtU1NML3NzbC1nYW1lLWNvbnRyb2xsZXIvaW50ZXJuYWwvYXBwL3N0YXRl", [file_state_ssl_gc_common, file_geom_ssl_gc_geometry, file_state_ssl_gc_game_event, file_state_ssl_gc_referee_message, file_google_protobuf_duration, file_google_protobuf_timestamp]);
2424

2525
/**
2626
* @generated from message YellowCard
@@ -561,6 +561,11 @@ export type TeamInfo = Message<"TeamInfo"> & {
561561
* @generated from field: optional google.protobuf.Duration bot_substitution_time_left = 20;
562562
*/
563563
botSubstitutionTimeLeft?: Duration;
564+
565+
/**
566+
* @generated from field: optional HullColor hull_color = 21;
567+
*/
568+
hullColor: HullColor;
564569
};
565570

566571
/**
@@ -666,6 +671,11 @@ export type TeamInfoJson = {
666671
* @generated from field: optional google.protobuf.Duration bot_substitution_time_left = 20;
667672
*/
668673
botSubstitutionTimeLeft?: DurationJson;
674+
675+
/**
676+
* @generated from field: optional HullColor hull_color = 21;
677+
*/
678+
hullColor?: HullColorJson;
669679
};
670680

671681
/**

0 commit comments

Comments
 (0)