1+ // / \copyright
2+ // /
3+ // / See LICENSE.md in the distribution for the full license text including,
4+ // / but not limited to, a notice of warranty and distribution rights.
5+
16#ifndef RPGTOOLKIT_TRANS4_ENGINE_INCLUDED
27#define RPGTOOLKIT_TRANS4_ENGINE_INCLUDED
38
712#include " clio/system/SystemSettings.hpp"
813#include " clio/window/Window.hpp"
914#include " clio/common/Logger.hpp"
15+ #include " clio/graphics/Texture.hpp"
16+ #include " clio/graphics/Renderer2D.hpp"
1017
1118#include " Version.hpp"
1219#include " game/Game.hpp"
@@ -24,110 +31,28 @@ namespace rpgtoolkit {
2431
2532 struct Engine {
2633
27- const char * DEFAULT_LOG_FILENAME = " trans4.log" ;
28- const char * DEFAULT_SCRIPT_FILENAME = " main.lua" ;
29-
30- static Engine & GetInstance () {
31-
32- static Engine instance;
33- return instance;
34-
35- }
34+ static Engine & GetInstance ();
3635
3736 void
38- Configure () {
39-
40- clio::SystemSettings settings;
41-
42- // Configure default system settings
43-
44- settings.window .x = settings.window .POSITION_CENTERED ;
45- settings.window .y = settings.window .POSITION_CENTERED ;
46- settings.window .width = 640 ;
47- settings.window .height = 480 ;
48- settings.window .init_flags = 0 ;
49-
50- // Look for a game manifest in the current working directory
51- // and load settings from this file.
52-
53- auto manifest = assets_.Load <GameManifest>(" file://main.gam" );
54-
55- if (manifest) {
56-
57- settings.window .width = manifest->GetResolutionWidth ();
58- settings.window .height = manifest->GetResolutionHeight ();
59-
60- switch (manifest->GetDisplayMode ()) {
61- case DisplayMode::FULLSCREEN:
62- settings.window .init_flags |= settings.window .FULLSCREEN ;
63- break ;
64- case DisplayMode::BORDERLESS:
65- settings.window .init_flags |= settings.window .BORDERLESS ;
66- break ;
67- default :
68- break ;
69- }
70-
71- }
72-
73- system_->Initialize (settings);
74-
75- system_->GetWindow ()->SetTitle (
76- manifest ? manifest->GetTitle () : " RPG Toolkit 4.0" );
77-
78- }
37+ Configure ();
7938
8039 void
81- Run () {
82-
83- LOG (&log_, " RPG Toolkit %s" , GetVersion ().ToString ().c_str ());
84-
85- scripting_.Run (DEFAULT_SCRIPT_FILENAME);
86- game_.Run ();
87-
88- }
40+ Run ();
8941
9042 ScriptEngine &
91- GetScriptEngine () {
92-
93- return scripting_;
94-
95- }
43+ GetScriptEngine ();
9644
9745 AssetRepository &
98- GetAssets () {
99-
100- return assets_;
101-
102- }
46+ GetAssets ();
10347
10448 clio::Logger
105- GetLog () {
106-
107- return log_;
108-
109- }
49+ GetLog ();
11050
11151 Game &
112- GetGame () {
113-
114- return game_;
115-
116- }
52+ GetGame ();
11753
11854 Version const &
119- GetVersion () const {
120-
121- static Version v (
122- RPGTOOLKIT_VERSION_MAJOR,
123- RPGTOOLKIT_VERSION_MINOR,
124- RPGTOOLKIT_VERSION_PATCH,
125- RPGTOOLKIT_VERSION_RELEASE,
126- RPGTOOLKIT_VERSION_METADATA);
127-
128- return v;
129-
130- }
55+ GetVersion () const ;
13156
13257 private:
13358
@@ -143,22 +68,7 @@ namespace rpgtoolkit {
14368
14469 Engine (Engine const & rhs) = delete ;
14570
146- Engine ()
147- : system_(new clio::System()),
148- log_ (DEFAULT_LOG_FILENAME),
149- game_(system_.get()) {
150-
151- // Initialize the scripting runtime
152-
153- scripting_.Initialize (&game_, system_.get ());
154-
155- // Initialize supported repository resolvers and serializers
156-
157- assets_.RegisterSerializer <LegacyGameManifestSerializer>();
158- assets_.RegisterSerializer <LegacyTilesetSerializer>();
159- assets_.RegisterResolver <FileAssetHandleResolver>();
160-
161- }
71+ Engine ();
16272
16373 };
16474
0 commit comments