X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fcoin.cpp;h=2ab89dab756632478fa2e679b529385192f275fe;hb=8730bd265c7814fffbf5af3095d6a97880b647bb;hp=0799ef02ec6bdd06c80c82e4a960822fb0feccdc;hpb=4ada19ad88b175b612e8f09d6426eb940a7d947f;p=supertux.git diff --git a/src/object/coin.cpp b/src/object/coin.cpp index 0799ef02e..2ab89dab7 100644 --- a/src/object/coin.cpp +++ b/src/object/coin.cpp @@ -6,8 +6,10 @@ #include "special/sprite_manager.h" #include "player.h" #include "sector.h" -#include "scene.h" +#include "player_status.h" #include "gameobjs.h" +#include "statistics.h" +#include "object_factory.h" Coin::Coin(const Vector& pos) { @@ -16,6 +18,14 @@ Coin::Coin(const Vector& pos) sprite = sprite_manager->create("coin"); } +Coin::Coin(const lisp::Lisp& reader) +{ + reader.get("x", bbox.p1.x); + reader.get("y", bbox.p1.y); + bbox.set_size(32, 32); + sprite = sprite_manager->create("coin"); +} + Coin::~Coin() { delete sprite; @@ -35,8 +45,9 @@ Coin::draw(DrawingContext& context) void Coin::collect() { - Sector::current()->player->get_status().incCoins(); + Sector::current()->player->get_status()->incCoins(); Sector::current()->add_object(new BouncyCoin(get_pos())); + global_stats.add_points(COINS_COLLECTED_STAT, 1); remove_me(); } @@ -51,3 +62,4 @@ Coin::collision(GameObject& other, const CollisionHit& ) return ABORT_MOVE; } +IMPLEMENT_FACTORY(Coin, "coin");