]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/MapState.h
new language, new compiler
[l2e.git] / src / map / MapState.h
index af66d241d40b6efe4a5a312e2b31f8735ff84559..8b9532db3bbbf7fb684bc4909a9dc6f77edba1ee 100644 (file)
@@ -1,13 +1,21 @@
 #ifndef MAP_MAPSTATE_H_
 #define MAP_MAPSTATE_H_
 
+namespace common {
+       struct GameConfig;
+}
+namespace map {
+       class Map;
+       class Trigger;
+}
+
 #include "Entity.h"
-#include "fwd.h"
 #include "../app/State.h"
-#include "../common/fwd.h"
+#include "../app/Timer.h"
 #include "../common/ScriptHost.h"
 #include "../common/ScriptRunner.h"
-#include "../geometry/Vector.h"
+#include "../math/Fixed.h"
+#include "../math/Vector.h"
 #include "../graphics/Camera.h"
 
 #include <vector>
@@ -25,19 +33,26 @@ public:
 
 public:
        virtual void HandleEvents(const app::Input &);
-       virtual void UpdateWorld(float deltaT);
+       virtual void UpdateWorld(Uint32 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 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(float s) { walkingSpeed = s; }
+       void SetWalkingSpeed(int s);
 
-       void Transition(Map *, const geometry::Vector<int> &coordinates);
+       void Transition(Map *, const math::Vector<int> &coordinates);
 
        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);
@@ -53,7 +68,7 @@ private:
        void LoadMap(Map *);
 
        bool CheckBlocking();
-       bool CheckBlocking(const geometry::Vector<int> &position, Entity::Orientation direction) const;
+       bool CheckBlocking(const math::Vector<int> &position, Entity::Orientation direction) const;
 
        void OnTileLock();
        bool OnGridLock();
@@ -64,6 +79,7 @@ private:
 
        void LockEntities();
        bool CheckMonster();
+       void LoadBattle(Entity &hero, Entity &monster);
 
        bool CheckLockTrigger();
        bool CheckMoveTrigger();
@@ -80,11 +96,12 @@ private:
        Entity *controlled;
        Entity *pushed;
        common::ScriptRunner runner;
-       app::Timer<float> moveTimer;
-       geometry::Vector<int> lastLock;
+       app::Timer<Uint32> moveTimer;
+       math::Vector<int> lastLock;
        graphics::Camera camera;
        std::vector<Entity *> entities;
-       float walkingSpeed;
+       math::Fixed<8> walkingSpeed;
+       app::Timer<Uint32> tileAnimation;
        int nextDirection;
        bool afterLock;
        bool skipLock;
@@ -95,4 +112,4 @@ private:
 
 }
 
-#endif /* MAP_MAPSTATE_H_ */
+#endif