public override void Draw(Graphics2D g)
        {
            Zone zoneOld = roomOld.Room.Zone;
            Zone zoneNew = roomNew.Room.Zone;

            if (zoneOld == zoneNew) {
                // Draw the rooms normally.
                DrawRooms(g);
            }
            else {
                // Fade between zones.

                // Switch to the temp render target to draw the new zone.
                g.End();
                g.SetRenderTarget(GameData.RenderTargetGameTemp);
                g.Begin(GameSettings.DRAW_MODE_DEFAULT);
                roomOld.Room.Zone = zoneNew;
                DrawRooms(g);
                roomOld.Room.Zone = zoneOld;

                // Switch to main render target to draw the old zone.
                g.End();
                g.SetRenderTarget(GameData.RenderTargetGame);
                g.Begin(GameSettings.DRAW_MODE_DEFAULT);
                roomNew.Room.Zone = zoneOld;
                DrawRooms(g);
                roomNew.Room.Zone = zoneNew;

                // Draw the temp render target (with the new zone) at an opacity.
                float opacity = (float) distance / (float) maxDistance;
                Color color = Color.White * opacity;
                g.DrawImage(GameData.RenderTargetGameTemp, Vector2F.Zero, Vector2F.Zero, Vector2F.One, 0.0, color);
            }
        }
Beispiel #2
0
        //-----------------------------------------------------------------------------
        // Drawing
        //-----------------------------------------------------------------------------
        // Called every step to draw the game.
        public void Draw(Graphics2D g)
        {
            g.UseIntegerPrecision = true;

            // Render the game-state stack to a buffer.
            g.SetRenderTarget(GameData.RenderTargetGame);
            g.Begin(GameSettings.DRAW_MODE_DEFAULT);
            g.Clear(Color.Black);
            gameStateStack.Draw(g);
            g.End();

            // Draw the buffer to the screen scaled.
            g.SetRenderTarget(null);
            g.ResetTranslation();
            g.Begin(GameSettings.DRAW_MODE_DEFAULT);
            g.DrawImage(GameData.RenderTargetGame, Vector2F.Zero, Vector2F.Zero, (Vector2F) gameScale, 0.0);
            g.End();
        }