Ejemplo n.º 1
0
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (obj.Session.AttachedEntity == null)
            {
                return;
            }

            switch (obj.Message)
            {
            case IdButtonPressedMessage msg:
                switch (msg.Button)
                {
                case UiButton.PrivilegedId:
                    HandleId(obj.Session.AttachedEntity, _privilegedIdContainer);
                    break;

                case UiButton.TargetId:
                    HandleId(obj.Session.AttachedEntity, _targetIdContainer);
                    break;
                }
                break;

            case WriteToTargetIdMessage msg:
                TryWriteToTargetId(msg.FullName, msg.JobTitle, msg.AccessList);
                break;
            }

            UpdateUserInterface();
        }
Ejemplo n.º 2
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            switch (message.Message)
            {
            case PDARequestUpdateInterfaceMessage msg:
            {
                UpdatePDAUserInterface();
                break;
            }

            case PDAToggleFlashlightMessage msg:
            {
                ToggleLight();
                break;
            }

            case PDAEjectIDMessage msg:
            {
                HandleIDEjection(message.Session.AttachedEntity);
                break;
            }

            case PDAUplinkBuyListingMessage buyMsg:
            {
                if (!_uplinkManager.TryPurchaseItem(_syndicateUplinkAccount, buyMsg.ListingToBuy))
                {
                    SendNetworkMessage(new PDAUplinkInsufficientFundsMessage(), message.Session.ConnectedClient);
                    break;
                }

                SendNetworkMessage(new PDAUplinkBuySuccessMessage(), message.Session.ConnectedClient);
                break;
            }
            }
        }
Ejemplo n.º 3
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            var message = serverMsg.Message;

            switch (message)
            {
            case GasAnalyzerRefreshMessage msg:
                var player = serverMsg.Session.AttachedEntity;
                if (player == null)
                {
                    return;
                }

                if (!player.TryGetComponent(out IHandsComponent? handsComponent))
                {
                    Owner.PopupMessage(player, Loc.GetString("You have no hands."));
                    return;
                }

                var activeHandEntity = handsComponent.GetActiveHand?.Owner;
                if (activeHandEntity == null || !activeHandEntity.TryGetComponent(out GasAnalyzerComponent? gasAnalyzer))
                {
                    serverMsg.Session.AttachedEntity.PopupMessage(Loc.GetString("You need a Gas Analyzer in your hand!"));
                    return;
                }

                UpdateUserInterface();
                Resync();
                break;
            }
        }
Ejemplo n.º 4
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            var message = serverMsg.Message;

            switch (message)
            {
            case GasAnalyzerRefreshMessage msg:
                if (serverMsg.Session.AttachedEntity is not {
                    Valid: true
                } player)
                {
                    return;
                }

                if (!_entities.TryGetComponent(player, out HandsComponent? handsComponent))
                {
                    Owner.PopupMessage(player, Loc.GetString("gas-analyzer-component-player-has-no-hands-message"));
                    return;
                }

                if (handsComponent.ActiveHandEntity is not {
                    Valid: true
                } activeHandEntity ||
                    !_entities.TryGetComponent(activeHandEntity, out GasAnalyzerComponent? gasAnalyzer))
                {
                    serverMsg.Session.AttachedEntity.Value.PopupMessage(Loc.GetString("gas-analyzer-component-need-gas-analyzer-in-hand-message"));
                    return;
                }

                UpdateUserInterface();
                Resync();
                break;
            }
        }
