I played around with armor customization for my avatar and transformed myself into a COG soldier inspired by Gears of War. This is an in-game video of of it running inside the cyclone game engine. The menu background scene has been updated as well. This was just for fun and learning purposes.
Showing posts with label splash screens. Show all posts
Showing posts with label splash screens. Show all posts
Friday, July 1, 2022
Wednesday, November 2, 2016
43. How to Add Splash Screens to the Menu System
#region File Description
/* ============================================
* SplashScreens.cs
* ============================================
*
* Upon the game's startup, Splash Screens are shown. The first screen shows the
* company logo and then it slowly fades away and displays the game engine logo.
* After the game engine logo fades away, the user is taken to the Title Screen.
*
*
*/
#endregion
#region Using Statements
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace CycloneGameEngine
{
class SplashScreens : GameScreen
{
#region Fields
public enum GameType { Splash1, Splash2}
GameType gametype = new GameType();
#region Splash Screens
#region Studio Logo
Texture2D StudioLogo;
float logoFade = 0;
bool wasNorm = false;
bool logoStarted = false;
#endregion End of Studio Logo
#region Engine Logo
Texture2D EngineLogo;
float logoFade2 = 0;
bool wasNorm2 = false;
bool logoStarted2 = false;
#endregion End of Engine Logo
#endregion End of Splash Screens
ContentManager content;
#endregion
#region Initialization
// Constructor.
public SplashScreens()
{
}
// Loads graphics content for this screen. The background texture is quite
// big, so we use our own local ContentManager to load it. This allows us
// to unload before going from the menus into the game itself, wheras if we
// used the shared ContentManager provided by the Game class, the content
// would remain loaded forever.
//
public override void LoadContent()
{
if (content == null)
content = new ContentManager(ScreenManager.Game.Services, "Content");
StudioLogo = content.Load<Texture2D>
EngineLogo = content.Load<Texture2D>
}
// Unloads graphics content for this screen.
public override void UnloadContent()
{
content.Unload();
}
#endregion
#region Update and Draw
// Updates the background screen. Unlike most screens, this should not
// transition off even if it has been covered by another screen: it is
// supposed to be covered, after all! This overload forces the
// coveredByOtherScreen parameter to false in order to stop the base
// Update method wanting to transition off.
public override void Update(GameTime gameTime, bool otherScreenHasFocus,
bool coveredByOtherScreen)
{
#region Update the 1st Splash Screen
gametype = GameType.Splash1;
// If we are at the splash screen
if (gametype == GameType.Splash1)
{
if (!logoStarted)
{
logoStarted = true;
}
// Fade the logo in , then out.
if ((logoFade <= 245) && (wasNorm == false))
logoFade += (float)0.8;
if (logoFade > 244)
wasNorm = true;
if ((logoFade > 11) && (wasNorm == true))
logoFade -= 1;
if ((logoFade < 11) && (wasNorm == true))
{
gametype = GameType.Splash2;
}
}
#endregion End of Drawing the 1st Splash Screen
#region Update 2nd Splash Screen
if (gametype == GameType.Splash2)
{
if (!logoStarted2)
{
logoStarted2 = true;
}
// Fade the logo in , then out.
if ((logoFade2 <= 245) && (wasNorm2 == false))
logoFade2 += (float)0.8;
if (logoFade2 > 244)
wasNorm2 = true;
if ((logoFade2 > 11) && (wasNorm2 == true))
logoFade2 -= 1;
if ((logoFade2 < 11) && (wasNorm2 == true))
{
ExitScreen();
}
}
#endregion End of Drawing the 2nd Splash Screen
base.Update(gameTime, false, false);
}
// Draws the splash screens.
public override void Draw(GameTime gameTime)
{
SpriteBatch spriteBatch = ScreenManager.SpriteBatch;
#region Draw the 1st Splash Screen
if (gametype == GameType.Splash1)
{
// Set the background color to black
ScreenManager.GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Additive, SamplerState.PointWrap, DepthStencilState.Default, null);
// Draw the logo to screen.
spriteBatch.Draw(StudioLogo, new Vector2(ScreenManager.GraphicsDevice.Viewport.Width / 2 - (StudioLogo.Width / 2), ScreenManager.GraphicsDevice.Viewport.Height / 2 - (StudioLogo.Height / 2)), new Color(255, 255, 255, (byte)logoFade));
// End the spritebatch
spriteBatch.End();
}
#endregion End of Drawing the 1st Splash Screen
#region Draw the 2nd Splash Screen
if (gametype == GameType.Splash2)
{
// Set the background color to black
ScreenManager.GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Additive, SamplerState.PointWrap, DepthStencilState.Default, null);
// Draw the logo to screen.
spriteBatch.Draw(EngineLogo, new Vector2(ScreenManager.GraphicsDevice.Viewport.Width / 2 - (EngineLogo.Width / 2), ScreenManager.GraphicsDevice.Viewport.Height / 2 - (EngineLogo.Height / 2)), new Color(255, 255, 255, (byte)logoFade2));
// End the spritebatch
spriteBatch.End();
}
#endregion End of Drawing the 2nd Splash Screen
}
#endregion
}
}
Subscribe to:
Posts (Atom)
