Kind of implemented engine_core loop. Implemented subsystem registration. Implement...
[plastic-engine.git] / src / engine.hpp
blob46e60826748f9197b2be5b578290e8695ae21896
1 // Plastic Engine
2 // Copyright (C) 2008 Albert Brown
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef ENGINE_HPP
18 #define ENGINE_HPP
20 #include <list>
22 #include "state.hpp"
25 class engine_subsystem
27 private:
29 public:
30 virtual void tick(state &s);
33 class engine_core
35 private:
36 std::list<std::pair<int, engine_subsystem *> > _subsystems;
38 state _state;
40 static engine_core *_instance;
41 public:
42 engine_core(int argc, char *argv[]);
43 ~engine_core();
45 void register_subsystem(engine_subsystem *sys, int order);
46 void release_subsystem(engine_subsystem *sys);
48 void run();
51 #endif