]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/playfield.cpp
Add playfield boundaries to Bassteroids
[libs/game.git] / examples / bassteroids / source / playfield.cpp
diff --git a/examples/bassteroids/source/playfield.cpp b/examples/bassteroids/source/playfield.cpp
new file mode 100644 (file)
index 0000000..8c6cc6c
--- /dev/null
@@ -0,0 +1,19 @@
+#include "playfield.h"
+#include <msp/game/transform.h>
+
+using namespace Msp;
+
+Playfield::Playfield(Game::Handle<Game::Entity> p, const Setup &s):
+       Entity(p, NO_TRANSFORM),
+       setup(s),
+       left(*this, LinAl::Vector<float, 2>(-setup.size.x/2-0.5f, 0.0f), LinAl::Vector<float, 2>(1.0f, setup.size.y+2.0f)),
+       right(*this, LinAl::Vector<float, 2>(setup.size.x/2+0.5f, 0.0f), LinAl::Vector<float, 2>(1.0f, setup.size.y+2.0f)),
+       bottom(*this, LinAl::Vector<float, 2>(0.0f, -setup.size.y/2-0.5f), LinAl::Vector<float, 2>(setup.size.x+2.0f, 1.0f)),
+       top(*this, LinAl::Vector<float, 2>(0.0f, setup.size.y/2+0.5f), LinAl::Vector<float, 2>(setup.size.x+2.0f, 1.0f))
+{ }
+
+
+Playfield::Border::Border(Playfield &f, LinAl::Vector<float, 2> p, LinAl::Vector<float, 2> s):
+       setup{ .fixture=true, .body={}, .collider={ .type=ColliderType::BOX, .size=s }},
+       entity(f, setup, compose(p, 0.0f))
+{ }