]> git.localhorst.tv Git - l2e.git/commitdiff
check tile lock in Entity
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 30 Sep 2012 14:50:17 +0000 (16:50 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 30 Sep 2012 14:50:17 +0000 (16:50 +0200)
src/map/Entity.cpp
src/map/Entity.h
src/map/Map.h
src/map/MapState.cpp

index 01cbe7f619e8b37aaf20ee051c72e038837a27a7..c14c9a0e7321a25b43e5fa64875545c3be974dd5 100644 (file)
@@ -7,6 +7,8 @@
 
 #include "Entity.h"
 
+using geometry::Vector;
+
 namespace map {
 
 Entity::Entity()
@@ -15,12 +17,20 @@ Entity::Entity()
 }
 
 
+bool Entity::TileLock(int width, int height) const {
+       Vector<int> tilePosition(
+                       position.X() - (width / 2),
+                       position.Y() - height);
+       return (tilePosition.X() % width == 0) && (tilePosition.Y() % height == 0);
+}
+
+
 void Entity::Update(float deltaT) {
        position += velocity * deltaT;
 }
 
 
-void Entity::Render(SDL_Surface *dest, const geometry::Vector<int> &offset) const {
+void Entity::Render(SDL_Surface *dest, const Vector<int> &offset) const {
        if (animation.Running()) {
                animation.DrawCenterBottom(dest, offset + position);
        } else {
index fd91f3eeb5ce2114a578ba6b9ffdfb61da02a774..d6ba5f3a3763dc2acd3aefd4697fde9d33bef8c5 100644 (file)
@@ -34,6 +34,8 @@ public:
        graphics::AnimationRunner &Animation() { return animation; }
        const graphics::AnimationRunner &Animation() const { return animation; }
 
+       bool TileLock(int width, int height) const;
+
        void Update(float deltaT);
 
        void Render(SDL_Surface *, const geometry::Vector<int> &offset) const;
index 57337605f3f0ed58b66bef01f75fccd27028c73f..92c866b5ea6c66683d16bff72fc7710b8f959db6 100644 (file)
@@ -23,6 +23,8 @@ public:
        ~Map() { }
 
 public:
+       const graphics::Sprite *Tileset() const { return tileset; }
+
        void Render(SDL_Surface *dest, const geometry::Vector<int> &offset) const;
 
 // temporary setters
index 7f602a73ebf01c0d7f5ac338e2c22c30fc7d236a..5477999899905d2015e99d4afe96a30ff07b90c0 100644 (file)
@@ -51,6 +51,7 @@ void MapState::Resize(int width, int height) {
 
 void MapState::HandleEvents(const Input &input) {
        if (!controlled) return;
+       if (!controlled->TileLock(map->Tileset()->Width(), map->Tileset()->Height())) return;
 }
 
 void MapState::UpdateWorld(float deltaT) {