示例#1
0
 public EConsole(SpriteBatch spriteBatch)
 {
     keyboardState = new KeyboardState();
     _spriteBatch  = spriteBatch;
     headLine      = new MText(_spriteBatch, new Vector2(10, 45), "", GameMain.fontTest);
     userinput     = new MInput(_spriteBatch, new Vector2(10, 10), "", GameMain.fontTest, keyboardState);
 }
示例#2
0
        public static void UpdateInputs()
        {
            UpdatePlayerInfo();
            kbState = Keyboard.GetState();
            GamePadState padState = GetGamePadState();

            HandleFrameRates(padState);
            CheckControls(padState);
            FrameStepping(padState);

            if (HasFlag(state, State.Enable))
            {
                Running = true;

                if (HasFlag(state, State.FrameStep))
                {
                    return;
                }

                if (HasFlag(state, State.Record))
                {
                    controller.RecordPlayer();
                }
                else
                {
                    bool fastForward = controller.HasFastForward;
                    controller.PlaybackPlayer();
                    if (fastForward && !controller.HasFastForward)
                    {
                        nextState |= State.FrameStep;
                        FrameLoops = 1;
                    }

                    if (!controller.CanPlayback)
                    {
                        DisableRun();
                    }
                }
                string status = controller.Current.Line + "[" + controller.ToString() + "]";
                CurrentStatus = status;
            }
            else
            {
                Running       = false;
                CurrentStatus = null;

                if (!Engine.Instance.IsActive)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        if (MInput.GamePads[i].Attached)
                        {
                            MInput.GamePads[i].CurrentState = padState;
                        }
                    }
                    MInput.UpdateVirtualInputs();
                }
            }
        }
示例#3
0
        public static void SetInputs(InputRecord input)
        {
            GamePadDPad        pad;
            GamePadThumbSticks sticks;

            if (input.HasActions(Actions.Feather))
            {
                pad    = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
                sticks = new GamePadThumbSticks(new Vector2(input.GetX(), input.GetY()), new Vector2(0, 0));
            }
            else
            {
                pad = new GamePadDPad(
                    input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
                    input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
                    );
                sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            }
            GamePadState state = new GamePadState(
                sticks,
                new GamePadTriggers(input.HasActions(Actions.Journal) ? 1f : 0f, 0),
                new GamePadButtons(
                    (input.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0)
                    | (input.HasActions(Actions.Jump2) ? Buttons.Y : (Buttons)0)
                    | (input.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0)
                    | (input.HasActions(Actions.Dash2) ? Buttons.X : (Buttons)0)
                    | (input.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0)
                    | (input.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0)
                    | (input.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0)
                    ),
                pad
                );

            bool found = false;

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    found = true;
                    MInput.GamePads[i].CurrentState = state;
                }
            }

            if (!found)
            {
                MInput.GamePads[0].CurrentState = state;
                MInput.GamePads[0].Attached     = true;
            }
            MInput.UpdateVirtualInputs();
        }
示例#4
0
        public void EatInput()
        {
            // prevent game from seeing any inputs
            // but keep a copy so we can get accurate pressed/released data for ourselves
            this.personalKeyboard = MInput.Keyboard.CurrentState;
            this.personalMouse    = MInput.Mouse.CurrentState;
            for (var i = 0; i < 4; i++)
            {
                this.personalGamepads[i] = MInput.GamePads[i].CurrentState;
            }

            MInput.UpdateNull();
        }
