From 1baefc7c9912d94db47328dff3029d0c954ef28d Mon Sep 17 00:00:00 2001 From: Marek Moeckel Date: Tue, 17 May 2005 21:15:26 +0000 Subject: [PATCH] created a ghost forest demo from contrib art: -modified background image -ghost forest music -new particle system featuring floating ghosts see levels/test/raintest.stl (someone please improve the artwork, i'll work on the music) SVN-Revision: 2504 --- data/images/background/ghostforest.jpg | Bin 0 -> 26857 bytes data/images/objects/particles/ghost0.png | Bin 0 -> 8060 bytes data/images/objects/particles/ghost1.png | Bin 0 -> 10837 bytes data/levels/test/raintest.stl | 72 +++++++++++++++++-------------- {contrib => data}/music/ghostforest2.mod | Bin src/object/particlesystem.cpp | 57 ++++++++++++++++++++++++ src/object/particlesystem.h | 24 +++++++++++ src/sector.cpp | 4 ++ 8 files changed, 125 insertions(+), 32 deletions(-) create mode 100644 data/images/background/ghostforest.jpg create mode 100644 data/images/objects/particles/ghost0.png create mode 100644 data/images/objects/particles/ghost1.png rename {contrib => data}/music/ghostforest2.mod (100%) diff --git a/data/images/background/ghostforest.jpg b/data/images/background/ghostforest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b573310b2b640b3e0e6f50f719715bd347521c3 GIT binary patch literal 26857 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 literal 0 HcmV?d00001 diff --git a/data/images/objects/particles/ghost0.png b/data/images/objects/particles/ghost0.png new file mode 100644 index 0000000000000000000000000000000000000000..31a689a95f5c35fee2af002988b4b47c70354d6a GIT binary patch literal 8060 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 literal 0 HcmV?d00001 diff --git a/data/levels/test/raintest.stl b/data/levels/test/raintest.stl index 3d0c516f4..43b8890e1 100644 --- a/data/levels/test/raintest.stl +++ b/data/levels/test/raintest.stl @@ -1,11 +1,12 @@ ;; Generated by Flexlay Editor (supertux-level (version 2) - (name (_ "Rain Test")) + (name (_ "Rain And Ghost Theme Test")) (author "SuperTux Team") (sector (name "main") (gravity 10.000000) + (music "ghostforest2.mod") (tilemap (layer "background") (solid #f) @@ -13,35 +14,35 @@ (width 100) (height 50) (tiles - 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 - 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 - 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 - 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 - 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 - 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 - 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 0 - 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 - 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 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 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 61 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -185,8 +186,15 @@ ) (background - (image "forest1.jpg") - (speed 1.000000) + (image "ghostforest.jpg") + (speed 0.5) + ) + (background + (image "fog.png") + (speed 1.2) + (layer 400) + ) + (particles-ghost ) (particles-rain ) diff --git a/contrib/music/ghostforest2.mod b/data/music/ghostforest2.mod similarity index 100% rename from contrib/music/ghostforest2.mod rename to data/music/ghostforest2.mod diff --git a/src/object/particlesystem.cpp b/src/object/particlesystem.cpp index e0500f8c7..929c2bd46 100644 --- a/src/object/particlesystem.cpp +++ b/src/object/particlesystem.cpp @@ -129,6 +129,63 @@ void SnowParticleSystem::update(float elapsed_time) } } +GhostParticleSystem::GhostParticleSystem() +{ + ghosts[0] = new Surface(datadir+"/images/objects/particles/ghost0.png", true); + ghosts[1] = new Surface(datadir+"/images/objects/particles/ghost1.png", true); + + virtual_width = SCREEN_WIDTH * 2; + + // create some random snowflakes + size_t ghostcount = 2; + for(size_t i=0; ipos.x = rand() % int(virtual_width); + particle->pos.y = rand() % SCREEN_HEIGHT; + int size = rand() % 2; + particle->texture = ghosts[size]; + do { + particle->speed = size*.2 + (float(rand()%10)*.4); + } while(particle->speed < 1); + particle->speed *= 50; + particles.push_back(particle); + } +} + +void +GhostParticleSystem::parse(const lisp::Lisp& reader) +{ + reader.get("layer", layer); +} + +void +GhostParticleSystem::write(lisp::Writer& writer) +{ + writer.start_list("particles-ghost"); + writer.write_int("layer", layer); + writer.end_list("particles-ghost"); +} + +GhostParticleSystem::~GhostParticleSystem() +{ + for(int i=0;i<2;++i) + delete ghosts[i]; +} + +void GhostParticleSystem::update(float elapsed_time) +{ + std::vector::iterator i; + for(i = particles.begin(); i != particles.end(); ++i) { + GhostParticle* particle = (GhostParticle*) *i; + particle->pos.y -= particle->speed * elapsed_time; + particle->pos.x -= particle->speed * elapsed_time; + if(particle->pos.y > SCREEN_HEIGHT) { + particle->pos.y = fmodf(particle->pos.y , virtual_height); + particle->pos.x = rand() % int(virtual_width); + } + } +} + CloudParticleSystem::CloudParticleSystem() { cloudimage = new Surface(datadir + "/images/objects/particles/cloud.png", true); diff --git a/src/object/particlesystem.h b/src/object/particlesystem.h index 05dd9f30d..ac76deda7 100644 --- a/src/object/particlesystem.h +++ b/src/object/particlesystem.h @@ -97,6 +97,30 @@ private: Surface* snowimages[3]; }; +class GhostParticleSystem : public ParticleSystem, public Serializable +{ +public: + GhostParticleSystem(); + virtual ~GhostParticleSystem(); + + void parse(const lisp::Lisp& lisp); + void write(lisp::Writer& writer); + + virtual void update(float elapsed_time); + + std::string type() const + { return "GhostParticleSystem"; } + +private: + class GhostParticle : public Particle + { + public: + float speed; + }; + + Surface* ghosts[2]; +}; + class CloudParticleSystem : public ParticleSystem, public Serializable { public: diff --git a/src/sector.cpp b/src/sector.cpp index 69bac3551..43743c7c3 100644 --- a/src/sector.cpp +++ b/src/sector.cpp @@ -114,6 +114,10 @@ Sector::parse_object(const std::string& name, const lisp::Lisp& reader) RainParticleSystem* partsys = new RainParticleSystem(); partsys->parse(reader); return partsys; + } else if(name == "particles-ghost") { + GhostParticleSystem* partsys = new GhostParticleSystem(); + partsys->parse(reader); + return partsys; } else if(name == "particles-clouds") { CloudParticleSystem* partsys = new CloudParticleSystem(); partsys->parse(reader); -- 2.11.0