diff --git a/Exemple/MainGame.cs b/Exemple/MainGame.cs
index ab7f1a4..7f43252 100644
--- a/Exemple/MainGame.cs
+++ b/Exemple/MainGame.cs
@@ -10,7 +10,7 @@ namespace Exemple
{
enum GameState { Menu, Credit }
- GraphicsDeviceManager graphics;
+ ScreenManager screen;
SpriteBatch spriteBatch;
ResourcesManager resources;
InputsManager inputs;
@@ -22,16 +22,7 @@ namespace Exemple
public MainGame()
{
- graphics = new GraphicsDeviceManager(this);
-
- Window.AllowUserResizing = true;
- Window.AllowUserResizing = true;
- Window.ClientSizeChanged += delegate
- {
- graphics.PreferredBackBufferWidth = Window.ClientBounds.Width;
- graphics.PreferredBackBufferHeight = Window.ClientBounds.Height;
- graphics.ApplyChanges();
- };
+ screen = new ScreenManager(this);
Content.RootDirectory = "Content";
@@ -41,13 +32,7 @@ namespace Exemple
protected override void Initialize()
{
- graphics.PreferredBackBufferWidth = 800;
- graphics.PreferredBackBufferHeight = 600;
- graphics.IsFullScreen = false;
- graphics.ApplyChanges();
-
- IsMouseVisible = true;
-
+ screen.Initialize(new Vector(800, 600), false, true, true);
base.Initialize();
}
@@ -73,37 +58,37 @@ namespace Exemple
protected override void Draw(GameTime gameTime)
{
- graphics.GraphicsDevice.Clear(Color.DarkGray);
+ screen.Clear(Color.DarkGray);
spriteBatch.Begin();
ui.Texture(new Rectangle(10, 10, 200, 150), resources.Textures["Background"]);
switch (state)
{
case GameState.Credit:
- ui.Box(new Rectangle(200, 100, graphics.PreferredBackBufferWidth - 400, graphics.PreferredBackBufferWidth - 200), new Colors(Color.LightGray, Color.White));
- ui.Label(new Vector(graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight / 4), "By Sheychen", new Colors(Color.Red, Color.OrangeRed), null, UIManager.textAlign.centerCenter);
- if (ui.Button(new Rectangle(graphics.PreferredBackBufferWidth / 2 - 100, graphics.PreferredBackBufferHeight / 2 - 100, 200, 40), "My website"))
+ ui.Box(new Rectangle(200, 100, screen.size.X - 400, screen.size.X - 200), new Colors(Color.LightGray, Color.White));
+ ui.Label(new Vector(screen.size.X / 2, screen.size.Y / 4), "By Sheychen", new Colors(Color.Red, Color.OrangeRed), null, UIManager.textAlign.centerCenter);
+ if (ui.Button(new Rectangle(screen.size.X / 2 - 100, screen.size.Y / 2 - 100, 200, 40), "My website"))
{
Process.Start("https://sheychen.shost.ca");
}
- if (ui.Button(new Rectangle(graphics.PreferredBackBufferWidth / 2 - 100, graphics.PreferredBackBufferHeight / 2 - 50, 200, 40), "Show on GitHub"))
+ if (ui.Button(new Rectangle(screen.size.X / 2 - 100, screen.size.Y / 2 - 50, 200, 40), "Show on GitHub"))
{
Process.Start("https://github.com/sheychen290/MyMonoGame");
}
- if (ui.Button(new Rectangle(graphics.PreferredBackBufferWidth / 2 - 100, graphics.PreferredBackBufferHeight / 2, 200, 40), "Back"))
+ if (ui.Button(new Rectangle(screen.size.X / 2 - 100, screen.size.Y / 2, 200, 40), "Back"))
{
state = GameState.Menu;
}
break;
case GameState.Menu:
- ui.Label(new Vector(graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight / 4), "MyMonoGameAddin", new Colors(Color.Black, Color.Green), resources.Fonts["Title"], UIManager.textAlign.centerCenter);
- if (ui.TextField(new Vector(graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight / 2), ref Github, new Colors(Color.White, Color.WhiteSmoke, Color.LightGray), null, UIManager.textAlign.centerCenter, "Search on Github"))
+ ui.Label(new Vector(screen.size.X / 2, screen.size.Y / 4), "MyMonoGameAddin", new Colors(Color.Black, Color.Green), resources.Fonts["Title"], UIManager.textAlign.centerCenter);
+ if (ui.TextField(new Vector(screen.size.X / 2, screen.size.Y / 2), ref Github, new Colors(Color.White, Color.WhiteSmoke, Color.LightGray), null, UIManager.textAlign.centerCenter, "Search on Github"))
{
Process.Start("https://github.com/search?q=" + Github);
Github = null;
}
- if (ui.Button(new Rectangle(graphics.PreferredBackBufferWidth / 2 - 100, graphics.PreferredBackBufferHeight * 3 / 4 + 50, 200, 40), "About", null, new Colors(Color.Black, Color.Green)))
+ if (ui.Button(new Rectangle(screen.size.X / 2 - 100, screen.size.Y * 3 / 4 + 50, 200, 40), "About", null, new Colors(Color.Black, Color.Green)))
{
state = GameState.Credit;
}
diff --git a/MyMonoGameAddin/MyMonoGameAddin.csproj b/MyMonoGameAddin/MyMonoGameAddin.csproj
index 51e3705..0057360 100644
--- a/MyMonoGameAddin/MyMonoGameAddin.csproj
+++ b/MyMonoGameAddin/MyMonoGameAddin.csproj
@@ -43,6 +43,7 @@
+
\ No newline at end of file
diff --git a/MyMonoGameAddin/ScreenManager.cs b/MyMonoGameAddin/ScreenManager.cs
new file mode 100644
index 0000000..29b9b3f
--- /dev/null
+++ b/MyMonoGameAddin/ScreenManager.cs
@@ -0,0 +1,52 @@
+using System;
+using Microsoft.Xna.Framework;
+
+namespace MyMonoGameAddin
+{
+ public class ScreenManager
+ {
+ public Vector size = Vector.Zero;
+ public GraphicsDeviceManager graphics;
+ Game _game;
+
+ public ScreenManager(Game game)
+ {
+ _game = game;
+ graphics = new GraphicsDeviceManager(game);
+ }
+
+ public void Initialize(Vector buffersize, bool fullScreen, bool resizeing, bool mouse)
+ {
+ size = buffersize;
+ graphics.PreferredBackBufferWidth = size.X;
+ graphics.PreferredBackBufferHeight = size.Y;
+ graphics.IsFullScreen = fullScreen;
+ graphics.ApplyChanges();
+
+ _game.Window.AllowUserResizing = resizeing;
+ if (resizeing)
+ _game.Window.ClientSizeChanged += Window_ClientSizeChanged;
+
+ _game.IsMouseVisible = mouse;
+ }
+
+ public void Clear(Color color)
+ {
+ graphics.GraphicsDevice.Clear(color);
+ }
+
+ bool WindowSizeIsBeingChanged = false;
+ void Window_ClientSizeChanged(object sender, EventArgs e)
+ {
+ WindowSizeIsBeingChanged = !WindowSizeIsBeingChanged;
+ if (WindowSizeIsBeingChanged)
+ {
+ size.X = _game.Window.ClientBounds.Width;
+ size.Y = _game.Window.ClientBounds.Height;
+ graphics.PreferredBackBufferWidth = size.X;
+ graphics.PreferredBackBufferHeight = size.Y;
+ graphics.ApplyChanges();
+ }
+ }
+ }
+}