2025-07-17 21:52:37 +03:00
|
|
|
#include "App.h"
|
|
|
|
|
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include "RoomEntity.h"
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
|
|
#ifdef __EMSCRIPTEN__
|
|
|
|
|
#include <emscripten.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
static NGame::TApp *app = nullptr;
|
|
|
|
|
|
|
|
|
|
static void InitApp(void) {
|
|
|
|
|
app = NGame::TApp::Instance();
|
|
|
|
|
|
2025-07-19 21:41:47 +03:00
|
|
|
app->EntityManager().RegisterEntity<THero>("HeroEntity");
|
2025-07-17 21:52:37 +03:00
|
|
|
app->EntityManager().RegisterEntity<TDirtEntity>("DirtEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TGrassEntity>("GrassEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TPlankEntity>("PlankEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TStoneEntity>("StoneEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TLadderEntity>("LadderEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TExplosionEntity>("ExplosionEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TKeyEntity>("KeyEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TMineEntity>("MineEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TCurseEntity>("CurseEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TSpikeEntity>("SpikeEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TEntranceEntity>("EntranceEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TExitEntity>("ExitEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TFloatingTextEntity>("FloatingTextEntity");
|
|
|
|
|
app->EntityManager().RegisterEntity<TBackgroundTiler>("BackgroundTiler");
|
|
|
|
|
app->EntityManager().RegisterEntity<TRoomEntity>("RoomEntity");
|
2025-07-19 10:27:42 +03:00
|
|
|
app->EntityManager().RegisterEntity<TRubbleEntity>("RubbleEntity");
|
2025-07-19 21:41:47 +03:00
|
|
|
app->EntityManager().RegisterEntity<TMainMenu>("MainMenu");
|
|
|
|
|
app->EntityManager().RegisterEntity<TIntroMenu>("IntroMenu");
|
|
|
|
|
app->EntityManager().RegisterEntity<TOutroMenu>("OutroMenu");
|
|
|
|
|
app->EntityManager().RegisterEntity<TEulaMenu>("EulaMenu");
|
|
|
|
|
app->EntityManager().RegisterEntity<TTorchEntity>("TorchEntity");
|
2025-07-20 10:06:04 +03:00
|
|
|
app->EntityManager().RegisterEntity<TGrenadeEntity>("GrenadeEntity");
|
2025-07-17 21:52:37 +03:00
|
|
|
|
2025-07-20 15:04:05 +03:00
|
|
|
app->AudioManager().SetVolume(.3);
|
2025-07-20 10:06:04 +03:00
|
|
|
app->EntityManager().AddToDeferred("IntroMenu");
|
2025-07-19 21:41:47 +03:00
|
|
|
app->EntityManager().Reset();
|
2025-07-17 21:52:37 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void MainLoop(void) {
|
|
|
|
|
if (app) {
|
|
|
|
|
app->Run();
|
|
|
|
|
} else {
|
|
|
|
|
InitApp();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main(int argc, char** argv)
|
|
|
|
|
{
|
2025-07-20 13:49:53 +03:00
|
|
|
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
|
2025-07-17 21:52:37 +03:00
|
|
|
|
|
|
|
|
srand(time(NULL));
|
|
|
|
|
|
|
|
|
|
#ifdef __EMSCRIPTEN__
|
|
|
|
|
emscripten_set_main_loop(MainLoop, -1, true);
|
|
|
|
|
#else
|
|
|
|
|
while (true) { MainLoop(); }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|