89 lines
1.5 KiB
C++
89 lines
1.5 KiB
C++
#include "PowderToySDL.h"
|
|
#include "graphics/Graphics.h"
|
|
#include "common/platform/Platform.h"
|
|
#include "common/tpt-rand.h"
|
|
#include "gui/font/FontEditor.h"
|
|
#include "gui/interface/Engine.h"
|
|
#include "Config.h"
|
|
#include "SimulationConfig.h"
|
|
#include <iostream>
|
|
#include <memory>
|
|
|
|
void LoadWindowPosition()
|
|
{
|
|
}
|
|
|
|
void SaveWindowPosition()
|
|
{
|
|
}
|
|
|
|
void LargeScreenDialog()
|
|
{
|
|
}
|
|
|
|
void TickClient()
|
|
{
|
|
}
|
|
|
|
struct ExplicitSingletons
|
|
{
|
|
// These need to be listed in the order they are populated in main.
|
|
std::unique_ptr<ui::Engine> engine;
|
|
};
|
|
static std::unique_ptr<ExplicitSingletons> explicitSingletons;
|
|
|
|
int main(int argc, char * argv[])
|
|
{
|
|
Platform::SetupCrt();
|
|
Platform::Atexit([]() {
|
|
SDLClose();
|
|
explicitSingletons.reset();
|
|
});
|
|
explicitSingletons = std::make_unique<ExplicitSingletons>();
|
|
|
|
WindowFrameOps windowFrameOps;
|
|
if (argc >= 3)
|
|
{
|
|
std::istringstream ss(argv[2]);
|
|
int buf;
|
|
if (ss >> buf)
|
|
{
|
|
windowFrameOps.scale = buf;
|
|
}
|
|
}
|
|
|
|
// TODO: maybe bind the maximum allowed scale to screen size somehow
|
|
if (windowFrameOps.scale < 1 || windowFrameOps.scale > 10)
|
|
{
|
|
windowFrameOps.scale = 1;
|
|
}
|
|
|
|
explicitSingletons->engine = std::make_unique<ui::Engine>();
|
|
|
|
auto &engine = ui::Engine::Ref();
|
|
engine.g = new Graphics();
|
|
engine.windowFrameOps = windowFrameOps;
|
|
|
|
SDLOpen();
|
|
|
|
engine.Begin();
|
|
engine.SetFastQuit(true);
|
|
|
|
if (argc >= 2)
|
|
{
|
|
engine.ShowWindow(new FontEditor(argv[1]));
|
|
}
|
|
else
|
|
{
|
|
std::cerr << "path to font.bz2 not supplied" << std::endl;
|
|
Platform::Exit(1);
|
|
}
|
|
|
|
while (engine.Running())
|
|
{
|
|
EngineProcess();
|
|
}
|
|
Platform::Exit(0);
|
|
return 0;
|
|
}
|