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(); }
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; } } }
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; } }
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; } }
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); }
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)); } }
private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message) { switch (message.Message) { case ReceiveBodyPartSurgeryUIMessage msg: HandleReceiveBodyPart(msg.SelectedOptionId); break; } }
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(); }
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; } } }
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; } } }
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(); } }
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; } }
/// <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; } }
private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message) { switch (message.Message) { case GasTankSetPressureMessage msg: OutputPressure = msg.Pressure; break; case GasTankToggleInternalsMessage _: ToggleInternals(); break; } }
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; } }
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; } }
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; } }
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; } }
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; } }
/// <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(); } }
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; } }
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; } } }
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; } }