#include "Entity.h"
#include "../app/State.h"
+#include "../app/Timer.h"
#include "../common/ScriptHost.h"
#include "../common/ScriptRunner.h"
#include "../math/Fixed.h"
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; }
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);
void LockEntities();
bool CheckMonster();
+ void LoadBattle(Entity &hero, Entity &monster);
bool CheckLockTrigger();
bool CheckMoveTrigger();
graphics::Camera camera;
std::vector<Entity *> entities;
math::Fixed<8> walkingSpeed;
+ app::Timer<Uint32> tileAnimation;
int nextDirection;
bool afterLock;
bool skipLock;