+
Cockatrice is an open source project. { new Date().getUTCFullYear() }
+ {
+ serverProps.REACT_APP_VERSION && (
+
+ Version: { serverProps.REACT_APP_VERSION }
+
+ )
+ }
diff --git a/webclient/src/services/ServerProps.ts b/webclient/src/services/ServerProps.ts
new file mode 100644
index 00000000..0d8c3d65
--- /dev/null
+++ b/webclient/src/services/ServerProps.ts
@@ -0,0 +1,9 @@
+import props from '../server-props.json';
+
+class ServerProps {
+ get REACT_APP_VERSION() {
+ return props?.REACT_APP_VERSION;
+ }
+}
+
+export const serverProps = new ServerProps();
diff --git a/webclient/src/services/index.ts b/webclient/src/services/index.ts
index 05cacc92..ebebeb65 100644
--- a/webclient/src/services/index.ts
+++ b/webclient/src/services/index.ts
@@ -1,2 +1,3 @@
export * from './CardImporterService';
+export * from './ServerProps';
export * from './dexie';
diff --git a/webclient/src/websocket/ProtoFiles.ts b/webclient/src/websocket/ProtoFiles.ts
deleted file mode 100644
index 10360cd1..00000000
--- a/webclient/src/websocket/ProtoFiles.ts
+++ /dev/null
@@ -1,156 +0,0 @@
-const ProtoFiles = [
- 'admin_commands.proto',
- 'card_attributes.proto',
- 'color.proto',
- 'command_attach_card.proto',
- 'command_change_zone_properties.proto',
- 'command_concede.proto',
- 'command_create_arrow.proto',
- 'command_create_counter.proto',
- 'command_create_token.proto',
- 'command_deck_del.proto',
- 'command_deck_del_dir.proto',
- 'command_deck_download.proto',
- 'command_deck_list.proto',
- 'command_deck_new_dir.proto',
- 'command_deck_select.proto',
- 'command_deck_upload.proto',
- 'command_del_counter.proto',
- 'command_delete_arrow.proto',
- 'command_draw_cards.proto',
- 'command_dump_zone.proto',
- 'command_flip_card.proto',
- 'command_game_say.proto',
- 'command_inc_card_counter.proto',
- 'command_inc_counter.proto',
- 'command_kick_from_game.proto',
- 'command_leave_game.proto',
- 'command_move_card.proto',
- 'command_mulligan.proto',
- 'command_next_turn.proto',
- 'command_ready_start.proto',
- 'command_replay_delete_match.proto',
- 'command_replay_download.proto',
- 'command_replay_list.proto',
- 'command_replay_modify_match.proto',
- 'command_reveal_cards.proto',
- 'command_roll_die.proto',
- 'command_set_active_phase.proto',
- 'command_set_card_attr.proto',
- 'command_set_card_counter.proto',
- 'command_set_counter.proto',
- 'command_set_sideboard_lock.proto',
- 'command_set_sideboard_plan.proto',
- 'command_shuffle.proto',
- 'command_undo_draw.proto',
- 'commands.proto',
- 'context_concede.proto',
- 'context_connection_state_changed.proto',
- 'context_deck_select.proto',
- 'context_move_card.proto',
- 'context_mulligan.proto',
- 'context_ping_changed.proto',
- 'context_ready_start.proto',
- 'context_set_sideboard_lock.proto',
- 'context_undo_draw.proto',
- 'event_add_to_list.proto',
- 'event_attach_card.proto',
- 'event_change_zone_properties.proto',
- 'event_connection_closed.proto',
- 'event_create_arrow.proto',
- 'event_create_counter.proto',
- 'event_create_token.proto',
- 'event_del_counter.proto',
- 'event_delete_arrow.proto',
- 'event_destroy_card.proto',
- 'event_draw_cards.proto',
- 'event_dump_zone.proto',
- 'event_flip_card.proto',
- 'event_game_closed.proto',
- 'event_game_host_changed.proto',
- 'event_game_joined.proto',
- 'event_game_say.proto',
- 'event_game_state_changed.proto',
- 'event_join.proto',
- 'event_join_room.proto',
- 'event_kicked.proto',
- 'event_leave.proto',
- 'event_leave_room.proto',
- 'event_list_games.proto',
- 'event_list_rooms.proto',
- 'event_move_card.proto',
- 'event_notify_user.proto',
- 'event_player_properties_changed.proto',
- 'event_remove_from_list.proto',
- 'event_replay_added.proto',
- 'event_reveal_cards.proto',
- 'event_roll_die.proto',
- 'event_room_say.proto',
- 'event_server_complete_list.proto',
- 'event_server_identification.proto',
- 'event_server_message.proto',
- 'event_server_shutdown.proto',
- 'event_set_active_phase.proto',
- 'event_set_active_player.proto',
- 'event_set_card_attr.proto',
- 'event_set_card_counter.proto',
- 'event_set_counter.proto',
- 'event_shuffle.proto',
- 'event_user_joined.proto',
- 'event_user_left.proto',
- 'event_user_message.proto',
- 'game_commands.proto',
- 'game_event.proto',
- 'game_event_container.proto',
- 'game_event_context.proto',
- 'game_replay.proto',
- 'isl_message.proto',
- 'moderator_commands.proto',
- 'move_card_to_zone.proto',
- 'response.proto',
- 'response_activate.proto',
- 'response_adjust_mod.proto',
- 'response_ban_history.proto',
- 'response_deck_download.proto',
- 'response_deck_list.proto',
- 'response_deck_upload.proto',
- 'response_dump_zone.proto',
- 'response_forgotpasswordrequest.proto',
- 'response_get_games_of_user.proto',
- 'response_get_user_info.proto',
- 'response_join_room.proto',
- 'response_list_users.proto',
- 'response_login.proto',
- 'response_password_salt.proto',
- 'response_register.proto',
- 'response_replay_download.proto',
- 'response_replay_list.proto',
- 'response_viewlog_history.proto',
- 'response_warn_history.proto',
- 'response_warn_list.proto',
- 'room_commands.proto',
- 'room_event.proto',
- 'server_message.proto',
- 'serverinfo_arrow.proto',
- 'serverinfo_ban.proto',
- 'serverinfo_card.proto',
- 'serverinfo_cardcounter.proto',
- 'serverinfo_chat_message.proto',
- 'serverinfo_counter.proto',
- 'serverinfo_deckstorage.proto',
- 'serverinfo_game.proto',
- 'serverinfo_gametype.proto',
- 'serverinfo_player.proto',
- 'serverinfo_playerping.proto',
- 'serverinfo_playerproperties.proto',
- 'serverinfo_replay.proto',
- 'serverinfo_replay_match.proto',
- 'serverinfo_room.proto',
- 'serverinfo_user.proto',
- 'serverinfo_warning.proto',
- 'serverinfo_zone.proto',
- 'session_commands.proto',
- 'session_event.proto',
-];
-
-export default ProtoFiles;
diff --git a/webclient/src/websocket/services/ProtobufService.ts b/webclient/src/websocket/services/ProtobufService.ts
index 4a659a18..155959bc 100644
--- a/webclient/src/websocket/services/ProtobufService.ts
+++ b/webclient/src/websocket/services/ProtobufService.ts
@@ -1,10 +1,10 @@
import protobuf from 'protobufjs';
-import ProtoFiles from '../ProtoFiles';
-import { WebClient } from '../WebClient';
-
import { RoomEvents, SessionEvents } from '../events';
import { SessionPersistence } from '../persistence';
+import { WebClient } from '../WebClient';
+
+import ProtoFiles from '../../proto-files.json';
export interface ProtobufEvents {
[event: string]: Function;