Example #1
0
        public override void Draw(GameTime gameTime)
        {
            float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;

            if (!pauseRender)
            {
                camera.Update(state.CGrid, RTSConstants.GAME_DELTA_TIME);
                renderer.Update(state);
                renderer.Draw(state, RTSConstants.GAME_DELTA_TIME);
            }
            else
            {
                G.Clear(Color.Black);
            }
            vInput.Draw(renderer, SB);
            DrawFPS(gameTime);
            game.DrawDevConsole();
            game.DrawMouse();

            if (tPopup != null)
            {
                SB.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied);
                SB.Draw(tPopup, rPopup, Color.White);
                SB.End();
            }

            if (end)
            {
                tl -= dt;
                if (tl < 0)
                {
                    State = ScreenState.ChangePrevious;
                }

                Vector2 center = new Vector2(G.Viewport.Width, G.Viewport.Height) * 0.5f;
                SB.Begin(SpriteSortMode.Immediate, BlendState.NonPremultiplied, SamplerState.LinearClamp, DepthStencilState.None, RasterizerState.CullNone);
                SB.Draw(
                    gResult < 0 ? tDefeat : tVictory,
                    center, null,
                    Color.Lerp(Color.Transparent, Color.White, MathHelper.Clamp(3f - tl, 0, 1)),
                    0f,
                    gResult < 0 ? ctD : ctV,
                    MathHelper.Lerp(0.3f, 1f, MathHelper.Clamp(3f - tl, 0, 1)),
                    SpriteEffects.None,
                    0f
                    );
                SB.End();
            }
            else if (state.gtC.VictoriousTeam.HasValue)
            {
                end     = true;
                tl      = 3f;
                gResult = state.gtC.VictoriousTeam.Value;
            }
        }