Ejemplo n.º 5
0
 private void UserInterfaceOnClosed(ServerBoundUserInterfaceMessage obj)
 {
     if (!Handheld && obj.Session.ConnectedClient == _instrumentPlayer)
     {
         _instrumentPlayer = null;
         SendNetworkMessage(new InstrumentStopMidiMessage());
     }
 }
        /// <summary>
        /// Handles ui messages from the client. For things such as button presses
        /// which interact with the world and require server action.
        /// </summary>
        /// <param name="obj">A user interface message from the client.</param>
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (obj.Session.AttachedEntity is not {
                Valid : true
            } player)
            {
                return;
            }

            var msg        = (UiActionMessage)obj.Message;
            var needsPower = msg.Action switch
            {
                UiAction.Eject => false,
                _ => true,
            };

            if (!PlayerCanUseChemMaster(player, needsPower))
            {
                return;
            }

            switch (msg.Action)
            {
            case UiAction.Eject:
                EntitySystem.Get <ItemSlotsSystem>().TryEjectToHands(Owner, BeakerSlot, player);
                break;

            case UiAction.ChemButton:
                TransferReagent(msg.Id, msg.Amount, msg.IsBuffer);
                break;

            case UiAction.Transfer:
                _bufferModeTransfer = true;
                UpdateUserInterface();
                break;

            case UiAction.Discard:
                _bufferModeTransfer = false;
                UpdateUserInterface();
                break;

            case UiAction.SetPillType:
                _pillType = msg.PillType;
                UpdateUserInterface();
                break;

            case UiAction.CreatePills:
            case UiAction.CreateBottles:
                _label = msg.Label;
                TryCreatePackage(player, msg.Action, msg.Label, msg.PillAmount, msg.BottleAmount);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            UpdateUserInterface();
            ClickSound();
        }
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (obj.Session.AttachedEntity is not {
                Valid : true
            } player)
            {
                return;
            }

            if (!_entities.TryGetComponent(player, out HumanoidAppearanceComponent? looks))
            {
                return;
            }

            switch (obj.Message)
            {
            case HairSelectedMessage msg:
                var cat = msg.IsFacialHair
                        ? looks.CategoriesFacialHair
                        : looks.CategoriesHair;

                if (!_spriteAccessoryManager.IsValidAccessoryInCategory(msg.HairId, cat))
                {
                    return;
                }

                looks.Appearance = msg.IsFacialHair
                        ? looks.Appearance.WithFacialHairStyleName(msg.HairId)
                        : looks.Appearance.WithHairStyleName(msg.HairId);

                break;

            case HairColorSelectedMessage msg:
                if (msg.IsFacialHair ? !looks.CanColorFacialHair : !looks.CanColorHair)
                {
                    return;
                }

                var(r, g, b) = msg.HairColor;
                var color = new Color(r, g, b);

                looks.Appearance = msg.IsFacialHair
                        ? looks.Appearance.WithFacialHairColor(color)
                        : looks.Appearance.WithHairColor(color);

                break;

            case EyeColorSelectedMessage msg:
                var(eyeR, eyeG, eyeB) = msg.EyeColor;
                var eyeColor = new Color(eyeR, eyeG, eyeB);

                looks.Appearance = looks.Appearance.WithEyeColor(eyeColor);

                break;
            }

            EntitySystem.Get <HumanoidAppearanceSystem>().ForceAppearanceUpdate(player);
        }
Ejemplo n.º 8
0
 private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
 {
     if (serverMsg.Message is ApcToggleMainBreakerMessage)
     {
         MainBreakerEnabled = !MainBreakerEnabled;
         _uiDirty           = true;
         EntitySystem.Get <AudioSystem>().PlayFromEntity("/Audio/machines/machine_switch.ogg", Owner, AudioParams.Default.WithVolume(-2f));
     }
 }
Ejemplo n.º 9
0
 private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
 {
     switch (message.Message)
     {
     case ReceiveBodyPartSurgeryUIMessage msg:
         HandleReceiveBodyPart(msg.SelectedOptionId);
         break;
     }
 }
