Platform that hurts Tux and Badguys when touched
authorChristoph Sommer <mail@christoph-sommer.de>
Sat, 20 May 2006 00:58:55 +0000 (00:58 +0000)
committerChristoph Sommer <mail@christoph-sommer.de>
Sat, 20 May 2006 00:58:55 +0000 (00:58 +0000)
SVN-Revision: 3550

data/images/objects/sawblade/default-0.png [new file with mode: 0644]
data/images/objects/sawblade/default-1.png [new file with mode: 0644]
data/images/objects/sawblade/default-2.png [new file with mode: 0644]
data/images/objects/sawblade/default-3.png [new file with mode: 0644]
data/images/objects/sawblade/sawblade.sprite [new file with mode: 0644]
data/levels/test/hurting_platform.stl [new file with mode: 0644]
src/object/hurting_platform.cpp [new file with mode: 0644]
src/object/hurting_platform.hpp [new file with mode: 0644]

diff --git a/data/images/objects/sawblade/default-0.png b/data/images/objects/sawblade/default-0.png
new file mode 100644 (file)
index 0000000..562b223
Binary files /dev/null and b/data/images/objects/sawblade/default-0.png differ
diff --git a/data/images/objects/sawblade/default-1.png b/data/images/objects/sawblade/default-1.png
new file mode 100644 (file)
index 0000000..ff607dd
Binary files /dev/null and b/data/images/objects/sawblade/default-1.png differ
diff --git a/data/images/objects/sawblade/default-2.png b/data/images/objects/sawblade/default-2.png
new file mode 100644 (file)
index 0000000..80f8191
Binary files /dev/null and b/data/images/objects/sawblade/default-2.png differ
diff --git a/data/images/objects/sawblade/default-3.png b/data/images/objects/sawblade/default-3.png
new file mode 100644 (file)
index 0000000..9cd8df0
Binary files /dev/null and b/data/images/objects/sawblade/default-3.png differ
diff --git a/data/images/objects/sawblade/sawblade.sprite b/data/images/objects/sawblade/sawblade.sprite
new file mode 100644 (file)
index 0000000..e3462ce
--- /dev/null
@@ -0,0 +1,14 @@
+(supertux-sprite
+ (action
+  (name "default")
+  (hitbox 0 0 32 32)
+  (fps 120)
+  (images 
+   "default-0.png"
+   "default-1.png"
+   "default-2.png"
+   "default-3.png"
+  )
+ )
+)
+
diff --git a/data/levels/test/hurting_platform.stl b/data/levels/test/hurting_platform.stl
new file mode 100644 (file)
index 0000000..6b27460
--- /dev/null
@@ -0,0 +1,136 @@
+(supertux-level
+  (version 2)
+  (name (_ "Sawblade Test"))
+  (author "Marek")
+  (sector
+    (name "main")
+    (background
+      (x 0)
+      (y 0)
+      (image "images/background/castledoor.jpg")
+      (speed 0.5)
+    )
+    (tilemap
+      (z-pos -100)
+      (solid #f)
+      (speed 1)
+      (width 30)
+      (height 30)
+      (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+    )
+    (tilemap
+      (z-pos 0)
+      (solid #t)
+      (speed 1)
+      (width 30)
+      (height 30)
+      (tiles 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 80 0 0 0 0 0 0 0 0 27 28 28 28 28 29 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 61 61 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 27 28 28 28 28 28 29 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 1349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61)
+    )
+    (tilemap
+      (z-pos 100)
+      (solid #f)
+      (speed 1)
+      (width 30)
+      (height 30)
+      (tiles 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 80 0 0 0 0 0 0 0 0 27 28 28 28 28 29 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 61 61 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 27 28 28 28 28 28 29 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 0 0 0 0 0 0 0 0 1349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61)
+    )
+    (camera
+      (mode "normal")
+    )
+    (spawnpoint
+      (name "main")
+      (x 40)
+      (y 700)
+    )
+    (hurting_platform
+      (sprite "images/objects/sawblade/sawblade.sprite")
+      (path
+        (mode "circular")
+        (node
+          (x 400)
+          (y 816)
+          (time 2.8)
+        )
+        (node
+          (x 624)
+          (y 816)
+          (time 0.4)
+        )
+        (node
+          (x 624)
+          (y 848)
+          (time 2.8)
+        )
+        (node
+          (x 400)
+          (y 848)
+          (time 0.4)
+        )
+      )
+    )
+    (spiky
+          (x 760)
+          (y 588)
+    )
+    (spiky
+          (x 660)
+          (y 588)
+    )
+    (spiky
+          (x 560)
+          (y 588)
+    )
+    (hurting_platform
+      (sprite "images/objects/sawblade/sawblade.sprite")
+      (path
+        (mode "circular")
+        (node
+          (x 752)
+          (y 688)
+          (time 2.4)
+        )
+        (node
+          (x 560)
+          (y 688)
+          (time 0.4)
+        )
+        (node
+          (x 560)
+          (y 720)
+          (time 2.4)
+        )
+        (node
+          (x 752)
+          (y 720)
+          (time 0.4)
+        )
+      )
+    )
+    (hurting_platform
+      (sprite "images/objects/sawblade/sawblade.sprite")
+      (path
+        (mode "circular")
+        (node
+          (x 288)
+          (y 704)
+          (time 1.75)
+        )
+        (node
+          (x 288)
+          (y 704)
+          (time 0.5)
+        )
+        (node
+          (x 288)
+          (y 896)
+          (time 0.25)
+        )
+        (node
+          (x 288)
+          (y 896)
+          (time 0.5)
+        )
+      )
+    )
+  )
+)
diff --git a/src/object/hurting_platform.cpp b/src/object/hurting_platform.cpp
new file mode 100644 (file)
index 0000000..c730e18
--- /dev/null
@@ -0,0 +1,49 @@
+//  $Id: hurtingplatform.cpp 3506 2006-05-12 01:41:09Z sommer $
+//
+//  SuperTux - Hurting Platform
+//  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
+//
+//  This program is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU General Public License
+//  as published by the Free Software Foundation; either version 2
+//  of the License, or (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+#include <config.h>
+#include <stdexcept>
+
+#include "hurting_platform.hpp"
+
+#include "log.hpp"
+#include "player.hpp"
+#include "badguy/badguy.hpp"
+#include "object_factory.hpp"
+
+HurtingPlatform::HurtingPlatform(const lisp::Lisp& reader)
+       : Platform(reader)
+{
+}
+
+HitResponse
+HurtingPlatform::collision(GameObject& other, const CollisionHit& hit)
+{
+  Player* player = dynamic_cast<Player*>(&other);
+  if (player) {
+    player->kill(false);
+  }
+  BadGuy* badguy = dynamic_cast<BadGuy*>(&other);
+  if (badguy) {
+    badguy->kill_fall();
+  }
+  return Platform::collision(other, hit);
+}
+
+IMPLEMENT_FACTORY(HurtingPlatform, "hurting_platform");
diff --git a/src/object/hurting_platform.hpp b/src/object/hurting_platform.hpp
new file mode 100644 (file)
index 0000000..04c48fe
--- /dev/null
@@ -0,0 +1,42 @@
+//  $Id: hurting_platform.hpp 3506 2006-05-12 01:41:09Z sommer $
+//
+//  SuperTux - Hurting Platform
+//  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
+//
+//  This program is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU General Public License
+//  as published by the Free Software Foundation; either version 2
+//  of the License, or (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+#ifndef __HURTING_PLATFORM_H__
+#define __HURTING_PLATFORM_H__
+
+#include <memory>
+#include "object/platform.hpp"
+
+/**
+ * Platform that hurts Tux and Badguys when touched
+ */
+class HurtingPlatform : public Platform
+{
+public:
+  HurtingPlatform(const lisp::Lisp& reader);
+  virtual HurtingPlatform* clone() const { return new HurtingPlatform(*this); }
+
+  virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
+
+private:
+
+};
+
+#endif
+