Magic_Game/project/Samples/main.cpp

83 lines
1.4 KiB
C++
Raw Normal View History

2019-02-03 21:45:56 +08:00
// Copyright (C) 2019 Nomango
#include "include-forwards.h"
namespace
{
struct Demo
{
String title;
ScenePtr(*Create)();
};
Demo s_Demos[] = {
{ L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo1::Create },
{ L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo2::Create },
{ L"<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo3::Create },
};
int s_DemoIndex = 0;
int s_DemoNum = sizeof(s_Demos) / sizeof(Demo);
}
class DemoApp
: public Application
{
public:
DemoApp()
{
Options options;
options.title = L"Easy2Dʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
options.width = WINDOW_WIDTH;
options.height = WINDOW_HEIGHT;
Init(options);
}
void OnStart() override
{
ChangeDemoScene();
}
void ChangeDemoScene()
{
Window::Instance()->SetTitle(s_Demos[s_DemoIndex].title);
ScenePtr scene = s_Demos[s_DemoIndex].Create();
EnterScene(scene);
// <20><><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
scene->AddListener(KeyboardEvent::Up, Closure(this, &DemoApp::KeyPressed));
// <20><>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
TextPtr intro = new Text(L"Key 1~3 to select demo");
intro->SetFontSize(16.f);
scene->AddChild(intro);
}
void KeyPressed(Event const& evt)
{
E2D_ASSERT(evt.type == KeyboardEvent::Up);
if (evt.key.code > KeyCode::Num0 &&
evt.key.code <= (KeyCode::Num0 + s_DemoNum))
{
s_DemoIndex = evt.key.code - KeyCode::Num1;
ChangeDemoScene();
}
}
};
int main()
{
try
{
DemoApp app;
app.Run();
}
catch (std::exception& e)
{
::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
}
return 0;
}