From a9322a08dd30cba09429b6fd40f5bd2f8685b42f Mon Sep 17 00:00:00 2001 From: NGnius Date: Tue, 7 Apr 2020 11:47:32 -0400 Subject: [PATCH] Add semi-functional action inputs --- GamecraftModdingAPI/Input/FakeInput.cs | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/GamecraftModdingAPI/Input/FakeInput.cs b/GamecraftModdingAPI/Input/FakeInput.cs index e2ce676..3d9a379 100644 --- a/GamecraftModdingAPI/Input/FakeInput.cs +++ b/GamecraftModdingAPI/Input/FakeInput.cs @@ -62,6 +62,7 @@ namespace GamecraftModdingAPI.Input playerID = inputEngine.GetLocalPlayerID(); } ref InputEntityStruct currentInput = ref inputEngine.GetInputRef(playerID); + Utility.Logging.CommandLog($"Current sim frame {currentInput.frame}"); // set inputs switch(hotbar) { @@ -106,6 +107,43 @@ namespace GamecraftModdingAPI.Input if (paste) currentInput.guiMask |= RobocraftX.Common.Input.GuiInput.PasteSelection; } + public static void ActionInput(uint playerID = uint.MaxValue, bool toggleMode = false, bool forward = false, bool backward = false, bool up = false, bool down = false, bool left = false, bool right = false, bool sprint = false, bool toggleFly = false, bool alt = false, bool primary = false, bool secondary = false, bool tertiary = false, bool primaryRelease = false, bool primaryHeld = false, bool secondaryHeld = false, bool toggleUnitGrid = false, bool ctrl = false, bool toggleColourMode = false, bool scaleBlockUp = false, bool scaleBlockDown = false, bool rotateBlockClockwise = false, bool rotateBlockCounterclockwise = false, bool cutSelection = false, bool copySelection = false, bool deleteSelection = false) + { + if (playerID == uint.MaxValue) + { + playerID = inputEngine.GetLocalPlayerID(); + } + ref InputEntityStruct currentInput = ref inputEngine.GetInputRef(playerID); + Utility.Logging.CommandLog($"Current sim frame {currentInput.frame}"); + // set inputs + if (toggleMode) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.ToggleSimulation; + if (forward) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Forward; + if (backward) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Backward; + if (up) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Up; + if (down) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Down; + if (left) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Left; + if (right) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Right; + if (sprint) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.Sprint; + if (toggleFly) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.SwitchFlyMode; + if (alt) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.AltAction; + if (primary) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.PrimaryAction; + if (secondary) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.SecondaryAction; + if (tertiary) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.TertiaryAction; + if (primaryRelease) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.PrimaryActionRelease; + if (primaryHeld) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.PrimaryActionHeld; + if (secondaryHeld) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.SecondaryActionHeld; + if (toggleUnitGrid) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.ToggleUnitGrid; + if (ctrl) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.CtrlAction; + if (toggleColourMode) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.ToggleColourMode; + if (scaleBlockUp) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.ScaleBlockUp; + if (scaleBlockDown) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.ScaleBlockDown; + if (rotateBlockClockwise) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.RotateBlockClockwise; + if (rotateBlockCounterclockwise) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.RotateBlockAnticlockwise; + if (cutSelection) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.CutSelection; + if (copySelection) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.CopySelection; + if (deleteSelection) currentInput.actionMask |= RobocraftX.Common.Input.ActionInput.DeleteSelection; + } + public static void Init() { GameEngineManager.AddGameEngine(inputEngine);