Functioning state before changing to using render targets

This commit is contained in:
Harrison Deng 2018-11-01 22:02:25 -05:00
parent 9da8233eda
commit 44b2c74ff5
8 changed files with 78 additions and 32 deletions

View File

@ -688,3 +688,15 @@
/processorParam:TextureFormat=Color /processorParam:TextureFormat=Color
/build:RhythmBullet.png /build:RhythmBullet.png
#begin loading_ring.png
/importer:TextureImporter
/processor:TextureProcessor
/processorParam:ColorKeyColor=255,0,255,255
/processorParam:ColorKeyEnabled=True
/processorParam:GenerateMipmaps=False
/processorParam:PremultiplyAlpha=True
/processorParam:ResizeToPowerOfTwo=False
/processorParam:MakeSquare=False
/processorParam:TextureFormat=Color
/build:loading_ring.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -65,7 +65,10 @@ namespace RhythmBullet
previousScreen = value; previousScreen = value;
Screen.Hide(); Screen.Hide();
} }
currentScreen = value; currentScreen = value;
currentScreen.ScreenSize.Width = graphics.PreferredBackBufferWidth;
currentScreen.ScreenSize.Height = graphics.PreferredBackBufferHeight;
Screen.Show(); Screen.Show();
} }
} }
@ -94,7 +97,7 @@ namespace RhythmBullet
// Create a new SpriteBatch, which can be used to draw textures. // Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice); spriteBatch = new SpriteBatch(GraphicsDevice);
QueueContent(); QueueContent();
Screen = new LoadingScreen(Content.Load<Texture2D>("RhythmBullet"), 0.5f, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight)); Screen = new LoadingScreen(Content.Load<Texture2D>("RhythmBullet"), 0.7f, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight));
} }
/// <summary> /// <summary>
@ -130,7 +133,7 @@ namespace RhythmBullet
case ScreenState.ExitTransition: case ScreenState.ExitTransition:
if (Screen.ExitingTransition(gameTime.ElapsedGameTime.TotalSeconds, Assets.Done, ref BackgroundColor)) if (Screen.ExitingTransition(gameTime.ElapsedGameTime.TotalSeconds, Assets.Done, ref BackgroundColor))
{ {
Screen = previousScreen != null ? previousScreen : new MainScreen(graphics.GraphicsDevice, BackgroundColor); Screen = previousScreen != null ? previousScreen : new MainScreen(graphics.GraphicsDevice, BackgroundColor, Assets);
} }
break; break;
case ScreenState.Normal: case ScreenState.Normal:
@ -166,7 +169,7 @@ namespace RhythmBullet
Assets.UnloadAll(); Assets.UnloadAll();
QueueContent(); QueueContent();
Screen.AssetLoadStateChange(true); Screen.AssetLoadStateChange(true);
Screen = new LoadingScreen(Content.Load<Texture2D>("loading_ring"), 0.4f, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight)); Screen = new LoadingScreen(Content.Load<Texture2D>("loading_ring"), 0.3f, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), true);
} }
private void PostResize() private void PostResize()

View File

