Example #1
0
        public static bool IsLoading()
        {
            SummitVignette summit = Engine.Scene as SummitVignette;

            if (summit != null)
            {
                return(!summit.ready);
            }
            Overworld overworld = Engine.Scene as Overworld;

            if (overworld != null)
            {
                OuiFileSelect slot = overworld.Current as OuiFileSelect;
                return(slot != null && slot.SlotIndex >= 0 && slot.Slots[slot.SlotIndex].StartingGame);
            }
            return((Engine.Scene is LevelExit) || (Engine.Scene is LevelLoader) || (Engine.Scene is OverworldLoader) || (Engine.Scene is GameLoader));
        }
Example #2
0
        public static void UpdateInputs()
        {
            Level  level       = Engine.Scene as Level;
            Player player      = null;
            long   chapterTime = 0;

            if (level != null)
            {
                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;
                    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));
                    Vector2 diff = (player.ExactPosition - lastPos) * 60;
                    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 != null)
            {
                SummitVignette summit = Engine.Scene as SummitVignette;
                if (summit != null)
                {
                    PlayerStatus = string.Concat("SummitVignette ", summit.ready);
                }
                else
                {
                    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();
                }
            }

            if (player != null && chapterTime != lastTimer)
            {
                lastPos   = player.ExactPosition;
                lastTimer = chapterTime;
            }
        }