- added unisolid patch from Upsilon
authorRyan Flegel <rflegel@gmail.com>
Fri, 28 May 2004 07:31:25 +0000 (07:31 +0000)
committerRyan Flegel <rflegel@gmail.com>
Fri, 28 May 2004 07:31:25 +0000 (07:31 +0000)
SVN-Revision: 1344

src/collision.cpp
src/collision.h
src/player.cpp
src/tile.cpp
src/tile.h

index 5f08756..58c48c6 100644 (file)
@@ -251,6 +251,13 @@ bool issolid(float x, float y)
   return tile && tile->solid;
 }
 
+bool isunisolid(float x, float y)
+{
+    Tile* tile = gettile(x,y);
+    return tile && tile->unisolid;
+}
+
+
 bool isbrick(float x, float y)
 {
   Tile* tile = gettile(x,y);
index b6c243e..a30451b 100644 (file)
@@ -53,6 +53,7 @@ Tile* gettile(float x, float y);
 
 // Some little helper function to check for tile properties
 bool  issolid(float x, float y);
+bool  isunisolid(float x, float y);
 bool  isbrick(float x, float y);
 bool  isice(float x, float y);
 bool  isspike(float x, float y);
index 27d909e..2dad290 100644 (file)
@@ -312,7 +312,10 @@ Player::on_ground()
 {
   return ( issolid(base.x + base.width / 2, base.y + base.height) ||
            issolid(base.x + 1, base.y + base.height) ||
-           issolid(base.x + base.width - 1, base.y + base.height)  );
+           issolid(base.x + base.width - 1, base.y + base.height) ||
+          isunisolid(base.x + base.width / 2, base.y + base.height) ||
+          isunisolid(base.x + 1, base.y + base.height) ||
+          isunisolid(base.x + base.width - 1, base.y + base.height) );
 }
 
 bool
index 19a514f..3cb7427 100644 (file)
@@ -88,6 +88,7 @@ void TileManager::load_tileset(std::string filename)
               Tile* tile = new Tile;
               tile->id      = -1;
               tile->solid   = false;
+             tile->unisolid = false;
               tile->brick   = false;
               tile->ice     = false;
               tile->water   = false;
@@ -102,6 +103,7 @@ void TileManager::load_tileset(std::string filename)
               LispReader reader(lisp_cdr(element));
               assert(reader.read_int("id",  &tile->id));
               reader.read_bool("solid",     &tile->solid);
+             reader.read_bool("unisolid",  &tile->unisolid);
               reader.read_bool("brick",     &tile->brick);
               reader.read_bool("ice",       &tile->ice);
               reader.read_bool("water",     &tile->water);
index a94a19c..9123422 100644 (file)
@@ -50,6 +50,9 @@ public:
   /** solid tile that is indestructable by Tux */
   bool solid;
 
+  /** uni-directional solid tile */
+  bool unisolid;
+
   /** a brick that can be destroyed by jumping under it */
   bool brick;