Ejemplo n.º 10
0
        private static void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (obj.Session.AttachedEntity == null)
            {
                return;
            }

            if (!obj.Session.AttachedEntity.TryGetComponent(out HumanoidAppearanceComponent? looks))
            {
                return;
            }

            switch (obj.Message)
            {
            case HairSelectedMessage msg:
                var map =
                    msg.IsFacialHair ? HairStyles.FacialHairStylesMap : HairStyles.HairStylesMap;
                if (!map.ContainsKey(msg.HairName))
                {
                    return;
                }

                if (msg.IsFacialHair)
                {
                    looks.Appearance = looks.Appearance.WithFacialHairStyleName(msg.HairName);
                }
                else
                {
                    looks.Appearance = looks.Appearance.WithHairStyleName(msg.HairName);
                }

                break;

            case HairColorSelectedMessage msg:
                var(r, g, b) = msg.HairColor;
                var color = new Color(r, g, b);

                if (msg.IsFacialHair)
                {
                    looks.Appearance = looks.Appearance.WithFacialHairColor(color);
                }
                else
                {
                    looks.Appearance = looks.Appearance.WithHairColor(color);
                }

                break;

            case EyeColorSelectedMessage msg:
                var(eyeR, eyeG, eyeB) = msg.EyeColor;
                var eyeColor = new Color(eyeR, eyeG, eyeB);

                looks.Appearance = looks.Appearance.WithEyeColor(eyeColor);

                break;
            }
        }
        /// <summary>
        /// Handles ui messages from the client. For things such as button presses
        /// which interact with the world and require server action.
        /// </summary>
        /// <param name="obj">A user interface message from the client.</param>
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (!PlayerCanUseDispenser(obj.Session.AttachedEntity))
            {
                return;
            }

            var msg = (UiButtonPressedMessage)obj.Message;

            switch (msg.Button)
            {
            case UiButton.Eject:
                TryEject(obj.Session.AttachedEntity);
                break;

            case UiButton.Clear:
                TryClear();
                break;

            case UiButton.SetDispenseAmount1:
                _dispenseAmount = ReagentUnit.New(1);
                break;

            case UiButton.SetDispenseAmount5:
                _dispenseAmount = ReagentUnit.New(5);
                break;

            case UiButton.SetDispenseAmount10:
                _dispenseAmount = ReagentUnit.New(10);
                break;

            case UiButton.SetDispenseAmount25:
                _dispenseAmount = ReagentUnit.New(25);
                break;

            case UiButton.SetDispenseAmount50:
                _dispenseAmount = ReagentUnit.New(50);
                break;

            case UiButton.SetDispenseAmount100:
                _dispenseAmount = ReagentUnit.New(100);
                break;

            case UiButton.Dispense:
                if (HasBeaker)
                {
                    TryDispense(msg.DispenseIndex);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            ClickSound();
        }
Ejemplo n.º 12
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            switch (message.Message)
            {
            case PDARequestUpdateInterfaceMessage _:
            {
                UpdatePDAUserInterface();
                break;
            }

            case PDAToggleFlashlightMessage _:
            {
                ToggleLight();
                break;
            }

            case PDAEjectIDMessage _:
            {
                HandleIDEjection(message.Session.AttachedEntity !);
                break;
            }

            case PDAEjectPenMessage _:
            {
                HandlePenEjection(message.Session.AttachedEntity !);
                break;
            }

            case PDAUplinkBuyListingMessage buyMsg:
            {
                var player = message.Session.AttachedEntity;
                if (player == null)
                {
                    break;
                }

                if (!_uplinkManager.TryPurchaseItem(_syndicateUplinkAccount, buyMsg.ItemId,
                                                    player.Transform.Coordinates, out var entity))
                {
                    SendNetworkMessage(new PDAUplinkInsufficientFundsMessage(), message.Session.ConnectedClient);
                    break;
                }

                if (!player.TryGetComponent(out HandsComponent? hands) ||
                    !entity.TryGetComponent(out ItemComponent? item))
                {
                    break;
                }

                hands.PutInHandOrDrop(item);

                SendNetworkMessage(new PDAUplinkBuySuccessMessage(), message.Session.ConnectedClient);
                break;
            }
            }
        }
Ejemplo n.º 13
0
        private void OnUIMessage(PDAComponent pda, ServerBoundUserInterfaceMessage msg)
        {
            // cast EntityUid? to EntityUid
            if (msg.Session.AttachedEntity is not {
                Valid: true
            } playerUid)
            {
                return;
            }

            switch (msg.Message)
            {
            case PDARequestUpdateInterfaceMessage _:
                UpdatePDAUserInterface(pda, playerUid);
                break;

            case PDAToggleFlashlightMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out UnpoweredFlashlightComponent? flashlight))
                {
                    _unpoweredFlashlight.ToggleLight(flashlight);
                }
                break;
            }

            case PDAEjectIDMessage _:
            {
                ItemSlotsSystem.TryEjectToHands(pda.Owner, pda.IdSlot, playerUid);
                break;
            }

            case PDAEjectPenMessage _:
            {
                ItemSlotsSystem.TryEjectToHands(pda.Owner, pda.PenSlot, playerUid);
                break;
            }

            case PDAShowUplinkMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out UplinkComponent? uplink))
                {
                    _uplinkSystem.ToggleUplinkUI(uplink, msg.Session);
                }
                break;
            }

            case PDAShowRingtoneMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out RingerComponent? ringer))
                {
                    _ringerSystem.ToggleRingerUI(ringer, msg.Session);
                }
                break;
            }
            }
        }
