/// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Up/Down Menu Movement with DPAD.
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.DOWN)
            {
                Increment_Menu_Index(); Wait_For_Controller_Release(Controller_Keys.DPAD_DOWN, Controller_Manager); Pass_MessageBox_Message(); return;
            }
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.UP)
            {
                Decrement_Menu_Index(); Wait_For_Controller_Release(Controller_Keys.DPAD_UP, Controller_Manager); Pass_MessageBox_Message(); return;
            }

            // Check any known indexes
            if (P1_Controller.ControllerButtons.Button_A)
            {
                if (Menu_Index == (int)Menu_Items.Menu_Item_Sound_Test)
                {
                    Program.Set_New_Menu(Program.Menu_Sound_Test);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Physics_Swap)
                {
                    Program.Set_New_Menu(Program.Menu_Physics_Swapper);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Gameplay_Items)
                {
                    Program.Set_New_Menu(Program.Menu_Gameplay_Items);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Moveset_Tweaks)
                {
                    Program.Set_New_Menu(Program.Menu_Moveset_Tweaks);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Graphics_Tweaks)
                {
                    Program.Set_New_Menu(Program.Menu_Graphics_Tweaks);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_HUD_Tweaks)
                {
                    Program.Set_New_Menu(Program.Menu_HUD_Adjustments);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Trail_Editor)
                {
                    Program.Set_New_Menu(Program.Menu_Trail_Editor);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Misc)
                {
                    Program.Set_New_Menu(Program.Menu_Miscallenous);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Experiments)
                {
                    Program.Set_New_Menu(Program.Menu_Experiments);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Debug)
                {
                    Program.Set_New_Menu(Program.Menu_Debug_Stuff);
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle X/Y/Z Button
                if (Menu_Index == (int)Menu_Items.Menu_Item_Position_XYZ)
                {
                    Program.Feature_Position_XYZ_Window_X.Toggle_Overlay_Status(); Set_Toggle_State();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Enhanced_Debug_Movement_Mode)
                {
                    Program.Feature_Enhanced_Debug_Movement_Mode_X.Toggle_Free_Movement_Mode(); Set_Toggle_State();
                }

                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
        }
        // Controller Handler
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check face buttons.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // String based Menu Item Recognition.
                if (Mod_Menu_Page_Strings[Menu_Index].StartsWith(String_Save_Character_Configuration))
                {
                    Program.Feature_Trail_Editor_X.Save_All_Character_Settings();
                }
                else if (Mod_Menu_Page_Strings[Menu_Index].StartsWith(String_Load_Character_Configuration))
                {
                    Program.Feature_Trail_Editor_X.Load_All_Character_Settings(false); Trail_Editor_Populate_Current_Menu();
                }
                else if (Mod_Menu_Page_Strings[Menu_Index].StartsWith(String_Load_Default_Stock_Configuration))
                {
                    Program.Feature_Trail_Editor_X.Load_All_Character_Settings(true); Trail_Editor_Populate_Current_Menu();
                }

                while (P1_Controller.ControllerButtons.Button_A)
                {
                    P1_Controller = Controller_Manager.PlayerControllers[controllerIndex].Get_Whole_Controller_State(); Thread.Sleep(8);
                }
                return;
            }

            // Check DPAD.
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Decrement Currently Selected Character (if on the correct field)
                Increment_Decrement_Current_Character(false);

                // Update Currently Shown Entries
                if (Menu_Index != (int)Menu_Item_List.Menu_Item_Character)
                {
                    Update_Trail_Editor_Entries(false);
                }

                // Sleep the thread for repeated inputs.
                Wait_For_Controller_Release(Controller_Keys.DPAD_LEFT, Controller_Manager);
            }
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Increment Currently Selected Character (if on the correct field)
                Increment_Decrement_Current_Character(true);

                // Update Currently Shown Entries
                if (Menu_Index != (int)Menu_Item_List.Menu_Item_Character)
                {
                    Update_Trail_Editor_Entries(true);
                }

                // Sleep the thread for repeated inputs.
                Wait_For_Controller_Release(Controller_Keys.DPAD_RIGHT, Controller_Manager);
            }
        }
        /// <summary>
        /// Main Controller Input Handler.
        /// </summary>
        /// <param name="P1_Controller"></param>
        /// <param name="Controller_Manager"></param>
        public virtual void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Returns to the previously set menu.
            if (P1_Controller.ControllerButtons.Button_B)
            {
                Program.Return_Last_Menu(); Wait_For_Controller_Release(Controller_Keys.Button_B, Controller_Manager); return;
            }

            // Up/Down Menu Movement with DPAD.
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.DOWN)
            {
                Increment_Menu_Index(); Wait_For_Controller_Release(Controller_Keys.DPAD_DOWN, Controller_Manager); Pass_MessageBox_Message(); return;
            }
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.UP)
            {
                Decrement_Menu_Index(); Wait_For_Controller_Release(Controller_Keys.DPAD_UP, Controller_Manager); Pass_MessageBox_Message(); return;
            }
        }
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle X/Y/Z Button


                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }

            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Null)
                {
                    Set_Toggle_State();
                }

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Null)
                {
                    Set_Toggle_State();
                }

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Method to play a sound if the user holds arrow up on the controller.
        /// </summary>
        static void Controller_Poll_Method()
        {
            try
            {
                for (int x = 0; x < Controller_Manager.PlayerControllers.Count; x++)
                {
                    // Get Controller State!
                    Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller = Controller_Manager.PlayerControllers[x].Get_Whole_Controller_State();

                    // Set index
                    Menu_Base.controllerIndex = x;

                    // Toggle Menu Visibility with Guide Button
                    if (P1_Controller.ControllerButtons.Button_L3)
                    {
                        // Render next frame.
                        if (Draw_Current_Menu)
                        {
                            Draw_Current_Menu = false; Enable_Game_Controller(); Current_Menu.Set_Toggle_State();
                        }
                        else
                        {
                            Draw_Current_Menu = true; Disable_Game_Controller(); Current_Menu.Set_Toggle_State();
                        }

                        // Wait for L3 Release for toggling menu.
                        while (P1_Controller.ControllerButtons.Button_L3)
                        {
                            P1_Controller = Controller_Manager.PlayerControllers[Menu_Base.controllerIndex].Get_Whole_Controller_State(); Thread.Sleep(32);
                        }
                    }

                    // Handle current menu screen.
                    if (Draw_Current_Menu && (Current_Menu != null))
                    {
                        Current_Menu.Handle_Controller_Inputs(P1_Controller, Controller_Manager);
                    }

                    // Try executing the controller handler.
                    try { Controller_Poll_Delegate?.Invoke(P1_Controller, Controller_Manager); } catch { }
                }
            }
            catch (Exception Ex) { Sonic_Heroes_Networking_Client.SendData_Alternate(Message_Type.Client_Call_Send_Message, Encoding.ASCII.GetBytes(Mod_Name + " Failed To Load: " + Ex.Message + " | " + Ex.StackTrace), false); }
        }
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Misc_Menu_Items.Menu_Item_Super_Sonic_Flag)
                {
                    Program.Feature_Toggle_Super_Metal_Characters_X.Toggle_Super_Sonic();
                }
                else if (Menu_Index == (int)Misc_Menu_Items.Menu_Item_Super_Tails_Flag)
                {
                    Program.Feature_Toggle_Super_Metal_Characters_X.Toggle_Super_Tails();
                }
                else if (Menu_Index == (int)Misc_Menu_Items.Menu_Item_Super_Knuckles_Flag)
                {
                    Program.Feature_Toggle_Super_Metal_Characters_X.Toggle_Super_Knuckles();
                }
                else if (Menu_Index == (int)Misc_Menu_Items.Menu_Item_Metal_Characters_Flag)
                {
                    Program.Feature_Toggle_Super_Metal_Characters_X.Toggle_Metal_Characters();
                }

                // Redraw Menu
                Set_Toggle_State();

                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
        }
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Minimal_HUD_Toggle)
                {
                    Program.Feature_Minimal_HUD_X.Toggle_Minimal_HUD();
                }
                if (Menu_Index == (int)Menu_Items.Menu_Item_Disable_HUD)
                {
                    Program.Feature_Minimal_HUD_X.Toggle_HUD();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }

            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_X_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_X_Position(-0.01F);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_Y_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_Y_Position(-0.01F);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_Item_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_Vertical_Offset(-0.01F);
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_X_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_X_Position(+0.01F);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_Y_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_Y_Position(+0.01F);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Corner_Item_Offset)
                {
                    Program.Feature_Minimal_HUD_X.Change_Vertical_Offset(+0.01F);
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Main Controller Check Status Loop
        /// </summary>
        static void Heroes_Controller_Function_Override()
        {
            try
            {
                // Get Controller Information
                Sonic_Heroes_Joystick.Controller_Inputs_Generic Heroes_Controller_Button_Info = SonicHeroes_Joystick_Manager.PlayerControllers[0].Get_Whole_Controller_State();

                // Write Empty Axis First
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Trigger_Pressure, BitConverter.GetBytes(0x00));
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Trigger_Pressure_II, BitConverter.GetBytes(0x00));
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Trigger_Pressure, BitConverter.GetBytes(0x00));
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Trigger_Pressure_II, BitConverter.GetBytes(0x00));

                // Get Axis Values
                float Stick_X       = Heroes_Controller_Button_Info.LeftStick.X * 0.001F;          // Normal Range = -1000 to 1000. Scale to -1 to 1
                float Stick_Y       = Heroes_Controller_Button_Info.LeftStick.Y * 0.001F;          // Normal Range = -1000 to 1000. Scale to -1 to 1
                float Right_Stick_X = Heroes_Controller_Button_Info.RightStick.X * 0.001F;         // Normal Range = -1000 to 1000. Scale to -1 to 1
                float Right_Stick_Y = Heroes_Controller_Button_Info.RightStick.Y * 0.001F;         // Normal Range = -1000 to 1000. Scale to -1 to 1
                float LT_Pressure   = (Heroes_Controller_Button_Info.LeftTriggerPressure + 1000);  // Normal Range = -1000 to 1000. Changed to 0 - 2000.
                float RT_Pressure   = (Heroes_Controller_Button_Info.RightTriggerPressure + 1000); // Normal Range = -1000 to 1000. Changed to 0 - 2000.

                // Check if within permissible deadzone range and write into game memory.
                if (Stick_X > Controller_Deadzones.Deadzone_Left_Stick_X || Stick_X < (Controller_Deadzones.Deadzone_Left_Stick_X * -1.0F))
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Stick_X, BitConverter.GetBytes(Stick_X));
                }
                else
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Stick_X, BitConverter.GetBytes(0.000F));
                }

                if (Stick_Y > Controller_Deadzones.Deadzone_Left_Stick_Y || Stick_Y < -(Controller_Deadzones.Deadzone_Left_Stick_Y * -1.0F))
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Stick_Y, BitConverter.GetBytes(Stick_Y));
                }
                else
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Left_Stick_Y, BitConverter.GetBytes(0.000F));
                }

                if (Right_Stick_X > Controller_Deadzones.Deadzone_Right_Stick_X || Stick_X < (Controller_Deadzones.Deadzone_Right_Stick_X * -1.0F))
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Stick_X, BitConverter.GetBytes(Right_Stick_X));
                }
                else
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Stick_X, BitConverter.GetBytes(0.000F));
                }

                if (Right_Stick_Y > Controller_Deadzones.Deadzone_Right_Stick_Y || Right_Stick_Y < -(Controller_Deadzones.Deadzone_Right_Stick_Y * -1.0F))
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Stick_Y, BitConverter.GetBytes(Right_Stick_Y));
                }
                else
                {
                    Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Right_Stick_Y, BitConverter.GetBytes(0.000F));
                }

                // Obtain current Button II flags.
                SonicHeroes.Functions.SonicHeroes_Functions.Buttons_Flags_II Buttons_Flags_II = (SonicHeroes.Functions.SonicHeroes_Functions.Buttons_Flags_II)Sonic_Heroes_Process.ReadMemory <byte>((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Buttons_Flags_II, 1);
                if (LT_Pressure > Controller_Deadzones.Deadzone_Left_Trigger)
                {
                    Buttons_Flags_II = Buttons_Flags_II | SonicHeroes_Functions.Buttons_Flags_II.Left_Trigger;
                }
                if (RT_Pressure > Controller_Deadzones.Deadzone_Right_Trigger)
                {
                    Buttons_Flags_II = Buttons_Flags_II | SonicHeroes_Functions.Buttons_Flags_II.Right_Trigger;
                }


                // Write Button II flags.
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Buttons_Flags_II, new byte[1] {
                    (byte)Buttons_Flags_II
                });
                Sonic_Heroes_Process.WriteMemory((IntPtr)SonicHeroes_Functions.Controller_Polling_Functions.Variable_Controller_Buttons_Flags_II + 0x04, new byte[1] {
                    (byte)(0xFF - (byte)Buttons_Flags_II)
                });
            }
            catch { }
        }
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Sonic)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Sonic);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Knuckles)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Knuckles);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Tails)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Tails);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Shadow)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Shadow);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Omega)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Omega);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Rouge)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Rouge);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Amy)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Amy);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Big)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Big);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Cream)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Cream);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Espio)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Espio);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Vector)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Vector);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Charmy)
                {
                    Program.Feature_Physics_Swapper_X.Decrement_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Charmy);
                }

                // Refresh all Strings
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Sonic)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Sonic);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Knuckles)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Knuckles);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Tails)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Tails);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Shadow)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Shadow);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Omega)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Omega);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Rouge)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Rouge);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Amy)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Amy);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Big)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Big);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Cream)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Cream);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Espio)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Espio);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Vector)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Vector);
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Character_Assignment_Charmy)
                {
                    Program.Feature_Physics_Swapper_X.Increment_Current_Physics_Character(Feature_Physics_Swap.Characters_Heroes.Charmy);
                }

                // Refresh all Strings
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
        }
