mirror of
https://github.com/Halofreak1990/XFXFramework
synced 2024-12-26 13:49:34 +01:00
Now, the only thing keeping XFX from a full compile is my stupid attempt at Asynchronous IO. Will look at that, but most likely, I will comment it out and just get a new Demo out before New Year.
168 lines
4.3 KiB
C++
168 lines
4.3 KiB
C++
/********************************************************
|
|
* Game.h *
|
|
* *
|
|
* XFX Game class definition file *
|
|
* Copyright © XFX Team. All Rights Reserved *
|
|
********************************************************/
|
|
#ifndef _XFX_GAME_
|
|
#define _XFX_GAME_
|
|
|
|
#include <System/Delegates.h>
|
|
#include <System/Object.h>
|
|
#include <System/Types.h>
|
|
|
|
#include "Content/ContentManager.h"
|
|
#include "GameComponentCollection.h"
|
|
#include "GameServiceContainer.h"
|
|
#include "GameTime.h"
|
|
#include "Graphics/IGraphicsDeviceService.h"
|
|
#include "Interfaces.h"
|
|
|
|
using namespace System;
|
|
using namespace XFX::Content;
|
|
using namespace XFX::Graphics;
|
|
|
|
namespace XFX
|
|
{
|
|
/// <summary>
|
|
/// Provides basic graphics device initialization, game logic, and rendering code.
|
|
/// </summary>
|
|
class Game : public IDisposable, virtual Object
|
|
{
|
|
private:
|
|
bool exiting;
|
|
bool inRun;
|
|
bool isActive;
|
|
|
|
GameComponentCollection components;
|
|
List<IDrawable*> currentlyDrawingComponents;
|
|
List<IUpdateable*> currentlyUpdatingComponents;
|
|
List<IDrawable*> drawableComponents;
|
|
List<IUpdateable*> enabledUpdateable;
|
|
List<IGameComponent*> notYetInitialized;
|
|
GameServiceContainer services;
|
|
bool disposed;
|
|
GameTime gameTime;
|
|
TimeSpan inactiveSleepTime;
|
|
static const TimeSpan maximumElapsedTime;
|
|
IGraphicsDeviceManager* graphicsManager;
|
|
IGraphicsDeviceService* graphicsService;
|
|
|
|
static const Int64 DefaultTargetElapsedTicks;
|
|
|
|
protected:
|
|
virtual bool BeginDraw();
|
|
virtual void BeginRun();
|
|
virtual void Dispose(bool disposing);
|
|
virtual void Draw(GameTime gameTime);
|
|
virtual void EndDraw();
|
|
virtual void EndRun();
|
|
void Finalize();
|
|
virtual void LoadContent();
|
|
virtual void Initialize();
|
|
virtual void OnActivated(Object* sender, EventArgs args);
|
|
virtual void OnDeactivated(Object* sender, EventArgs args);
|
|
virtual void OnExiting(Object* sender, EventArgs args);
|
|
virtual void UnloadContent();
|
|
virtual void Update(GameTime gameTime);
|
|
|
|
public:
|
|
GameComponentCollection Components();
|
|
//ContentManager Content;
|
|
GraphicsDevice GraphicsDevice_();
|
|
GameServiceContainer Services();
|
|
bool IsActive();
|
|
|
|
bool IsFixedTimeStep;
|
|
bool IsMouseVisible;
|
|
TimeSpan TargetElapsedTime;
|
|
|
|
EventHandler Activated;
|
|
EventHandler Deactivated;
|
|
EventHandler Disposed;
|
|
EventHandler Exiting;
|
|
|
|
Game();
|
|
virtual ~Game();
|
|
|
|
void Dispose();
|
|
void Exit();
|
|
void ResetElapsedTime();
|
|
void Run();
|
|
void SuppressDraw();
|
|
void Tick();
|
|
};
|
|
|
|
/// <summary>
|
|
/// Base class for all XNA Framework game components.
|
|
/// </summary>
|
|
class GameComponent : public IGameComponent, public IUpdateable, public IDisposable, virtual Object
|
|
{
|
|
private:
|
|
Game _game;
|
|
bool _disposed;
|
|
bool _enabled;
|
|
int _updateOrder;
|
|
|
|
protected:
|
|
virtual void Dispose(bool disposing);
|
|
virtual ~GameComponent();
|
|
|
|
virtual void OnEnabledChanged(Object* sender, EventArgs args);
|
|
virtual void OnUpdateOrderChanged(Object* sender, EventArgs args);
|
|
|
|
public:
|
|
bool Enabled();
|
|
void Enabled(bool value);
|
|
int UpdateOrder();
|
|
void UpdateOrder(int value);
|
|
Game Game_();
|
|
|
|
EventHandler EnabledChanged;
|
|
EventHandler UpdateOrderChanged;
|
|
EventHandler Disposed;
|
|
|
|
GameComponent(Game game);
|
|
GameComponent();
|
|
|
|
virtual void Dispose();
|
|
virtual void Initialize();
|
|
virtual void Update(GameTime gameTime);
|
|
};
|
|
|
|
/// <summary>
|
|
/// A game component that is notified when it needs to draw itself.
|
|
/// </summary>
|
|
class DrawableGameComponent : public GameComponent, public IDrawable, virtual Object
|
|
{
|
|
private:
|
|
int _drawOrder;
|
|
bool _visible;
|
|
IGraphicsDeviceService* _graphicsService;
|
|
|
|
protected:
|
|
void Dispose(bool disposing);
|
|
virtual void LoadContent();
|
|
virtual void OnDrawOrderChanged(Object* sender, EventArgs args);
|
|
virtual void OnVisibleChanged(Object* sender, EventArgs args);
|
|
virtual void UnloadContent();
|
|
|
|
public:
|
|
int DrawOrder();
|
|
void DrawOrder(int value);
|
|
GraphicsDevice GraphicsDevice_();
|
|
bool Visible();
|
|
void Visible(bool value);
|
|
|
|
EventHandler DrawOrderChanged;
|
|
EventHandler VisibleChanged;
|
|
|
|
DrawableGameComponent(Game game);
|
|
virtual void Draw(GameTime gameTime);
|
|
void Initialize();
|
|
virtual void Update(GameTime gameTime);
|
|
};
|
|
}
|
|
|
|
#endif //_XFX_GAME_
|