public RightClickableResult GenerateRightClickOptions() { //check if our local player can reach this var initiator = PlayerManager.LocalPlayerScript.pushPull; if (initiator == null) { return(null); } //if it's pulled by us if (IsPulledByClient(initiator)) { //already pulled by us, but we can stop pulling return(RightClickableResult.Create() .AddElement("StopPull", TryPullThis)); } else { //check if in range for pulling if (PlayerScript.IsInReach(registerTile, initiator.registerTile, false) && initiator != this) { return(RightClickableResult.Create() .AddElement("Pull", TryPullThis)); } } return(null); }
private List <RightClickMenuItem> Generate(List <GameObject> objects) { if (objects == null || objects.Count == 0) { return(null); } var result = new List <RightClickMenuItem>(); foreach (var curObject in objects) { var subMenus = new List <RightClickMenuItem>(); //check for any IRightClickable components and gather their options var rightClickables = curObject.GetComponents <IRightClickable>(); var rightClickableResult = new RightClickableResult(); if (rightClickables != null) { foreach (var rightClickable in rightClickables) { rightClickableResult.AddElements(rightClickable.GenerateRightClickOptions()); } } //add the menu items generated so far subMenus.AddRange(rightClickableResult.AsOrderedMenus(rightClickOptionOrder)); //check for any components that have an attributed method. These are added to the end in whatever order, //doesn't matter since it's only for development. if (KeyboardInputManager.Instance.CheckKeyAction(KeyAction.ShowAdminOptions, KeyboardInputManager.KeyEventType.Hold)) { foreach (var attributedType in attributedTypes) { var components = curObject.GetComponents(attributedType.ComponentType); foreach (var component in components) { //only add the item if the concrete type matches if (component.GetType() == attributedType.ComponentType) { //create menu items for these components subMenus.AddRange(CreateSubMenuOptions(attributedType, component)); } } } if (!string.IsNullOrEmpty(PlayerList.Instance.AdminToken)) { subMenus.Add(VariableViewerOption.AsMenu(() => { RequestBookshelfNetMessage.Send(curObject); })); } } if (subMenus.Count > 0) { result.Add(CreateObjectMenu(curObject, subMenus)); } } return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); var activateInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "ToggleActive"); if (!WillInteract(activateInteraction, NetworkSide.Client)) { return(result); } result.AddElement("Activate", () => ContextMenuOptionClicked(activateInteraction)); var ejectInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "ToggleDoor"); result.AddElement("Toggle Door", () => ContextMenuOptionClicked(ejectInteraction)); var addTimeInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "AddTime"); result.AddElement("Add 5 Sec", () => ContextMenuOptionClicked(addTimeInteraction)); var removeTimeInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "RemoveTime"); result.AddElement("Take 5 Sec", () => ContextMenuOptionClicked(removeTimeInteraction)); return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); var ejectInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "Eject"); result.AddElement("Eject", () => ContextMenuOptionClicked(ejectInteraction)); return(result); }
/// <summary> /// Adds the elements of other to this RightClickableResult /// </summary> /// <param name="other">other result to add. Can be null. If null, nothing will /// be added.</param> /// <returns>this RightClickableResult, to support chaining</returns> public RightClickableResult AddElements(RightClickableResult other) { if (other != null) { elements.AddRange(other.elements); } return(this); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (!WillInteract(ContextMenuApply.ByLocalPlayer(gameObject, null), NetworkSide.Client)) { return(result); } return(result.AddElement("Flip", OnFlipClicked)); }
public RightClickableResult GenerateRightClickOptions() { if (string.IsNullOrEmpty(PlayerList.Instance.AdminToken)) { return(null); } return(RightClickableResult.Create() .AddAdminElement("Smash", AdminSmash) .AddAdminElement("Hotspot", AdminMakeHotspot)); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (WillInteract(HandApply.ByLocalPlayer(gameObject), NetworkSide.Client)) { result.AddElement("Add Solid Plasma", RightClickInteract); } return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (WillInteract(MouseDrop.ByLocalPlayer(gameObject, PlayerManager.LocalPlayer), NetworkSide.Client)) { result.AddElement("Fold Up", RightClickInteract); } return(result); }
public RightClickableResult GenerateRightClickOptions() { var rightClickResult = new RightClickableResult(); if (isPrepared) { return(rightClickResult); } rightClickResult.AddElement($"{openingVerb}", Open); return(rightClickResult); }
public RightClickableResult GenerateRightClickOptions() { if (string.IsNullOrEmpty(PlayerList.Instance.AdminToken) || !KeyboardInputManager.Instance.CheckKeyAction(KeyAction.ShowAdminOptions, KeyboardInputManager.KeyEventType.Hold)) { return(null); } return(RightClickableResult.Create() .AddAdminElement("Smash", AdminSmash) .AddAdminElement("Hotspot", AdminMakeHotspot)); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (WillInteract(HandApply.ByLocalPlayer(gameObject), NetworkSide.Client)) { var optionName = IsClosed ? "Open" : "Close"; result.AddElement("OpenClose", RightClickInteract, nameOverride: optionName); } return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (WillInteract(HandApply.ByLocalPlayer(gameObject), NetworkSide.Client)) { // TODO: Make this contexual if holding a welder or wrench var optionName = IsOpen ? "Close" : "Open"; result.AddElement("OpenClose", RightClickInteract, nameOverride: optionName); } return(result); }
public RightClickableResult GenerateRightClickOptions() { //would the interaction validate locally? var valid = WillInteract(HandApply.ByLocalPlayer(gameObject), NetworkSide.Client); if (valid) { return(RightClickableResult.Create() .AddElement("PickUp", RightClickInteract)); } return(null); }
/// <summary> /// Anything with PlayerMove can be cuffed and uncuffed. Might make sense to seperate that into its own behaviour /// </summary> /// <returns>The menu including the uncuff action if applicable, otherwise null</returns> public RightClickableResult GenerateRightClickOptions() { var initiator = PlayerManager.LocalPlayerScript.playerMove; if (IsCuffed && initiator != this) { var result = RightClickableResult.Create(); result.AddElement("Uncuff", TryUncuffThis); return(result); } return(null); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); var activateInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "Open/Close"); if (!WillInteract(activateInteraction, NetworkSide.Client)) { return(result); } result.AddElement("Open/Close", () => ContextMenuOptionClicked(activateInteraction)); return(result); }
private List <RightClickMenuItem> Generate(List <GameObject> objects) { if (objects == null || objects.Count == 0) { return(null); } var result = new List <RightClickMenuItem>(); foreach (var curObject in objects) { var subMenus = new List <RightClickMenuItem>(); //check for any IRightClickable components and gather their options var rightClickables = curObject.GetComponents <IRightClickable>(); var rightClickableResult = new RightClickableResult(); if (rightClickables != null) { foreach (var rightClickable in rightClickables) { rightClickableResult.AddElements(rightClickable.GenerateRightClickOptions()); } } //add the menu items generated so far subMenus.AddRange(rightClickableResult.AsOrderedMenus(rightClickOptionOrder)); //check for any components that have an attributed method. These are added to the end in whatever order, //doesn't matter since it's only for development. foreach (var attributedType in attributedTypes) { var components = curObject.GetComponents(attributedType.ComponentType); foreach (var component in components) { //only add the item if the concrete type matches if (component.GetType() == attributedType.ComponentType) { //create menu items for these components subMenus.AddRange(CreateSubMenuOptions(attributedType, component)); } } } if (subMenus.Count > 0) { result.Add(CreateObjectMenu(curObject, subMenus)); } } return(result); }
// This region (Interaction-RightClick) shouldn't exist once TODO in class summary is done. #region Interaction-RightClick public RightClickableResult GenerateRightClickOptions() { RightClickableResult result = RightClickableResult.Create(); if (drawerState == DrawerState.Open) { return(result); } if (!accessRestrictions.CheckAccess(PlayerManager.LocalPlayer)) { return(result); } return(result.AddElement("Activate Ignition", RightClickInteract)); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create() //contents can always be viewed .AddElement("Contents", LogReagents); //Pour / add can only be done if in reach if (PlayerScript.IsInReach(registerTile, PlayerManager.LocalPlayerScript.registerTile, false)) { result.AddElement("PourOut", RemoveSome) .AddElement("AddTo", AddTo); } return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); var detachInteraction = ContextMenuApply.ByLocalPlayer(gameObject, null); if (WillInteract(detachInteraction, NetworkSide.Client) == false) { return(result); } if (noteText.IsNullOrEmpty()) { return(result); } return(result.AddElement("Detach note", () => OnDetachClicked(detachInteraction))); }
// This region (Interaction-RightClick) shouldn't exist once TODO in class summary is done. #region Interaction-RightClick public RightClickableResult GenerateRightClickOptions() { RightClickableResult result = RightClickableResult.Create(); if (drawerState == DrawerState.Open) { return(result); } if (!accessRestrictions.CheckAccess(PlayerManager.LocalPlayer)) { return(result); } var cremateInteraction = ContextMenuApply.ByLocalPlayer(gameObject, null); if (!WillInteract(cremateInteraction, NetworkSide.Client)) { return(result); } return(result.AddElement("Activate", () => OnCremateClicked(cremateInteraction))); }
// This region (Interaction-RightClick) shouldn't exist once TODO in class summary is done. #region Interaction-RightClick public RightClickableResult GenerateRightClickOptions() { RightClickableResult result = RightClickableResult.Create(); if (drawerState == DrawerState.Open) { return(result); } /* --ACCESS REWORK-- * TODO Remove the AccessRestriction check when we finish migrating! * */ if (accessRestrictions) { if (accessRestrictions.CheckAccess(PlayerManager.LocalPlayer) == false) { return(result); } } else if (clearanceCheckable) { if (clearanceCheckable.HasClearance(PlayerManager.LocalPlayer) == false) { return(result); } } var cremateInteraction = ContextMenuApply.ByLocalPlayer(gameObject, null); if (!WillInteract(cremateInteraction, NetworkSide.Client)) { return(result); } return(result.AddElement("Activate", () => OnCremateClicked(cremateInteraction))); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); var activateInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "Activate"); if (!WillInteract(activateInteraction, NetworkSide.Client)) { return(result); } result.AddElement("Activate", () => ContextMenuOptionClicked(activateInteraction)); var switchModeInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "Switch Mode"); result.AddElement("Switch Mode", () => ContextMenuOptionClicked(switchModeInteraction)); var ejectInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "Eject Beaker"); result.AddElement("Eject Beaker", () => ContextMenuOptionClicked(ejectInteraction)); return(result); }
public RightClickableResult GenerateRightClickOptions() { var result = RightClickableResult.Create(); if (!WillInteract(ContextMenuApply.ByLocalPlayer(gameObject, null), NetworkSide.Client)) { return(result); } var stopTimerInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "StopTimer"); result.AddElement("Stop Timer", () => ContextMenuOptionClicked(stopTimerInteraction)); var addTimeInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "AddTime"); result.AddElement("Add 1 Min", () => ContextMenuOptionClicked(addTimeInteraction)); var removeTimeInteraction = ContextMenuApply.ByLocalPlayer(gameObject, "RemoveTime"); result.AddElement("Take 1 Min", () => ContextMenuOptionClicked(removeTimeInteraction)); return(result); }
public RightClickableResult GenerateRightClickOptions() { if (!canPickup) { return(null); } var interaction = HandApply.ByLocalPlayer(gameObject); if (interaction.TargetObject != gameObject) { return(null); } if (interaction.HandObject != null) { return(null); } if (!Validations.CanApply(interaction, NetworkSide.Client, true, ReachRange.Standard, isPlayerClick: false)) { return(null); } return(RightClickableResult.Create() .AddElement("PickUp", RightClickInteract)); }
public RightClickableResult GenerateRightClickOptions() { return(RightClickableResult.Create() .AddElement("Examine", OnExamine)); }
public RightClickableResult GenerateRightClickOptions() { return(RightClickableResult.Create() .AddAdminElement("Respawn", AdminRespawn)); }
public RightClickableResult GenerateRightClickOptions() { return(RightClickableResult.Create() .AddAdminElement("Smash", AdminSmash) .AddAdminElement("Hotspot", AdminMakeHotspot)); }