@ -2,6 +2,7 @@
using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Graphics;
using RhythmBullet.Zer01HD.Game.Screens.Transitions; using RhythmBullet.Zer01HD.Game.Screens.Transitions;
using RhythmBullet.Zer01HD.UI; using RhythmBullet.Zer01HD.UI;
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
using RhythmBullet.Zer01HD.Utilities.UI; using RhythmBullet.Zer01HD.Utilities.UI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -13,11 +14,26 @@ namespace RhythmBullet.Zer01HD.Game.Screens
{ {
class MainScreen : Screen class MainScreen : Screen
{ {
Texture2D background;
FadeInTransition fadeInTransition; FadeInTransition fadeInTransition;
public MainScreen(GraphicsDevice graphicsDevice, Color transitionFromColor) : base(true) public MainScreen(GraphicsDevice graphicsDevice, Color transitionFromColor, ContentSystem assets) : base(true)
{ {
fadeInTransition = new FadeInTransition(graphicsDevice, transitionFromColor, ScreenSize); fadeInTransition = new FadeInTransition(graphicsDevice, transitionFromColor);
background = assets.Get<Texture2D>("backgrounds/mainBG");
}
public override void Show()
{
fadeInTransition.Init(ScreenSize);
base.Show();
}
public override void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(background, ScreenSize, Color.White);
fadeInTransition.Draw(spriteBatch);
base.Draw(spriteBatch);
} }
public override void EnteringTransition(double delta, bool assetsLoaded, ref Color backgroundColor) public override void EnteringTransition(double delta, bool assetsLoaded, ref Color backgroundColor)

View File

@ -3,6 +3,7 @@ using Microsoft.Xna.Framework.Graphics;
using RhythmBullet.Zer01HD.Utilities.UI; using RhythmBullet.Zer01HD.Utilities.UI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -11,36 +12,38 @@ namespace RhythmBullet.Zer01HD.Game.Screens.Transitions
{ {
internal class FadeInTransition : IDisposable internal class FadeInTransition : IDisposable
{ {
private const float RATE = 0.3f;
public readonly Texture2D curtain; public readonly Texture2D curtain;
Rectangle curtainSize; public Rectangle curtainSize;
Color color; private Color color;
private float progR, progG, progB, progA; private float progR, progG, progB, progA;
private float rR, rG, rB, rA; private float rR, rG, rB, rA;
private bool recorded; internal FadeInTransition(GraphicsDevice graphicsDevice, Color startColor)
internal FadeInTransition(GraphicsDevice graphicsDevice, Color startColor, Vector2 dimensions)
{ {
curtain = new Texture2D(graphicsDevice, 1, 1); curtain = new Texture2D(graphicsDevice, 1, 1);
curtain.SetData(new[] { startColor }); curtain.SetData(new[] { Color.White });
curtainSize.Width = (int)dimensions.X;
curtainSize.Height = (int)dimensions.Y;
color = startColor; color = startColor;
} }
internal void Init(Rectangle dimensions)
{
curtainSize = dimensions;
rR = (0 - color.R) / RATE;
rG = (0 - color.G) / RATE;
rB = (0 - color.B) / RATE;
rA = (0 - color.A) / RATE;
progA = color.A;
progR = color.R;
progG = color.G;
progB = color.B;
}
internal bool Fade(float deltaf) internal bool Fade(float deltaf)
{ {
if (progR > 0 || progG > 0 || progB > 0) if (progR > 0 || progG > 0 || progB > 0)
{ {
if (!recorded)
{
rR = (0 - color.R) / 1f;
rG = (0 - color.G) / 1f;
rB = (0 - color.B) / 1f;
rA = (0 - color.A) / 1f;
recorded = true;
}
progR += rR * deltaf; progR += rR * deltaf;
progR = Math.Max(progR, 0); progR = Math.Max(progR, 0);
progG += rG * deltaf; progG += rG * deltaf;
@ -55,7 +58,7 @@ namespace RhythmBullet.Zer01HD.Game.Screens.Transitions
color.A = (byte)progA; color.A = (byte)progA;
return false; return false;
} }
return true; return false;
} }
internal void Draw(SpriteBatch batch) internal void Draw(SpriteBatch batch)

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RhythmBullet.Zer01HD.Utilities.UI.Interactive
{
class BasicButton
{
}
}

View File

@ -9,6 +9,8 @@ namespace RhythmBullet.Zer01HD.Game
{ {
class LoadingScreen : Screen class LoadingScreen : Screen
{ {
private const float ENTER_RATE = 2f;
private const float EXIT_RATE = 1f;
readonly Texture2D texture; readonly Texture2D texture;
Color color; Color color;
Rectangle textureBounds; Rectangle textureBounds;
@ -53,9 +55,9 @@ namespace RhythmBullet.Zer01HD.Game
{ {
if (!recorded) if (!recorded)
{ {
rR = (Color.White.R - BGColor.R) / 2f; rR = (Color.White.R - BGColor.R) / ENTER_RATE;
rG = (Color.White.G - BGColor.G) / 2f; rG = (Color.White.G - BGColor.G) / ENTER_RATE;
rB = (Color.White.B - BGColor.B) / 2f; rB = (Color.White.B - BGColor.B) / ENTER_RATE;
recorded = true; recorded = true;
} }
progR += rR * deltaf; progR += rR * deltaf;
@ -85,7 +87,7 @@ namespace RhythmBullet.Zer01HD.Game
} }
if (progC > 0) if (progC > 0)
{ {
float rate = deltaf * 255 / 1f; float rate = deltaf * 255 / EXIT_RATE;
progC -= rate; progC -= rate;
progC = Math.Max(progC, 0); progC = Math.Max(progC, 0);
color.R = (byte)progC; color.R = (byte)progC;

View File

@ -12,10 +12,7 @@ namespace RhythmBullet.Zer01HD.Utilities.UI
public class Screen public class Screen
{ {
public virtual Vector2 ScreenSize public Rectangle ScreenSize;
{
get; set;
}
ScreenState state; ScreenState state;