示例#5
0
        private void SetInputs()
        {
            GamePadDPad        pad;
            GamePadThumbSticks sticks;

            if (Current.HasActions(Actions.Feather))
            {
                pad    = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released);
                sticks = new GamePadThumbSticks(new Vector2(Current.GetX(), Current.GetY()), new Vector2(0, 0));
            }
            else
            {
                pad = new GamePadDPad(
                    Current.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
                    Current.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
                    );
                sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
            }
            GamePadState state = new GamePadState(
                sticks,
                new GamePadTriggers(Current.HasActions(Actions.Journal) ? 1f : 0f, 0),
                new GamePadButtons(
                    (Current.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0)
                    | (Current.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0)
                    | (Current.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0)
                    | (Current.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0)
                    | (Current.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0)
                    ),
                pad
                );

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    MInput.GamePads[i].CurrentState = state;
                }
            }
            MInput.UpdateVirtualInputs();
        }
示例#6
0
        private int getTouchCount(bool realTouch)
        {
            int count = 0;

            if (realTouch || MInput.Instance.enableRemote)
            {
                count = Input.touchCount;
            }
            else
            {
                if (Input.GetMouseButton(0) || Input.GetMouseButtonUp(0))
                {
                    count = 1;
                    if (MInput.GetSecondeFingerSimulation())
                    {
                        if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(MInput.Instance.twistKey) || Input.GetKey(KeyCode.LeftControl) || Input.GetKey(MInput.Instance.swipeKey))
                        {
                            count = 2;
                        }
                        if (Input.GetKeyUp(KeyCode.LeftAlt) || Input.GetKeyUp(MInput.Instance.twistKey) || Input.GetKeyUp(KeyCode.LeftControl) || Input.GetKeyUp(MInput.Instance.swipeKey))
                        {
                            count = 2;
                        }
                    }
                    if (count == 0)
                    {
                        complexCenter       = Vector2.zero;
                        oldMousePosition[0] = new Vector2(-1, -1);
                        oldMousePosition[1] = new Vector2(-1, -1);
                    }
                }
            }



            return(count);
        }
示例#7
0
 /// <summary>
 /// Determines whether this instance is over user interface element.
 /// </summary>
 /// <returns><c>true</c> if this instance is over user interface element; otherwise, <c>false</c>.</returns>
 public bool IsOverUIElement()
 {
     return(MInput.IsFingerOverUIElement(fingerIndex));
 }
示例#8
0
 /// <summary>
 /// Gets the current picked object.
 /// </summary>
 /// <returns>The current picked object.</returns>
 public GameObject GetCurrentPickedObject(bool isTwoFinger = false)
 {
     return(MInput.GetCurrentPickedObject(fingerIndex, isTwoFinger));
 }
        protected void CreateInputs()
        {
#if UNITY_EDITOR
            MInput input = GetComponent <MInput>();

            if (input == null)
            {
                input = gameObject.AddComponent <MInput>();
            }

            #region Open Close Input
            var OpenCloseInput = input.FindInput("OpenSelector");
            if (OpenCloseInput == null)
            {
                OpenCloseInput = new InputRow("OpenSelector", "OpenSelector", KeyCode.Escape, InputButton.Down, InputType.Key);
                input.inputs.Add(OpenCloseInput);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(OpenCloseInput.OnInputDown, ToggleSelector);
            }
            #endregion

            #region Submit Input
            var Submit = input.FindInput("Submit");
            if (Submit == null)
            {
                Submit = new InputRow("Submit", "Submit", KeyCode.Return, InputButton.Down, InputType.Key);
                input.inputs.Add(Submit);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(Submit.OnInputDown, Controller.Submit_Input);
            }
            #endregion

            #region ChangeLeft Input
            var ChangeLeft = input.FindInput("ChangeLeft");
            if (ChangeLeft == null)
            {
                ChangeLeft = new InputRow("ChangeLeft", "ChangeLeft", KeyCode.LeftArrow, InputButton.Down, InputType.Key);
                input.inputs.Add(ChangeLeft);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(ChangeLeft.OnInputDown, Controller.ChangeLeft);
            }
            #endregion

            #region ChangeRight Input
            var ChangeRight = input.FindInput("ChangeRight");
            if (ChangeRight == null)
            {
                ChangeRight = new InputRow("ChangeRight", "ChangeRight", KeyCode.RightArrow, InputButton.Down, InputType.Key);
                input.inputs.Add(ChangeRight);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(ChangeRight.OnInputDown, Controller.ChangeRight);
            }
            #endregion

            #region ChangeUp Input
            var ChangeUp = input.FindInput("ChangeUp");
            if (ChangeUp == null)
            {
                ChangeUp = new InputRow("ChangeUp", "ChangeUp", KeyCode.UpArrow, InputButton.Down, InputType.Key);
                input.inputs.Add(ChangeUp);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(ChangeUp.OnInputDown, Controller.ChangeUp);
            }
            #endregion

            #region ChangeDown Input
            var ChangeDown = input.FindInput("ChangeDown");
            if (ChangeDown == null)
            {
                ChangeDown = new InputRow("ChangeDown", "ChangeDown", KeyCode.DownArrow, InputButton.Down, InputType.Key);
                input.inputs.Add(ChangeDown);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(ChangeDown.OnInputDown, Controller.ChangeDown);
            }
            #endregion

            UnityEditor.EditorUtility.SetDirty(this);
            UnityEditor.EditorUtility.SetDirty(input);
#endif
        }