Ejemplo n.º 14
0
 private void OnUiAcceptCloningMessage(ServerBoundUserInterfaceMessage obj)
 {
     if (obj.Message is not SharedAcceptCloningComponent.UiButtonPressedMessage)
     {
         return;
     }
     if (Mind != null)
     {
         Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new GhostComponent.GhostReturnMessage(Mind));
     }
 }
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            var obj = serverMsg.Message;

            if (obj is ApcToggleMainBreakerMessage)
            {
                _provider.MainBreaker = !_provider.MainBreaker;
                _uiDirty = true;
                _clickSound();
            }
        }
Ejemplo n.º 16
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            if (!Powered || _busy)
            {
                return;
            }

            switch (message.Message)
            {
            case MicrowaveStartCookMessage:
                Wzhzhzh();
                break;

            case MicrowaveEjectMessage:
                if (HasContents)
                {
                    VaporizeReagents();
                    EjectSolids();
                    ClickSound();
                    _uiDirty = true;
                }

                break;

            case MicrowaveEjectSolidIndexedMessage msg:
                if (HasContents)
                {
                    EjectSolid(msg.EntityID);
                    ClickSound();
                    _uiDirty = true;
                }

                break;

            case MicrowaveVaporizeReagentIndexedMessage msg:
                if (HasContents)
                {
                    VaporizeReagentQuantity(msg.ReagentQuantity);
                    ClickSound();
                    _uiDirty = true;
                }

                break;

            case MicrowaveSelectCookTimeMessage msg:
                _currentCookTimeButtonIndex = msg.ButtonIndex;
                _currentCookTimerTime       = msg.NewCookTime;
                ClickSound();
                _uiDirty = true;
                break;
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Handles ui messages from the client. For things such as button presses
        /// which interact with the world and require server action.
        /// </summary>
        /// <param name="obj">A user interface message from the client.</param>
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            var msg = (UiButtonPressedMessage)obj.Message;

            switch (msg.Button)
            {
            case UiButton.Eject:
                TryEject();
                break;

            case UiButton.Clear:
                TryClear();
                break;

            case UiButton.SetDispenseAmount1:
                DispenseAmount = 1;
                break;

            case UiButton.SetDispenseAmount5:
                DispenseAmount = 5;
                break;

            case UiButton.SetDispenseAmount10:
                DispenseAmount = 10;
                break;

            case UiButton.SetDispenseAmount25:
                DispenseAmount = 25;
                break;

            case UiButton.SetDispenseAmount50:
                DispenseAmount = 50;
                break;

            case UiButton.SetDispenseAmount100:
                DispenseAmount = 100;
                break;

            case UiButton.Dispense:
                if (HasBeaker)
                {
                    TryDispense(msg.DispenseIndex);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            ClickSound();
        }
        /// <summary>
        /// Handles ui messages from the client. For things such as button presses
        /// which interact with the world and require server action.
        /// </summary>
        /// <param name="obj">A user interface message from the client.</param>
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            if (obj.Session.AttachedEntity is not {
                Valid : true
            } player)
            {
                return;
            }

            if (obj.Message is not UiActionMessage msg)
            {
                return;
            }

            if (!PlayerCanUseChemMaster(player, true))
            {
                return;
            }

            switch (msg.Action)
            {
            case UiAction.ChemButton:
                TransferReagent(msg.Id, msg.Amount, msg.IsBuffer);
                break;

            case UiAction.Transfer:
                _bufferModeTransfer = true;
                UpdateUserInterface();
                break;

            case UiAction.Discard:
                _bufferModeTransfer = false;
                UpdateUserInterface();
                break;

            case UiAction.SetPillType:
                _pillType = msg.PillType;
                UpdateUserInterface();
                break;

            case UiAction.CreatePills:
            case UiAction.CreateBottles:
                _label = msg.Label;
                TryCreatePackage(player, msg.Action, msg.Label, msg.PillAmount, msg.BottleAmount);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            UpdateUserInterface();
            ClickSound();
        }
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            switch (obj.Message)
            {
            case CommunicationsConsoleCallEmergencyShuttleMessage _:
                RoundEndSystem.RequestRoundEnd();
                break;

            case CommunicationsConsoleRecallEmergencyShuttleMessage _:
                RoundEndSystem.CancelRoundEndCountdown();
                break;
            }
        }
Ejemplo n.º 20
0
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            switch (message.Message)
            {
            case GasTankSetPressureMessage msg:
                OutputPressure = msg.Pressure;
                break;

            case GasTankToggleInternalsMessage _:
                ToggleInternals();
                break;
            }
        }
