// xna.cpp : Defines the entry point for the application. // #include "xna.hpp" using namespace std; using namespace xna; namespace xna { class Game1 : public Game { public: Game1() : Game() { Content()->RootDirectory("Content"); } void Initialize() override { auto game = reinterpret_cast(this); graphics = New(game->shared_from_this()); graphics->Initialize(); std::any device = graphicsDevice; services->AddService(*typeof(), device); Game::Initialize(); } void LoadContent() override { spriteBatch = New(*graphicsDevice); texture = Content()->Load("sampleTexture"); Game::LoadContent(); } void Update(GameTime const& gameTime) override { if (Keyboard::GetState().IsKeyDown(Keys::Escape) || GamePad::GetState(PlayerIndex::One).IsButtonDown(Buttons::Back)) Exit(); Game::Update(gameTime); } void Draw(GameTime const& gameTime) override { graphicsDevice->Clear(Colors::CornflowerBlue); spriteBatch->Begin(); if(texture) spriteBatch->Draw(*texture, Vector2(), Colors::White); spriteBatch->End(); Game::Draw(gameTime); } private: sptr graphics = nullptr; sptr spriteBatch = nullptr; sptr texture = nullptr; }; } int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { xna::Platform::Init(); auto game = snew(); const auto result = game->Run(); return result; }