示例#10
0
        public static void UpdateInputs()
        {
            Player player      = null;
            long   chapterTime = 0;

            if (Engine.Scene is Level level)
            {
                player = level.Tracker.GetEntity <Player>();
                if (player != null)
                {
                    string statuses = ((int)(player.dashCooldownTimer * 60f) < 1 && player.Dashes > 0 ? "Dash " : string.Empty) + (player.LoseShards ? "Ground " : string.Empty) + (player.WallJumpCheck(1) ? "Wall-R " : string.Empty) + (player.WallJumpCheck(-1) ? "Wall-L " : string.Empty);
                    chapterTime = ((Celeste.Celeste)Engine.Instance).AutoSplitterInfo.ChapterTime;
                    Vector2 diff = (player.ExactPosition - lastPos) * 60;

                    if (player.Holding == null)
                    {
                        foreach (Component component in level.Tracker.GetComponents <Holdable>())
                        {
                            Holdable holdable = (Holdable)component;
                            if (holdable.Check(player))
                            {
                                statuses += "Grab ";
                                break;
                            }
                        }
                    }

                    StringBuilder sb = new StringBuilder();
                    sb.Append("Pos: ").Append(player.ExactPosition.X.ToString("0.0", enUS)).Append(',').AppendLine(player.ExactPosition.Y.ToString("0.0", enUS));
                    sb.Append("Speed: ").Append(player.Speed.X.ToString("0.00", enUS)).Append(',').Append(player.Speed.Y.ToString("0.00", enUS)).Append(',').AppendLine(player.Speed.Length().ToString("0.00", enUS));
                    sb.Append("Vel: ").Append(diff.X.ToString("0.00", enUS)).Append(',').Append(diff.Y.ToString("0.00", enUS)).Append(',').AppendLine(diff.Length().ToString("0.00", enUS));
                    sb.Append("Stamina: ").Append(player.Stamina.ToString("0")).Append(" Timer: ").AppendLine(((double)chapterTime / (double)10000000).ToString("0.000", enUS));
                    sb.Append(player.InControl && !level.Transitioning ? statuses : "NoControl ").Append(player.TimePaused ? "Paused " : string.Empty).Append(level.InCutscene ? "Cutscene " : string.Empty);
                    PlayerStatus = sb.ToString();
                }
                else
                {
                    PlayerStatus = level.InCutscene ? "Cutscene" : null;
                }
            }
            else if (Engine.Scene is SummitVignette summit)
            {
                PlayerStatus = string.Concat("SummitVignette ", summit.ready);
            }
            else if (Engine.Scene is Overworld overworld)
            {
                PlayerStatus = string.Concat("Overworld ", overworld.ShowInputUI);
            }
            else if (Engine.Scene != null)
            {
                PlayerStatus = Engine.Scene.GetType().Name;
            }

            kbState = Keyboard.GetState();
            GamePadState padState = GetGamePadState();

            HandleFrameRates(padState);
            CheckControls(padState);
            FrameStepping(padState);

            if (HasFlag(state, State.Enable))
            {
                Running = true;

                if (HasFlag(state, State.FrameStep))
                {
                    return;
                }

                if (HasFlag(state, State.Record))
                {
                    controller.RecordPlayer();
                }
                else
                {
                    bool fastForward = controller.HasFastForward;
                    controller.PlaybackPlayer();
                    if (fastForward && !controller.HasFastForward)
                    {
                        nextState |= State.FrameStep;
                        FrameLoops = 1;
                    }

                    if (!controller.CanPlayback)
                    {
                        DisableRun();
                    }
                }
                string status = controller.Current.Line + "[" + controller.ToString() + "]";
                CurrentStatus = status;
            }
            else
            {
                Running       = false;
                CurrentStatus = null;

                if (!Engine.Instance.IsActive)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        if (MInput.GamePads[i].Attached)
                        {
                            MInput.GamePads[i].CurrentState = padState;
                        }
                    }
                    MInput.UpdateVirtualInputs();
                }
            }

            if (player != null && chapterTime != lastTimer)
            {
                lastPos   = player.ExactPosition;
                lastTimer = chapterTime;
            }
        }
