Skip to content

Commit

Permalink
feat(input): add interaction to elevator (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
Xenira committed Feb 4, 2024
1 parent 9e3e8fd commit d287594
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
35 changes: 35 additions & 0 deletions plugin/src/input/ui/machine/RepairableElevatorInteractableUi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Linq;
using TechtonicaVR.Util;
using UnityEngine;

namespace TechtonicaVR.Input.Ui.Machine;

public class RepairableElevatorInteractableUi : InventoryInteractableUi
{
private static PluginLogger Logger = PluginLogger.GetLogger<RepairableElevatorInteractableUi>();

public RepairableElevatorInteractableUi(GameObject gameObject) : base(gameObject)
{
zIndex = 0.001f;

interactable = gameObject.GetComponentsInChildren<InventoryResourceSlotUI>().Select(getInteractable).ToList();

var upgradeButton = gameObject.GetComponentInChildren<ProductionTerminalUpgradeButton>();
var upgradeButtonInteractable = new InteractableBuilder(this, getRect(upgradeButton.GetComponent<RectTransform>()), upgradeButton.gameObject)
.withClick((ui) => onClick(upgradeButton), () => upgradeButton.canUpgrade)
.withHoverEnter((ui) => upgradeButton.mouseEnterCallback?.Invoke())
.withHoverExit((ui) => upgradeButton.mouseExitCallback?.Invoke())
.build();
interactable.Add(upgradeButtonInteractable);
}


protected override void init()
{
}

private void onClick(ProductionTerminalUpgradeButton upgradeButton)
{
upgradeButton.mouseLeftClickCallback?.Invoke();
}
}
1 change: 1 addition & 0 deletions plugin/src/patch/main_game/ui/PlayerArrowPatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public PlayerArrowPatch() : base("Player Arrow")
protected override bool Apply(GameObject gameObject)
{
gameObject.transform.parent = VRCameraManager.mainCamera.transform;
gameObject.transform.rotation = Quaternion.Euler(90, 0, 0);
return true;
}
}
8 changes: 8 additions & 0 deletions plugin/src/ui/patch/UiMenuPatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,14 @@ private static void addInteractableUi(UIMenu instance)
menu = new UIMenuWrapper(instance)
};
}
else if (instance is RepairableElevatorUI)
{
var container = GameObjectFinder.FindChildObjectByName("Container", instance.gameObject);
new RepairableElevatorInteractableUi(container)
{
menu = new UIMenuWrapper(instance)
};
}
}

private static void disableButtonPrompts(UIMenu __instance)
Expand Down
5 changes: 5 additions & 0 deletions plugin/src/util/ObjectFinder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ public static GameObject FindChildObjectByName(string name, GameObject parent)
return obj;
}

public static GameObject FindChildObjectByName(string name, Transform parent)
{
return FindChildObjectByName(name, parent.gameObject);
}

public static IEnumerable<GameObject> FindSiblingChildObjectsByName(string name, GameObject sibling)
{
if (sibling.transform.parent == null)
Expand Down

0 comments on commit d287594

Please sign in to comment.