Exemplo n.º 11
0
        // Controller Handler
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check for directional button presses
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Check any known menu items
                if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Bank)
                {
                    Program.Feature_PAC_Clip_Player_X.Decrement_Current_Bank();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Sound)
                {
                    Program.Feature_PAC_Clip_Player_X.Decrement_Current_Bank_Sound();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Music_Track)
                {
                    Program.Feature_ADX_Player_X.Decrement_Current_ADX_Track();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_AFS_Archive)
                {
                    Program.Feature_AFS_Utilities_X.Decrement_Current_AFS_Archive();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Bank3_Bank_Archive)
                {
                    Program.Feature_PAC_Clip_Player_X.Decrement_Current_Bank3_Bank();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Sleep the thread for repeat inputs.
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Check any known menu items
                if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Bank)
                {
                    Program.Feature_PAC_Clip_Player_X.Increment_Current_Bank();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Sound)
                {
                    Program.Feature_PAC_Clip_Player_X.Increment_Current_Bank_Sound();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Music_Track)
                {
                    Program.Feature_ADX_Player_X.Increment_Current_ADX_Track();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_AFS_Archive)
                {
                    Program.Feature_AFS_Utilities_X.Increment_Current_AFS_Archive();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Bank3_Bank_Archive)
                {
                    Program.Feature_PAC_Clip_Player_X.Increment_Current_Bank3_Bank();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Sleep the thread for repeat inputs.
                DPAD_Longpress_Sleep();
            }

            // Toggle any items if necessary.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Check any known menu items
                if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Sound)
                {
                    Program.Feature_PAC_Clip_Player_X.Play_Sound_Bank();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Music_Track)
                {
                    Program.Feature_ADX_Player_X.Play_ADX_Track();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_AFS_Archive)
                {
                    Program.Feature_AFS_Utilities_X.Switch_AFS_File();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Bank3_Bank_Archive)
                {
                    Program.Feature_PAC_Clip_Player_X.Reload_Bank3();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Disable_Character_Action_Sounds)
                {
                    Program.Feature_Toggle_Character_Chatter_X.Toggle_CharacterChatter();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Current_Disable_Character_Comment_Sounds)
                {
                    Program.Feature_Toggle_Character_Chatter_X.Toggle_CharacterCommentChatter();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Toggle_Music_OnPause)
                {
                    Program.Feature_Toggle_Music_OnPause_X.Toggle_Music_OnPause();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Wait for user to release button.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
        }
        // Controller Handler
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check any known controller buttons.
            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                if (Menu_Index == (int)Menu_Items.Menu_Item_Field_Of_View_Scale)
                {
                    Program.Feature_Enhanced_FOV_Fix_X.Decrement_Field_Of_View_Scale();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Colour_Cycle_Rate)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Decrement_Colours_Per_Second();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Sleep the thread for repeat inputs.
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                if (Menu_Index == (int)Menu_Items.Menu_Item_Field_Of_View_Scale)
                {
                    Program.Feature_Enhanced_FOV_Fix_X.Increment_Field_Of_View_Scale();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Colour_Cycle_Rate)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Increment_Colours_Per_Second();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Sleep the thread for repeat inputs.
                DPAD_Longpress_Sleep();
            }

            // Check any known button presses.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Check Indexes
                if (Menu_Index == (int)Menu_Items.Menu_Item_Toggle_Aspect_Ratio_Fix)
                {
                    Program.Feature_Enhanced_FOV_Fix_X.Button_Set_FOV_Aspect_Ratio_Fix();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Formation_Barriers)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Toggle_HUE_Cycle_Formation_Barriers();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Character_Balls)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Toggle_HUE_Cycle_Character_Balls();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Character_Trails)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Toggle_HUE_Cycle_Character_Trails();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Character_Tornadoes)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Toggle_HUE_Cycle_Character_Tornadoes();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_RGB_Combined)
                {
                    Program.Feature_Cycle_RGB_Colours_X.Toggle_HUE_Cycle_All_Combined();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Wait for release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
        }
        // Controller Handler
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Enter_Level)
                {
                    Program.Feature_Force_Load_Level_X.Force_Load_Level();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Easy_Menu_Test)
                {
                    Program.Feature_Force_Load_Level_X.Force_Load_Debug_Menu();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_SET_Editor)
                {
                    Program.Feature_Set_Editor_X.SET_Editor_Toggle();
                }

                // Set Menu Bounds
                Set_Toggle_State();
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }

            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                if (Menu_Index == (int)Menu_Items.Menu_Item_Select_Level)
                {
                    Program.Feature_Force_Load_Level_X.Decrement_StageID_Index();
                }

                // Set Menu Bounds
                Set_Toggle_State();
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Sleep for Repeat Inputs.
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                if (Menu_Index == (int)Menu_Items.Menu_Item_Select_Level)
                {
                    Program.Feature_Force_Load_Level_X.Increment_StageID_Index();
                }

                // Set Menu Bounds
                Set_Toggle_State();
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Sleep for Repeat Inputs.
                DPAD_Longpress_Sleep();
            }
        }
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Magnetic_Barrier)
                {
                    Program.Feature_Magnetic_Barrier_X.Toggle_Magnetic_Barrier();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Party_Mode)
                {
                    Program.Feature_Party_Mode_X.Toggle_Party_Mode();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Magnetic_Barrier_Base_Speed)
                {
                    Program.Feature_Magnetic_Barrier_X.Decrement_Base_Speed();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Magnetic_Barrier_Distance_Speed)
                {
                    Program.Feature_Magnetic_Barrier_X.Decrement_Distance_Speed_Scale();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Toggle Super Sonic/Tails/Nipples Enchilada.
                if (Menu_Index == (int)Menu_Items.Menu_Item_Magnetic_Barrier_Base_Speed)
                {
                    Program.Feature_Magnetic_Barrier_X.Increment_Base_Speed();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Magnetic_Barrier_Distance_Speed)
                {
                    Program.Feature_Magnetic_Barrier_X.Increment_Distance_Speed_Scale();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
        }
Exemplo n.º 15
0
        /// Disable Default InputHandler
        public void Controller_Handler(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Get Information of whether the overlay should be shown and controls enabled.
            byte Is_Currently_In_Level = Program.Sonic_Heroes_Process.ReadMemory <byte>((IntPtr)SonicHeroesVariables.Game_CurrentState.CurrentlyInLevel, 1);

            // If menu is not open
            if (!Program.Draw_Current_Menu && Is_Currently_In_Level == 1)
            {
                if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
                {
                    // Back_Up_Characters
                    Back_Up_Character();

                    // Set Menu Text
                    Free_Movement_Mode_Menu.Set_Menu_Text(Player_Position_Index, Player_Positions[Player_Position_Index].Character_X, Player_Positions[Player_Position_Index].Character_Y, Player_Positions[Player_Position_Index].Character_Z);

                    // Longpress DPAD
                    Free_Movement_Mode_Menu.Wait_For_Controller_Release(Menu_Base.Controller_Keys.DPAD_LEFT, Controller_Manager);
                }
                else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
                {
                    // Restore Characters
                    Restore_Character();

                    // Longpress DPAD
                    Free_Movement_Mode_Menu.Wait_For_Controller_Release(Menu_Base.Controller_Keys.DPAD_RIGHT, Controller_Manager);
                }
                else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.UP)
                {
                    // Toggle Free Movement Mode
                    if (Free_Movement_Enabled)
                    {
                        // Enable Camera
                        Program.Sonic_Heroes_Process.WriteMemory
                        (
                            (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_Enabled,
                            BitConverter.GetBytes((short)1)
                        );

                        // Enable Gravity/Natural Positioning
                        Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x599376, new byte[] { 0xD9, 0x9D, 0x18, 0x01, 0x00, 0x00 });
                        //Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x599366, new byte[] { 0xD9, 0x19 });
                        //Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x59938A, new byte[] { 0xD9, 0x9D, 0x1C, 0x01, 0x00, 0x00 });

                        Free_Movement_Enabled = false;
                    }
                    else
                    {
                        // Disable Camera
                        Program.Sonic_Heroes_Process.WriteMemory
                        (
                            (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_Enabled,
                            BitConverter.GetBytes((short)0)
                        );

                        // Reset Camera Rotation
                        Program.Sonic_Heroes_Process.WriteMemory
                        (
                            (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_Angle_Horizontal_BAMS,
                            BitConverter.GetBytes((short)0)
                        );

                        // Disable Gravity/Natural Positioning
                        Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x599376, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
                        //Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x599366, new byte[] { 0x90, 0x90 });
                        //Program.Sonic_Heroes_Process.WriteMemory((IntPtr)0x59938A, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });

                        // Get Initial Positions.
                        int Player_Pointer = Program.Sonic_Heroes_Process.ReadMemory <int>((IntPtr)SonicHeroesVariables.Characters_Addresses.CurrentPlayerControlledCharacter_Pointer, 4);
                        Current_Player_Position.Character_X = Program.Sonic_Heroes_Process.ReadMemory <float>((IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.XPosition + Player_Pointer, 4);
                        Current_Player_Position.Character_Y = Program.Sonic_Heroes_Process.ReadMemory <float>((IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.YPosition + Player_Pointer, 4);
                        Current_Player_Position.Character_Z = Program.Sonic_Heroes_Process.ReadMemory <float>((IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.ZPosition + Player_Pointer, 4);

                        Free_Movement_Enabled = true;
                    }

                    // Longpress DPAD
                    Free_Movement_Mode_Menu.Wait_For_Controller_Release(Menu_Base.Controller_Keys.DPAD_UP, Controller_Manager);
                }
                else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.DOWN)
                {
                    // Cycle Current Position
                    Increment_Current_Position();

                    // Longpress DPAD
                    Free_Movement_Mode_Menu.Wait_For_Controller_Release(Menu_Base.Controller_Keys.DPAD_DOWN, Controller_Manager);
                }

                // If free movement is enabled, handle free movement.
                if (Free_Movement_Enabled)
                {
                    // Get Controller Information
                    Sonic_Heroes_Joystick.Controller_Inputs_Generic Heroes_Controller_Button_Info = Controller_Manager.PlayerControllers[Menu_Base.controllerIndex].Get_Whole_Controller_State();

                    // Get Axis Values
                    float Stick_X = P1_Controller.LeftStick.X * 0.001F;                        // Normal Range = -1000 to 1000. Scale to -1 to 1
                    float Stick_Y = P1_Controller.LeftStick.Y * 0.001F;                        // Normal Range = -1000 to 1000. Scale to -1 to 1

                    float LT_Pressure = (P1_Controller.LeftTriggerPressure + 1000) * 0.0005F;  // Normal Range = -1000 to 1000. Changed to 0 - 2000.
                    float RT_Pressure = (P1_Controller.RightTriggerPressure + 1000) * 0.0005F; // Normal Range = -1000 to 1000. Changed to 0 - 2000.

                    // 20% Deadzone
                    if (Stick_X < 0.20F && Stick_X > -0.20F)
                    {
                        Stick_X = 0.0F;
                    }
                    if (Stick_Y < 0.20F && Stick_Y > -0.20F)
                    {
                        Stick_Y = 0.0F;
                    }
                    if (LT_Pressure < 0.20F)
                    {
                        LT_Pressure = 0.0F;
                    }
                    if (RT_Pressure < 0.20F)
                    {
                        RT_Pressure = 0.0F;
                    }

                    // Get Current Player Location
                    int Player_Pointer = Program.Sonic_Heroes_Process.ReadMemory <int>((IntPtr)SonicHeroesVariables.Characters_Addresses.CurrentPlayerControlledCharacter_Pointer, 4);

                    // Set new positions
                    Current_Player_Position.Character_X += Stick_X * Max_Movement_Speed;
                    Current_Player_Position.Character_Y  = Current_Player_Position.Character_Y - (LT_Pressure * Max_Movement_Speed) + (RT_Pressure * Max_Movement_Speed);
                    Current_Player_Position.Character_Z += Stick_Y * Max_Movement_Speed;

                    // Manipulate Positions
                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.XPosition + Player_Pointer,
                        BitConverter.GetBytes(Current_Player_Position.Character_X)
                    );

                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.YPosition + Player_Pointer,
                        BitConverter.GetBytes(Current_Player_Position.Character_Y)
                    );

                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Characters_Addresses_Offsets.ZPosition + Player_Pointer,
                        BitConverter.GetBytes(Current_Player_Position.Character_Z)
                    );

                    // Manipulate Camera Positions
                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_X,
                        BitConverter.GetBytes(Current_Player_Position.Character_X)
                    );

                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_Y,
                        BitConverter.GetBytes(Current_Player_Position.Character_Y + 20.0F)
                    );

                    Program.Sonic_Heroes_Process.WriteMemory
                    (
                        (IntPtr)SonicHeroesVariables.Game_Camera_CurrentCamera.Camera_Z,
                        BitConverter.GetBytes(Current_Player_Position.Character_Z + 70.0F)
                    );
                }
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Main Menu Controller Handling Method
        /// </summary>
        public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
        {
            // Execute Base Controller Code. UP/DOWN navigation + back button.
            base.Handle_Controller_Inputs(P1_Controller, Controller_Manager);

            // Check menu to load if A_Button is pressed.
            if (P1_Controller.ControllerButtons.Button_A)
            {
                // Toggle X/Y/Z Button
                if (Menu_Index == (int)Menu_Items.Menu_Item_Light_Speed_Attack)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Toggle_Light_Speed_Attack();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Light_Speed_Dash)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Toggle_Light_Speed_Dash();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Invisibility_Fixes)
                {
                    Program.Feature_Invisibility_Fixes_X.Toggle_Invisibility_Fixes();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Hammer_Invisibility)
                {
                    Invisibility_Tweaks_Feature.Toggle_Hammer_Enables_Invisiblity();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Spin_Invisibility)
                {
                    Invisibility_Tweaks_Feature.Toggle_Spin_Enables_Invisiblity();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Player_Starts_Invisible)
                {
                    Invisibility_Tweaks_Feature.Toggle_Player_Starts_Invisible();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Set New Menu Bounds
                if (Program.Sonic_Heroes_Overlay.Ready_To_Render)
                {
                    Set_Drawing_Properties();
                }

                // Wait for button release.
                Wait_For_Controller_Release(Controller_Keys.Button_A, Controller_Manager);
            }

            if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.LEFT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Hammer_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Decrement_Tornado_Hammer_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Leaf_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Decrement_Tornado_Leaf_Swirl_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Unlimited_Triangle_Jump_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Decrement_Unlimited_Triangle_Jump_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Disabled_Triangle_Jump_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Decrement_No_Triangle_Jump_User();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
            else if (P1_Controller.ControllerDPad == (int)Sonic_Heroes_Joystick.DPAD_Direction.RIGHT)
            {
                // Toggle X/Y/Z Variable
                if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Hammer_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Increment_Tornado_Hammer_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Tornado_Leaf_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Increment_Tornado_Leaf_Swirl_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Unlimited_Triangle_Jump_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Increment_Unlimited_Triangle_Jump_User();
                }
                else if (Menu_Index == (int)Menu_Items.Menu_Item_Disabled_Triangle_Jump_User)
                {
                    Program.Feature_Toggle_Moveset_Restrictions_X.Increment_No_Triangle_Jump_User();
                }

                // Refresh Menu State
                Set_Toggle_State();

                // Longpress DPAD
                DPAD_Longpress_Sleep();
            }
        }
Exemplo n.º 17
0
 /// Disable Default InputHandler
 public override void Handle_Controller_Inputs(Sonic_Heroes_Joystick.Controller_Inputs_Generic P1_Controller, SonicHeroes.Controller.DirectInput_Joystick_Manager Controller_Manager)
 {
 }