示例#11
0
        void ConnectToInput()
        {
            MInput input = GetComponent <MInput>();

            if (input == null)
            {
                input = gameObject.AddComponent <MInput>();
            }

            BoolVar RiderCombatMode = MalbersTools.GetInstance <BoolVar>("RC Combat Mode");

            BoolVar RCWeaponInput = MalbersTools.GetInstance <BoolVar>("RC Weapon Input");
            var     inv           = GetComponent <MInventory>();

            #region AIM INPUT

            var AIM = input.FindInput("Aim");
            if (AIM == null)
            {
                AIM = new InputRow("Aim", "Aim", KeyCode.Mouse1, InputButton.Press, InputType.Key);
                input.inputs.Add(AIM);

                AIM.active.Variable    = RiderCombatMode;
                AIM.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(AIM.OnInputChanged, SetAim);

                Debug.Log("<B>Aim</B> Input created and connected to RiderCombat.SetAim()");
            }
            #endregion

            #region RiderAttack1 INPUT
            var RCA1 = input.FindInput("RiderAttack1");
            if (RCA1 == null)
            {
                RCA1 = new InputRow("RiderAttack1", "RiderAttack1", KeyCode.Mouse0, InputButton.Press, InputType.Key);
                input.inputs.Add(RCA1);

                RCA1.active.Variable    = RiderCombatMode;
                RCA1.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA1.OnInputDown, MainAttack);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA1.OnInputUp, MainAttackReleased);

                Debug.Log("<B>RiderAttack1</B> Input created and connected to RiderCombat.MainAttack() and RiderCombat.MainAttackReleased() ");
            }
            #endregion

            #region RiderAttack2 INPUT
            var RCA2 = input.FindInput("RiderAttack2");
            if (RCA2 == null)
            {
                RCA2 = new InputRow("RiderAttack2", "RiderAttack2", KeyCode.Mouse1, InputButton.Press, InputType.Key);
                input.inputs.Add(RCA2);

                RCA2.active.Variable    = RiderCombatMode;
                RCA2.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA2.OnInputDown, SecondAttack);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA2.OnInputUp, SecondAttackReleased);

                Debug.Log("<B>RiderAttack2</B> Input created and connected to RiderCombat.SecondAttack() and RiderCombat.SecondAttackReleased() ");
            }
            #endregion

            #region Reload INPUT
            var Reload = input.FindInput("Reload");
            if (Reload == null)
            {
                Reload = new InputRow("Reload", "Reload", KeyCode.R, InputButton.Down, InputType.Key);
                input.inputs.Add(Reload);

                Reload.active.Variable    = RiderCombatMode;
                Reload.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(Reload.OnInputDown, ReloadWeapon);

                Debug.Log("<B>Reload</B> Input created and connected to RiderCombat.ReloadWeapon() ");
            }
            #endregion

            #region Weapon1 INPUT
            var w1 = input.FindInput("Weapon1");
            if (w1 == null)
            {
                w1 = new InputRow("Weapon1", "Weapon1", KeyCode.Alpha4, InputButton.Down, InputType.Key);
                input.inputs.Add(w1);

                w1.active.Variable    = RCWeaponInput;
                w1.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(w1.OnInputDown, Change_Weapon_Holder_Back);

                if (inv)
                {
                    UnityEditor.Events.UnityEventTools.AddIntPersistentListener(w1.OnInputDown, inv.EquipItem, 0);
                }

                Debug.Log("<B>Weapon1</B> Input created and connected to RiderCombat.Change_Weapon_Holder_Back() ");
            }
            #endregion

            #region Weapon2 INPUT
            var w2 = input.FindInput("Weapon2");
            if (w2 == null)
            {
                w2 = new InputRow("Weapon2", "Weapon2", KeyCode.Alpha5, InputButton.Down, InputType.Key);
                input.inputs.Add(w2);

                w2.active.Variable    = RCWeaponInput;
                w2.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(w2.OnInputDown, Change_Weapon_Holder_Left);

                if (inv)
                {
                    UnityEditor.Events.UnityEventTools.AddIntPersistentListener(w2.OnInputDown, inv.EquipItem, 1);
                }

                Debug.Log("<B>Weapon2</B> Input created and connected to RiderCombat.Change_Weapon_Holder_Left() ");
            }
            #endregion

            #region Weapon3 INPUT
            var w3 = input.FindInput("Weapon3");
            if (w3 == null)
            {
                w3 = new InputRow("Weapon3", "Weapon3", KeyCode.Alpha6, InputButton.Down, InputType.Key);
                input.inputs.Add(w3);

                w3.active.Variable    = RCWeaponInput;
                w3.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(w3.OnInputDown, Change_Weapon_Holder_Right);

                if (inv)
                {
                    UnityEditor.Events.UnityEventTools.AddIntPersistentListener(w3.OnInputDown, inv.EquipItem, 2);
                }

                Debug.Log("<B>Weapon3</B> Input created and connected to RiderCombat.Change_Weapon_Holder_Right() ");
            }
            #endregion
        }
 public RrtStarHelper(Random mRandom, RrtStarParameter mRrtParameter, int iTaskIndex, int iStageIndex, MInput mInput
                      , Func <FPoint3, bool> isSafePoint, Func <FPoint3, FPoint3, bool> isSafeLine)
 {
     this._mRandom      = mRandom;
     this.MRrtParameter = mRrtParameter;
     this.ITaskIndex    = iTaskIndex;
     this.IStageIndex   = iStageIndex;
     this._mInput       = mInput;
     this._isSafeLine   = isSafeLine;
     this._isSafePoint  = isSafePoint;
 }