Ejemplo n.º 21
0
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            switch (message.Message)
            {
            case LatheQueueRecipeMessage msg:
                _prototypeManager.TryIndex(msg.ID, out LatheRecipePrototype recipe);
                if (recipe != null)
                {
                    for (var i = 0; i < msg.Quantity; i++)
                    {
                        Queue.Enqueue(recipe);
                        _userInterface.SendMessage(new LatheFullQueueMessage(GetIDQueue()));
                    }
                }
                break;

            case LatheSyncRequestMessage msg:
                if (!Owner.TryGetComponent(out MaterialStorageComponent storage))
                {
                    return;
                }
                _userInterface.SendMessage(new LatheFullQueueMessage(GetIDQueue()));
                if (_producingRecipe != null)
                {
                    _userInterface.SendMessage(new LatheProducingRecipeMessage(_producingRecipe.ID));
                }
                break;

            case LatheServerSelectionMessage msg:
                if (!Owner.TryGetComponent(out ResearchClientComponent researchClient))
                {
                    return;
                }
                researchClient.OpenUserInterface(message.Session);
                break;

            case LatheServerSyncMessage msg:
                if (!Owner.TryGetComponent(out TechnologyDatabaseComponent database) ||
                    !Owner.TryGetComponent(out ProtolatheDatabaseComponent protoDatabase))
                {
                    return;
                }

                if (database.SyncWithServer())
                {
                    protoDatabase.Sync();
                }

                break;
            }
        }
Ejemplo n.º 22
0
        private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            if (!Powered || _busy)
            {
                return;
            }

            switch (message.Message)
            {
            case MicrowaveStartCookMessage msg:
                wzhzhzh();
                break;

            case MicrowaveEjectMessage msg:
                if (HasContents)
                {
                    VaporizeReagents();
                    EjectSolids();
                    ClickSound();
                    UpdateUserInterface();
                }

                break;

            case MicrowaveEjectSolidIndexedMessage msg:
                if (HasContents)
                {
                    EjectSolidWithIndex(msg.EntityID);
                    ClickSound();
                    UpdateUserInterface();
                }
                break;

            case MicrowaveVaporizeReagentIndexedMessage msg:
                if (HasContents)
                {
                    VaporizeReagentWithReagentQuantity(msg.ReagentQuantity);
                    ClickSound();
                    UpdateUserInterface();
                }
                break;

            case MicrowaveSelectCookTimeMessage msg:
                _currentCookTimerTime = msg.newCookTime;
                ClickSound();
                UpdateUserInterface();
                break;
            }
        }
Ejemplo n.º 23
0
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            if (!_entMan.TryGetComponent(Owner, out TechnologyDatabaseComponent? database))
            {
                return;
            }
            if (!_entMan.TryGetComponent(Owner, out ResearchClientComponent? client))
            {
                return;
            }
            if (!Powered)
            {
                return;
            }

            switch (message.Message)
            {
            case ConsoleUnlockTechnologyMessage msg:
                if (!_prototypeManager.TryIndex(msg.Id, out TechnologyPrototype? tech))
                {
                    break;
                }
                if (client.Server == null)
                {
                    break;
                }
                if (!client.Server.CanUnlockTechnology(tech))
                {
                    break;
                }
                if (client.Server.UnlockTechnology(tech))
                {
                    database.SyncWithServer();
                    database.Dirty();
                    UpdateUserInterface();
                }

                break;

            case ConsoleServerSyncMessage _:
                database.SyncWithServer();
                UpdateUserInterface();
                break;

            case ConsoleServerSelectionMessage _:
                client.OpenUserInterface(message.Session);
                break;
            }
        }
        public void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            switch (serverMsg.Message)
            {
            case TransferAmountSetValueMessage svm:
                var sval   = svm.Value.Float();
                var amount = Math.Clamp(sval, MinimumTransferAmount.Float(),
                                        MaximumTransferAmount.Float());

                serverMsg.Session.AttachedEntity?.PopupMessage(Loc.GetString("comp-solution-transfer-set-amount",
                                                                             ("amount", amount)));
                SetTransferAmount(ReagentUnit.New(amount));
                break;
            }
        }
