Magic_Game/samples/Samples/main.cpp

87 lines
1.6 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 },
2019-03-18 15:00:58 +08:00
{ L"֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>", Demo4::Create },
2019-02-03 21:45:56 +08:00
};
int s_DemoIndex = 0;
int s_DemoNum = sizeof(s_Demos) / sizeof(Demo);
}
class DemoApp
: public Application
{
public:
DemoApp()
{
2019-03-18 15:00:58 +08:00
ShowConsole();
2019-03-11 17:24:11 +08:00
// ʹ<><CAB9> Audio <20><><EFBFBD><EFBFBD>
Use(&Audio::Instance());
2019-02-03 21:45:56 +08:00
2019-03-11 17:24:11 +08:00
Options options(L"Easy2Dʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WINDOW_WIDTH, WINDOW_HEIGHT);
2019-02-03 21:45:56 +08:00
Init(options);
}
void OnStart() override
{
ChangeDemoScene();
}
void ChangeDemoScene()
{
2019-03-18 15:00:58 +08:00
String title = s_Demos[s_DemoIndex].title;
GetWindow()->SetTitle(title);
2019-02-03 21:45:56 +08:00
ScenePtr scene = s_Demos[s_DemoIndex].Create();
EnterScene(scene);
// <20><><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
scene->AddListener(Event::KeyUp, Closure(this, &DemoApp::KeyPressed));
2019-02-03 21:45:56 +08:00
// <20><>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
2019-03-18 15:00:58 +08:00
String intro_str = format_wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1~%d <20><><EFBFBD>л<EFBFBD>ʾ<EFBFBD><CABE>\n", s_DemoNum);
TextPtr intro = new Text(intro_str + title);
2019-02-03 21:45:56 +08:00
intro->SetFontSize(16.f);
2019-03-18 15:00:58 +08:00
intro->SetPosition(10, 10);
2019-02-03 21:45:56 +08:00
scene->AddChild(intro);
}
void KeyPressed(Event const& evt)
{
E2D_ASSERT(evt.type == Event::KeyUp);
2019-02-03 21:45:56 +08:00
if (evt.key.code > KeyCode::Num0 &&
evt.key.code <= (KeyCode::Num0 + s_DemoNum))
{
s_DemoIndex = evt.key.code - KeyCode::Num1;
ChangeDemoScene();
}
}
};
int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
2019-02-03 21:45:56 +08:00
{
try
{
DemoApp app;
app.Run();
}
catch (std::exception& e)
{
2019-03-10 13:44:02 +08:00
::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_OK);
2019-02-03 21:45:56 +08:00
}
return 0;
}