示例#13
0
        void ConnectToInput()
        {
            MInput input = GetComponent <MInput>();

            if (input == null)
            {
                input = gameObject.AddComponent <MInput>();
            }

            BoolVar RiderCombatMode = MTools.GetInstance <BoolVar>("RC Combat Mode");

            BoolVar RCWeaponInput = MTools.GetInstance <BoolVar>("RC Weapon Input");


            #region AIM INPUT

            var AIM = input.FindInput("Aim");
            if (AIM == null)
            {
                AIM = new InputRow("Aim", "Aim", KeyCode.Mouse1, InputButton.Press, InputType.Key);
                input.inputs.Add(AIM);

                AIM.active.Variable    = RiderCombatMode;
                AIM.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(AIM.OnInputChanged, Aim_Set);
                Debug.Log("<B>Aim</B> Input created and connected to RiderCombat.SetAim()");
            }
            #endregion

            #region RiderAttack1 INPUT
            var RCA1 = input.FindInput("RiderAttack1");
            if (RCA1 == null)
            {
                RCA1 = new InputRow("RiderAttack1", "RiderAttack1", KeyCode.Mouse0, InputButton.Press, InputType.Key);
                input.inputs.Add(RCA1);

                RCA1.active.Variable    = RiderCombatMode;
                RCA1.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA1.OnInputDown, MainAttack);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA1.OnInputUp, MainAttackReleased);

                Debug.Log("<B>RiderAttack1</B> Input created and connected to RiderCombat.MainAttack() and RiderCombat.MainAttackReleased()");
            }
            #endregion

            #region RiderAttack2 INPUT
            var RCA2 = input.FindInput("RiderAttack2");
            if (RCA2 == null)
            {
                RCA2 = new InputRow("RiderAttack2", "RiderAttack2", KeyCode.Mouse1, InputButton.Press, InputType.Key);
                input.inputs.Add(RCA2);

                RCA2.active.Variable    = RiderCombatMode;
                RCA2.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA2.OnInputDown, SecondAttack);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(RCA2.OnInputUp, SecondAttackReleased);

                Debug.Log("<B>RiderAttack2</B> Input created and connected to RiderCombat.SecondAttack() and RiderCombat.SecondAttackReleased() ");
            }
            #endregion

            #region Reload INPUT
            var Reload = input.FindInput("Reload");
            if (Reload == null)
            {
                Reload = new InputRow("Reload", "Reload", KeyCode.R, InputButton.Down, InputType.Key);
                input.inputs.Add(Reload);

                Reload.active.Variable    = RiderCombatMode;
                Reload.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(Reload.OnInputDown, ReloadWeapon);

                Debug.Log("<B>Reload</B> Input created and connected to RiderCombat.ReloadWeapon() ");
            }
            #endregion

            EditorUtility.SetDirty(input);
        }