Ejemplo n.º 25
0
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg)
        {
            var message = serverMsg.Message;

            switch (message)
            {
            case VendingMachineEjectMessage msg:
                TryEject(msg.ID);
                break;

            case InventorySyncRequestMessage msg:
                _userInterface.SendMessage(new VendingMachineInventoryMessage(Inventory));
                break;
            }
        }
Ejemplo n.º 26
0
 protected override void OnReceiveUserInterfaceMessage(ServerBoundUserInterfaceMessage obj)
 {
     switch (obj.Message)
     {
     case SolarControlConsoleAdjustMessage msg:
         if (double.IsFinite(msg.Rotation))
         {
             _powerSolarSystem.TargetPanelRotation = msg.Rotation.Reduced();
         }
         if (double.IsFinite(msg.AngularVelocity))
         {
             _powerSolarSystem.TargetPanelVelocity = msg.AngularVelocity.Reduced();
         }
         break;
     }
 }
Ejemplo n.º 27
0
        /// <summary>
        /// Handles ui messages from the client. For things such as button presses
        /// which interact with the world and require server action.
        /// </summary>
        /// <param name="obj">A user interface message from the client.</param>
        private void OnUiReceiveMessage(ServerBoundUserInterfaceMessage obj)
        {
            var msg = (UiActionMessage)obj.Message;

            if (!Anchored)
            {
                return;
            }

            //Check for correct message and ignore maleformed strings
            if (msg.Action == UiAction.Ok && TagRegex.IsMatch(msg.Tag))
            {
                _tag = msg.Tag;
                ClickSound();
            }
        }
Ejemplo n.º 28
0
        private void HandleUIMessage(ServerBoundUserInterfaceMessage message)
        {
            switch (message.Message)
            {
            case GeneratorStatusRequestMessage _:
                _userInterface.SetState(new GeneratorState(Status == GravityGeneratorStatus.On));
                break;

            case SwitchGeneratorMessage msg:
                _switchedOn = msg.On;
                UpdateState();
                break;

            default:
                break;
            }
        }
Ejemplo n.º 29
0
        private void OnUIMessage(PDAComponent pda, ServerBoundUserInterfaceMessage msg)
        {
            // todo: move this to entity events
            switch (msg.Message)
            {
            case PDARequestUpdateInterfaceMessage _:
                UpdatePDAUserInterface(pda);
                break;

            case PDAToggleFlashlightMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out UnpoweredFlashlightComponent? flashlight))
                {
                    _unpoweredFlashlight.ToggleLight(flashlight);
                }
                break;
            }

            case PDAShowUplinkMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out UplinkComponent? uplink))
                {
                    _uplinkSystem.ToggleUplinkUI(uplink, msg.Session);
                }
                break;
            }

            case PDAShowRingtoneMessage _:
            {
                if (EntityManager.TryGetComponent(pda.Owner, out RingerComponent? ringer))
                {
                    _ringerSystem.ToggleRingerUI(ringer, msg.Session);
                }
                break;
            }

            case PDAShowMusicMessage _:
            {
                if (TryComp(pda.Owner, out InstrumentComponent? instrument))
                {
                    _instrumentSystem.ToggleInstrumentUi(pda.Owner, msg.Session, instrument);
                }
                break;
            }
            }
        }
Ejemplo n.º 30
0
        private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
        {
            if (!Owner.TryGetComponent(out TechnologyDatabaseComponent database))
            {
                return;
            }
            if (!Powered)
            {
                return;
            }

            switch (message.Message)
            {
            case ConsoleUnlockTechnologyMessage msg:
                var protoMan = IoCManager.Resolve <IPrototypeManager>();
                if (!protoMan.TryIndex(msg.Id, out TechnologyPrototype tech))
                {
                    break;
                }
                if (!_client.Server.CanUnlockTechnology(tech))
                {
                    break;
                }
                if (_client.Server.UnlockTechnology(tech))
                {
                    database.SyncWithServer();
                    database.Dirty();
                    UpdateUserInterface();
                }

                break;

            case ConsoleServerSyncMessage msg:
                database.SyncWithServer();
                UpdateUserInterface();
                break;

            case ConsoleServerSelectionMessage msg:
                if (!Owner.TryGetComponent(out ResearchClientComponent client))
                {
                    break;
                }
                client.OpenUserInterface(message.Session);
                break;
            }
        }