コード例 #1
0
    public InputActionData GetInputActionData(TriggerAction.TYPE trigger)
    {
        InputActionData[] array = null;
        int actionId            = InputHelpers.GetActionId(trigger);

        this.m_ActionsByInputAction.TryGetValue(actionId, out array);
        return(array[(int)GreenHellGame.Instance.m_Settings.m_ControllerType]);
    }
コード例 #2
0
 public InputActionData GetActionDataByTriggerAction(TriggerAction.TYPE trigger_action, ControllerType controller_type = ControllerType._Count)
 {
     InputActionData[] array;
     if (this.m_ActionsByInputAction.TryGetValue(InputHelpers.GetActionId(trigger_action), out array))
     {
         return(array[(int)((controller_type == ControllerType._Count) ? GreenHellGame.Instance.m_Settings.m_ControllerType : controller_type)]);
     }
     return(null);
 }
コード例 #3
0
 public void ApplyOptions(Dictionary <int, int> actions_by_input_action, Dictionary <int, int> actions_by_trigger_action, ControllerType controller_type)
 {
     foreach (KeyValuePair <int, int> keyValuePair in actions_by_input_action)
     {
         int actionId = ((InputsManager.InputAction)keyValuePair.Key).GetActionId(TriggerAction.TYPE.None);
         InputActionData[] array;
         if (!this.m_ActionsByInputAction.TryGetValue(actionId, out array))
         {
             array = new InputActionData[2];
             this.m_ActionsByInputAction.Add(actionId, array);
         }
         if (array[(int)controller_type] != null)
         {
             array[(int)controller_type].m_KeyCode = (KeyCode)keyValuePair.Value;
         }
         else
         {
             Debug.Log("");
         }
     }
     foreach (KeyValuePair <int, int> keyValuePair2 in actions_by_trigger_action)
     {
         int actionId2 = InputHelpers.GetActionId((TriggerAction.TYPE)keyValuePair2.Key);
         InputActionData[] array2;
         if (!this.m_ActionsByInputAction.TryGetValue(actionId2, out array2))
         {
             array2 = new InputActionData[2];
             this.m_ActionsByInputAction.Add(actionId2, array2);
         }
         if (array2[(int)controller_type] != null)
         {
             array2[(int)controller_type].m_KeyCode = (KeyCode)keyValuePair2.Value;
         }
         else
         {
             Debug.Log("");
         }
     }
     foreach (KeyValuePair <int, InputActionData[]> keyValuePair3 in this.m_ActionsByInputAction)
     {
         InputActionData[] value = keyValuePair3.Value;
         for (int i = 0; i < value.Length; i++)
         {
             InputActionData act = value[i];
             if (act != null && act.m_KeyCode != KeyCode.None)
             {
                 KeyCode keyCode = act.m_KeyCode;
                 List <InputActionData> list;
                 if (!this.m_ActionsByKeyCode.TryGetValue((int)keyCode, out list))
                 {
                     list = new List <InputActionData>();
                     this.m_ActionsByKeyCode.Add((int)keyCode, list);
                 }
                 if (!list.Any((InputActionData a) => a.m_Action == act.m_Action && a.m_TriggerAction == act.m_TriggerAction))
                 {
                     if (keyValuePair3.Value[(int)controller_type] != null)
                     {
                         InputActionData inputActionData = keyValuePair3.Value[(int)controller_type].ShallowCopy();
                         foreach (int key in this.m_ActionsByKeyCode.Keys)
                         {
                             List <InputActionData> list2 = this.m_ActionsByKeyCode[key];
                             bool flag = false;
                             foreach (InputActionData inputActionData2 in list2)
                             {
                                 if ((inputActionData2.m_Action != InputsManager.InputAction.None && inputActionData2.m_Action == inputActionData.m_Action) || (inputActionData2.m_TriggerAction != TriggerAction.TYPE.None && inputActionData2.m_TriggerAction == inputActionData.m_TriggerAction))
                                 {
                                     this.m_ActionsByKeyCode[key].Remove(inputActionData2);
                                     flag = true;
                                     break;
                                 }
                             }
                             if (flag)
                             {
                                 break;
                             }
                         }
                         list.Add(inputActionData);
                     }
                     else
                     {
                         Debug.Log("");
                     }
                 }
             }
         }
     }
     this.m_ActiveActionsByInputAction.Clear();
     this.m_ActiveHoldActionsByTriggerAction.Clear();
     this.m_InputActionsToRemove.Clear();
     GC.Collect();
 }
