public override void ExposeData(ObjectSerializer serializer)
        {
            serializer.DataField(ref _possibleFightVerbs, "possibleFightVerbs", new List <string>()
            {
                "Defeat", "Annihilate", "Save", "Strike", "Stop", "Destroy", "Robust", "Romance", "Pwn", "Own"
            });
            serializer.DataField(ref _possibleFirstEnemyNames, "possibleFirstEnemyNames", new List <string>()
            {
                "the Automatic", "Farmer", "Lord", "Professor", "the Cuban", "the Evil", "the Dread King",
                "the Space", "Lord", "the Great", "Duke", "General"
            });
            serializer.DataField(ref _possibleLastEnemyNames, "possibleLastEnemyNames", new List <string>()
            {
                "Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid",
                "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn"
            });
            serializer.DataField(ref _possibleRewards, "possibleRewards", new List <string>()
            {
                "ToyMouse", "ToyAi", "ToyNuke", "ToyAssistant", "ToyGriffin", "ToyHonk", "ToyIan",
                "ToyMarauder", "ToyMauler", "ToyGygax", "ToyOdysseus", "ToyOwlman", "ToyDeathRipley",
                "ToyPhazon", "ToyFireRipley", "ToyReticence", "ToyRipley", "ToySeraph", "ToyDurand", "ToySkeleton"
            });

            _game = new SpaceVillainGame(this);
        }
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            if (!Powered)
            {
                return;
            }

            if (serverMsg.Message is not SpaceVillainArcadePlayerActionMessage msg)
            {
                return;
            }

            switch (msg.PlayerAction)
            {
            case PlayerAction.Attack:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.Heal:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.Recharge:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.NewGame:
                SoundSystem.Play(Filter.Pvs(Owner), _newGameSound.GetSound(), Owner, AudioParams.Default.WithVolume(-4f));

                _game = new SpaceVillainGame(this);
                UserInterface?.SendMessage(_game.GenerateMetaDataMessage());
                break;

            case PlayerAction.RequestData:
                UserInterface?.SendMessage(_game.GenerateMetaDataMessage());
                break;
            }
        }
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            if (!Powered)
            {
                return;
            }

            if (serverMsg.Message is not SpaceVillainArcadePlayerActionMessage msg)
            {
                return;
            }

            switch (msg.PlayerAction)
            {
            case PlayerAction.Attack:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.Heal:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.Recharge:
                _game?.ExecutePlayerAction(msg.PlayerAction);
                break;

            case PlayerAction.NewGame:
                EntitySystem.Get <AudioSystem>().PlayFromEntity("/Audio/Effects/Arcade/newgame.ogg", Owner, AudioParams.Default.WithVolume(-4f));
                _game = new SpaceVillainGame(this);
                UserInterface?.SendMessage(_game.GenerateMetaDataMessage());
                break;

            case PlayerAction.RequestData:
                UserInterface?.SendMessage(_game.GenerateMetaDataMessage());
                break;
            }
        }