From 8142a9c87a13cecc7a3698e877f24d89f128c074 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 21 Apr 2018 14:50:52 -0400 Subject: Started working on prototype objects --- src/prototype.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/prototype.cpp (limited to 'src/prototype.cpp') diff --git a/src/prototype.cpp b/src/prototype.cpp new file mode 100644 index 0000000..a4a0e80 --- /dev/null +++ b/src/prototype.cpp @@ -0,0 +1,55 @@ +#include "prototype.h" +#include "game.h" +#include "animation.h" +#include "components/animatable.h" +#include "components/transformable.h" +#include "components/ponderable.h" +#include "systems/pondering.h" +#include "systems/playing.h" + +id_type Prototype::instantiate( + Game& game, + const Map::Object& object) const +{ + id_type entity = game.getEntityManager().emplaceEntity(); + + AnimationSet entityGraphics(spritePath_.c_str(), w_, h_, 1); + entityGraphics.emplaceAnimation("default", 0, 1, 1); + + game.getEntityManager().emplaceComponent( + entity, + std::move(entityGraphics), + "default"); + + game.getEntityManager().emplaceComponent( + entity, + object.getX(), + object.getY(), + w_, + h_); + + game.getSystemManager().getSystem().initializeBody( + entity, + PonderableComponent::BodyType::vacuumed, + PonderableComponent::ColliderType::event); + + auto& ponderable = game.getEntityManager(). + getComponent(entity); + + switch (action_) + { + case Action::save: + { + ponderable.setEventCallback(PonderableComponent::ColliderType::player, + [] (Game& game) { + auto& playing = game.getSystemManager().getSystem(); + + playing.save(); + }); + + break; + } + } + + return entity; +} -- cgit 1.4.1