-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGameWindow.cs
More file actions
137 lines (110 loc) · 4.14 KB
/
GameWindow.cs
File metadata and controls
137 lines (110 loc) · 4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using NuciXNA.DataAccess.Content;
using NuciXNA.Graphics;
using NuciXNA.Gui;
using NuciXNA.Gui.Screens;
using NuciXNA.Input;
using SokoGrump.Gui;
using SokoGrump.Gui.Screens;
using SokoGrump.Settings;
namespace SokoGrump
{
/// <summary>
/// This is the main type for the game.
/// </summary>
public class GameWindow : Game
{
readonly GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
readonly FpsIndicator fpsIndicator;
readonly Cursor cursor;
/// <summary>
/// Initializes a new instance of the <see cref="GameWindow"/> class.
/// </summary>
public GameWindow()
{
graphics = new GraphicsDeviceManager(this)
{
PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8
};
Content.RootDirectory = "Content";
fpsIndicator = new FpsIndicator();
cursor = new Cursor();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: Logging
//LogManager.Instance.LogsDirectory = ApplicationPaths.LogsDirectory;
//LogManager.Instance.LoadContent();
//LogManager.Instance.Info(Operation.GameStart, OperationStatus.Started);
GraphicsManager.Instance.SpriteBatch = spriteBatch;
GraphicsManager.Instance.Graphics = graphics;
NuciContentManager.Instance.LoadContent(Content, GraphicsDevice);
SettingsManager.Instance.LoadContent();
ScreenManager.Instance.SpriteBatch = spriteBatch;
ScreenManager.Instance.StartingScreenType = typeof(SplashScreen);
ScreenManager.Instance.LoadContent();
fpsIndicator.LoadContent();
cursor.LoadContent();
// TODO: Logging
//LogManager.Instance.Info(Operation.GameStart, OperationStatus.Success);
}
/// <summary>
/// Unloads the content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Logging
//LogManager.Instance.Info(Operation.GameStop, OperationStatus.Started);
ScreenManager.Instance.UnloadContent();
FpsIndicator.UnloadContent();
cursor.UnloadContent();
// TODO: Logging
//LogManager.Instance.Info(Operation.GameStop, OperationStatus.Success);
//LogManager.Instance.UnloadContent();
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
SettingsManager.Instance.Update();
ScreenManager.Instance.Update(gameTime);
if (IsActive)
{
InputManager.Instance.Update(Window);
}
else // TODO: It shouldn't reset them every single tick when the window's not active
{
InputManager.Instance.ResetInputStates();
}
fpsIndicator.Update(gameTime);
cursor.Update(gameTime);
base.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
ScreenManager.Instance.Draw(spriteBatch);
fpsIndicator.Draw(spriteBatch);
cursor.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
}