コード例 #4
0
 public float GetActionValue(TriggerAction.TYPE action)
 {
     return(this.GetActionValue(InputHelpers.GetActionId(action)));
 }
コード例 #5
0
    private void UpdateActions()
    {
        bool pause = Time.timeScale == 0f;

        foreach (KeyValuePair <int, List <InputActionData> > keyValuePair in this.GetActionsByKeyCode())
        {
            int key = keyValuePair.Key;
            if (Input.GetKeyDown((KeyCode)key))
            {
                foreach (InputActionData inputActionData in this.GetActionsByKeyCode()[key])
                {
                    if (inputActionData.m_ControllerType == GreenHellGame.Instance.m_Settings.m_ControllerType)
                    {
                        if (inputActionData.m_Type == InputsManager.InputActionType.Down && inputActionData.m_Hold == 0f)
                        {
                            this.OnAction(inputActionData, pause);
                            if (inputActionData.m_TriggerAction != TriggerAction.TYPE.None)
                            {
                                if (!this.m_ActiveActionsByInputAction.ContainsKey(InputHelpers.GetActionId(inputActionData.m_TriggerAction)))
                                {
                                    this.m_ActiveActionsByInputAction.Add(InputHelpers.GetActionId(inputActionData.m_TriggerAction), (KeyCode)key);
                                }
                            }
                            else if (!this.m_ActiveActionsByInputAction.ContainsKey(inputActionData.m_Action.GetActionId(TriggerAction.TYPE.None)))
                            {
                                this.m_ActiveActionsByInputAction.Add(inputActionData.m_Action.GetActionId(TriggerAction.TYPE.None), (KeyCode)key);
                            }
                        }
                        else if (this.CanActivateHold(inputActionData))
                        {
                            inputActionData.m_StartHoldTime = Time.time;
                            if (!this.m_ActiveHoldActionsByTriggerAction.ContainsKey((int)inputActionData.m_TriggerAction))
                            {
                                this.m_ActiveHoldActionsByTriggerAction.Add((int)inputActionData.m_TriggerAction, inputActionData);
                            }
                        }
                        if (inputActionData.m_Type == InputsManager.InputActionType.Down)
                        {
                            inputActionData.m_LastPressTime = Time.time;
                        }
                    }
                }
            }
            else if (Input.GetKeyUp((KeyCode)key))
            {
                if (key == 323 && this.m_OmitMouseUp)
                {
                    this.m_OmitMouseUp = false;
                }
                else
                {
                    foreach (InputActionData inputActionData2 in this.GetActionsByKeyCode()[key])
                    {
                        if (inputActionData2.m_ControllerType == GreenHellGame.Instance.m_Settings.m_ControllerType)
                        {
                            if (inputActionData2.m_Type == InputsManager.InputActionType.Up && inputActionData2.m_Hold == 0f)
                            {
                                this.OnAction(inputActionData2, pause);
                            }
                            else if (inputActionData2.m_Type == InputsManager.InputActionType.Up && inputActionData2.m_Hold > 0f && inputActionData2.m_StartHoldTime > 0f && Time.time - inputActionData2.m_StartHoldTime >= inputActionData2.m_Hold)
                            {
                                this.OnAction(inputActionData2, pause);
                            }
                            inputActionData2.m_StartHoldTime = 0f;
                            if (this.m_ActiveHoldActionsByTriggerAction.ContainsKey((int)inputActionData2.m_TriggerAction))
                            {
                                this.m_ActiveHoldActionsByTriggerAction.Remove((int)inputActionData2.m_TriggerAction);
                            }
                            if (inputActionData2.m_Type == InputsManager.InputActionType.Up)
                            {
                                inputActionData2.m_LastReleaseTime = Time.time;
                            }
                        }
                    }
                }
            }
            foreach (InputActionData inputActionData3 in this.GetActionsByKeyCode()[key])
            {
                if (inputActionData3.m_ControllerType == GreenHellGame.Instance.m_Settings.m_ControllerType && inputActionData3.m_Type == InputsManager.InputActionType.Down && inputActionData3.m_StartHoldTime > 0f && Time.time - inputActionData3.m_StartHoldTime >= inputActionData3.m_Hold)
                {
                    this.OnAction(inputActionData3, pause);
                    if (inputActionData3.m_TriggerAction != TriggerAction.TYPE.None)
                    {
                        this.m_ActiveActionsByInputAction.Remove(InputHelpers.GetActionId(inputActionData3.m_TriggerAction));
                    }
                    else
                    {
                        this.m_ActiveActionsByInputAction.Remove(inputActionData3.m_Action.GetActionId(TriggerAction.TYPE.None));
                    }
                    inputActionData3.m_StartHoldTime = 0f;
                    if (this.m_ActiveHoldActionsByTriggerAction.ContainsKey((int)inputActionData3.m_TriggerAction))
                    {
                        this.m_ActiveHoldActionsByTriggerAction.Remove((int)inputActionData3.m_TriggerAction);
                    }
                }
            }
            Dictionary <string, List <InputActionData> > .Enumerator enumerator5;
            foreach (KeyValuePair <string, List <InputActionData> > keyValuePair2 in this.m_ActionsByAxis)
            {
                float axis = this.GetAxis(keyValuePair2.Key);
                keyValuePair2 = enumerator5.Current;
                foreach (InputActionData inputActionData4 in keyValuePair2.Value)
                {
                    if (inputActionData4.m_ControllerType == GreenHellGame.Instance.m_Settings.m_ControllerType)
                    {
                        float num = Mathf.Max(0f, axis * (inputActionData4.m_Inverted ? -1f : 1f));
                        if (!inputActionData4.m_Analog)
                        {
                            if (inputActionData4.m_Value == 0f)
                            {
                                if (inputActionData4.m_AxisValue <= inputActionData4.m_Histeresis.x && num > inputActionData4.m_Histeresis.x)
                                {
                                    if (inputActionData4.m_Type == InputsManager.InputActionType.Down)
                                    {
                                        if (inputActionData4.m_Hold == 0f)
                                        {
                                            this.OnAction(inputActionData4, pause);
                                        }
                                        else if (this.CanActivateHold(inputActionData4))
                                        {
                                            inputActionData4.m_StartHoldTime = Time.time;
                                            if (!this.m_ActiveHoldActionsByTriggerAction.ContainsKey((int)inputActionData4.m_TriggerAction))
                                            {
                                                this.m_ActiveHoldActionsByTriggerAction.Add((int)inputActionData4.m_TriggerAction, inputActionData4);
                                            }
                                        }
                                        inputActionData4.m_LastPressTime = Time.time;
                                    }
                                    inputActionData4.m_Value = 1f;
                                }
                            }
                            else if (inputActionData4.m_AxisValue > inputActionData4.m_Histeresis.y && num <= inputActionData4.m_Histeresis.y)
                            {
                                if (inputActionData4.m_Type == InputsManager.InputActionType.Up)
                                {
                                    this.OnAction(inputActionData4, pause);
                                }
                                inputActionData4.m_LastReleaseTime = Time.time;
                                inputActionData4.m_StartHoldTime   = 0f;
                                inputActionData4.m_Value           = 0f;
                            }
                        }
                        if (num != inputActionData4.m_AxisValue)
                        {
                            inputActionData4.m_AxisValue = num;
                            if (inputActionData4.m_Analog)
                            {
                                inputActionData4.m_Value = num;
                            }
                        }
                    }
                }
            }
            foreach (KeyValuePair <string, List <InputActionData> > keyValuePair2 in this.m_ActionsByAxis)
            {
                this.GetAxis(keyValuePair2.Key);
                keyValuePair2 = enumerator5.Current;
                foreach (InputActionData inputActionData5 in keyValuePair2.Value)
                {
                    if (inputActionData5.m_ControllerType == GreenHellGame.Instance.m_Settings.m_ControllerType && !inputActionData5.m_Analog && inputActionData5.m_Type == InputsManager.InputActionType.Down && inputActionData5.m_StartHoldTime > 0f && Time.time - inputActionData5.m_StartHoldTime >= inputActionData5.m_Hold)
                    {
                        this.OnAction(inputActionData5, pause);
                        if (inputActionData5.m_TriggerAction != TriggerAction.TYPE.None)
                        {
                            this.m_ActiveActionsByInputAction.Remove(InputHelpers.GetActionId(inputActionData5.m_TriggerAction));
                        }
                        else
                        {
                            this.m_ActiveActionsByInputAction.Remove(inputActionData5.m_Action.GetActionId(TriggerAction.TYPE.None));
                        }
                        inputActionData5.m_StartHoldTime = 0f;
                        if (this.m_ActiveHoldActionsByTriggerAction.ContainsKey((int)inputActionData5.m_TriggerAction))
                        {
                            this.m_ActiveHoldActionsByTriggerAction.Remove((int)inputActionData5.m_TriggerAction);
                        }
                    }
                }
            }
        }
    }