]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/MapState.h
better accessibility of map-related properties
[l2e.git] / src / map / MapState.h
index 09ba35780b74f8dbb70ea52afb00c757bbd82b12..b243c3b07258cf9529d0bfe6e6309e56826569cf 100644 (file)
@@ -11,6 +11,7 @@ namespace map {
 
 #include "Entity.h"
 #include "../app/State.h"
+#include "../app/Timer.h"
 #include "../common/ScriptHost.h"
 #include "../common/ScriptRunner.h"
 #include "../math/Fixed.h"
@@ -37,7 +38,11 @@ public:
 
 public:
        void AddEntity(Entity *e) { entities.push_back(e); }
-       void ControlEntity(Entity *e) { controlled = e; camera.SetTarget(&e->Position()); }
+       void ControlEntity(Entity *e) { controlled = e; TrackControlled(); }
+       void Track(math::Vector<math::Fixed<8> > *t) { camera.SetTarget(t); }
+       void TrackControlled() { if (controlled) Track(&controlled->Position()); }
+
+       math::Vector<math::Fixed<8> > TrackPoint() const { return *camera.GetTarget(); }
 
        void SetWalkingSpeed(math::Fixed<8> s) { walkingSpeed = s; }
 
@@ -45,6 +50,9 @@ public:
 
        virtual void HandleSyscall(common::ScriptRunner &);
 
+       const graphics::Camera &GetCamera() const { return camera; }
+       Map *GetMap() { return map; }
+
 private:
        virtual void OnEnterState(SDL_Surface *screen);
        virtual void OnExitState(SDL_Surface *screen);
@@ -71,6 +79,7 @@ private:
 
        void LockEntities();
        bool CheckMonster();
+       void LoadBattle(Entity &hero, Entity &monster);
 
        bool CheckLockTrigger();
        bool CheckMoveTrigger();
@@ -92,6 +101,7 @@ private:
        graphics::Camera camera;
        std::vector<Entity *> entities;
        math::Fixed<8> walkingSpeed;
+       app::Timer<Uint32> tileAnimation;
        int nextDirection;
        bool afterLock;
        bool skipLock;