示例#14
0
        public static void UpdateInputs()
        {
            Level level = Engine.Scene as Level;

            if (level != null)
            {
                Player player = level.Tracker.GetEntity <Player>();
                if (player != null)
                {
                    string statuses = ((int)(player.dashCooldownTimer * 60f) < 1 && player.Dashes > 0 ? "Dash " : string.Empty) + (player.LoseShards ? "Ground " : string.Empty) + (player.WallJumpCheck(1) ? "Wall-R " : string.Empty) + (player.WallJumpCheck(-1) ? "Wall-L " : string.Empty);
                    string info     = "Pos: " + player.Position.X.ToString("0") + "," + player.Position.Y.ToString("0") + "\r\nSpeed: " + player.Speed.X.ToString("0.00") + "," + player.Speed.Y.ToString("0.00") + "," + player.Speed.Length().ToString("0.00") + "\r\nStamina: " + player.Stamina.ToString("0") + " Timer: " + ((double)((Celeste.Celeste)Engine.Instance).AutoSplitterInfo.ChapterTime / (double)10000000).ToString("0.000") + "\r\n" + (player.InControl && !level.Transitioning ? statuses : "NoControl ") + (player.TimePaused ? "Paused " : string.Empty) + (level.InCutscene ? "Cutscene " : string.Empty);
                    PlayerStatus = info;
                }
                else
                {
                    PlayerStatus = level.InCutscene ? "Cutscene" : null;
                }
            }
            else if (Engine.Scene != null)
            {
                PlayerStatus = Engine.Scene.GetType().Name;
            }

            GamePadState padState = GetGamePadState();

            HandleFrameRates(padState);
            CheckControls(padState);
            FrameStepping(padState);

            if (HasFlag(state, State.Enable))
            {
                Running = true;

                if (HasFlag(state, State.FrameStep))
                {
                    return;
                }

                if (HasFlag(state, State.Record))
                {
                    controller.RecordPlayer();
                }
                else
                {
                    bool fastForward = controller.HasFastForward;
                    controller.PlaybackPlayer();
                    if (fastForward && !controller.HasFastForward)
                    {
                        nextState |= State.FrameStep;
                        FrameLoops = 1;
                    }

                    if (!controller.CanPlayback)
                    {
                        DisableRun();
                    }
                }
                string status = controller.Current.Line + "[" + controller.ToString() + "]";
                CurrentStatus = status;
            }
            else
            {
                Running       = false;
                CurrentStatus = null;

                if (!Engine.Instance.IsActive)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        if (MInput.GamePads[i].Attached)
                        {
                            MInput.GamePads[i].CurrentState = padState;
                        }
                    }
                    MInput.UpdateVirtualInputs();
                }
            }
        }
