]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/MapState.h
closed the gap between battle and map state (yay)
[l2e.git] / src / map / MapState.h
index 96a5c22bec22a7cf9a9198ea215568193e74066a..a6d292b78d757b4b694e587ca29716f2e79333fd 100644 (file)
@@ -8,18 +8,22 @@
 #ifndef MAP_MAPSTATE_H_
 #define MAP_MAPSTATE_H_
 
+#include "Entity.h"
 #include "fwd.h"
 #include "../app/State.h"
+#include "../common/fwd.h"
 #include "../geometry/Vector.h"
 #include "../graphics/Camera.h"
 
+#include <vector>
+
 namespace map {
 
 class MapState
 : public app::State {
 
 public:
-       explicit MapState(const Map *);
+       explicit MapState(common::GameConfig *, Map *);
        virtual ~MapState() { }
 
 public:
@@ -33,10 +37,48 @@ public:
        virtual void UpdateWorld(float deltaT);
        virtual void Render(SDL_Surface *);
 
+public:
+       void AddEntity(Entity *e) { entities.push_back(e); }
+       void ControlEntity(Entity *e) { controlled = e; camera.SetTarget(&e->Position()); }
+
+       void SetWalkingSpeed(float s) { walkingSpeed = s; }
+
+       void Transition(Map *, const geometry::Vector<int> &coordinates);
+
+private:
+       static bool ZCompare(const Entity *lhs, const Entity *rhs);
+
+       void UnloadMap();
+       void LoadMap(Map *);
+
+       bool CheckBlocking() const;
+
+       void OnTileLock();
+       bool OnGridLock();
+       void OnMove(bool);
+
+       void UpdateFollower(Entity &);
+       void StopFollowers(Entity &);
+
+       void LockEntities();
+       bool CheckMonster();
+       bool CheckTrigger();
+
 private:
-       const Map *map;
-       geometry::Vector<int> tempTarget;
+       common::GameConfig *game;
+       app::Application *ctrl;
+       Map *map;
+       Entity *controlled;
+       app::Timer<float> moveTimer;
+       geometry::Vector<float> tempTarget;
+       geometry::Vector<int> lastLock;
        graphics::Camera camera;
+       std::vector<Entity *> entities;
+       float walkingSpeed;
+       int nextDirection;
+       bool afterLock;
+       bool skipLock;
+       bool debug;
 
 };