LPCGame
A Simple 2d Game Engine
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
state.h
1 #ifndef STATE_H
2 #define STATE_H
3 
4 #include <string>
5 #include <memory>
6 #include "external/json/json.h"
7 #include "entitymanager.h"
8 #include "camera.h"
9 #include "luascript.h"
10 
12 
16 class State {
17 public:
18  State();
19  virtual ~State();
25  virtual std::string Run();
31  void SetExit(std::string val);
33  void UnsetExit();
35  std::shared_ptr<EntityManager> Manager();
40  void SetName(std::string name);
42  std::string Name();
47  virtual Json::Value Save();
52  virtual void Load(Json::Value val);
53 
54 protected:
61  //virtual void RenderThread() = 0;
67  //virtual void PhysicsThread() = 0;
69  virtual void Init();
71  virtual void Free();
74  virtual void LogicUpdate();
76  virtual void RenderUpdate();
77 
78 protected:
79  std::shared_ptr<EntityManager> mManager;
80  std::shared_ptr<Camera> mCamera;
81  std::string mName;
82  //Should this be atomic?
83  bool mExit;
84  std::string mExitCode;
88  //std::condition_variable mCondVar;
89  //Do i need this?
90  //std::atomic<bool> mCondBool;
91 };
92 
93 
94 #endif