示例#15
0
        void ConnectToInput()
        {
            MInput input = GetComponent <MInput>();

            if (input == null)
            {
                input = gameObject.AddComponent <MInput>();
            }


            #region Mount Input
            var mountInput = input.FindInput("Mount");

            if (mountInput == null)
            {
                mountInput = new InputRow("Mount", "Mount", KeyCode.F, InputButton.Down, InputType.Key);
                input.inputs.Add(mountInput);

                mountInput.active.Variable    = MalbersTools.GetInstance <BoolVar>("Can Mount");
                mountInput.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(mountInput.OnInputDown, MountAnimal);


                Debug.Log("<B>Mount</B> Input created and connected to Rider.MountAnimal");
            }
            #endregion

            #region Dismount Input


            var DismountInput = input.FindInput("Dismount");

            if (DismountInput == null)
            {
                DismountInput = new InputRow("Dismount", "Dismount", KeyCode.F, InputButton.LongPress, InputType.Key);

                DismountInput.LongPressTime = 0.2f;

                input.inputs.Add(DismountInput);

                DismountInput.active.Variable    = MalbersTools.GetInstance <BoolVar>("Can Dismount");
                DismountInput.active.UseConstant = false;

                var RiderDismountUI = MalbersTools.GetInstance <MEvent>("Rider Dismount UI");

                UnityEditor.Events.UnityEventTools.AddPersistentListener(DismountInput.OnLongPress, DismountAnimal);

                if (RiderDismountUI != null)
                {
                    UnityEditor.Events.UnityEventTools.AddPersistentListener(DismountInput.OnLongPress, RiderDismountUI.Invoke);
                    UnityEditor.Events.UnityEventTools.AddPersistentListener(DismountInput.OnPressedNormalized, RiderDismountUI.Invoke);
                    UnityEditor.Events.UnityEventTools.AddPersistentListener(DismountInput.OnInputUp, RiderDismountUI.Invoke);
                    UnityEditor.Events.UnityEventTools.AddIntPersistentListener(DismountInput.OnInputDown, RiderDismountUI.Invoke, 0);
                }


                Debug.Log("<B>Dismount</B> Input created and connected to Rider.DismountAnimal");
            }

            #endregion

            #region CanCallMount Input


            var CanCallMount = input.FindInput("Call Mount");

            if (CanCallMount == null)
            {
                CanCallMount = new InputRow("Call Mount", "Call Mount", KeyCode.F, InputButton.Down, InputType.Key);
                input.inputs.Add(CanCallMount);

                CanCallMount.active.Variable    = MalbersTools.GetInstance <BoolVar>("Can Call Mount");
                CanCallMount.active.UseConstant = false;

                UnityEditor.Events.UnityEventTools.AddPersistentListener(CanCallMount.OnInputDown, CallAnimalToggle);


                Debug.Log("<B>Call Mount</B> Input created and connected to Rider.CallAnimalToggle");
            }

            #endregion
        }