X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fflower.cpp;h=f3bcdca5c8ffb69dfd9a6f194b2b5ffcd46f996a;hb=3546f9b659b3b2ec53b2bee45e6f81e755d9207f;hp=8230f76cfde7dd650742e9bf3757a8288eacdb6a;hpb=d46c78c842ab4090a3f46e560c891234167f124b;p=supertux.git diff --git a/src/object/flower.cpp b/src/object/flower.cpp index 8230f76cf..f3bcdca5c 100644 --- a/src/object/flower.cpp +++ b/src/object/flower.cpp @@ -1,56 +1,88 @@ -#include - -#include -#include "flower.h" -#include "defines.h" -#include "resources.h" -#include "camera.h" -#include "sector.h" -#include "player.h" -#include "app/globals.h" -#include "special/sprite_manager.h" - -Flower::Flower(const Vector& pos, Type _type) - : type(_type) +// SuperTux +// Copyright (C) 2006 Matthias Braun +// +// 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 3 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, see . + +#include "audio/sound_manager.hpp" +#include "object/flower.hpp" +#include "object/player.hpp" +#include "sprite/sprite.hpp" +#include "sprite/sprite_manager.hpp" + +Flower::Flower(BonusType _type) : + type(_type), + sprite(), + drawing_effect(NO_EFFECT), + light(1.0f,1.0f,1.0f), + lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-small.sprite")) { - bbox.set_pos(pos); bbox.set_size(32, 32); + lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE)); + + if(type == FIRE_BONUS) { + sprite = sprite_manager->create("images/powerups/fireflower/fireflower.sprite"); + sound_manager->preload("sounds/fire-flower.wav"); + lightsprite->set_color(Color(0.3f, 0.0f, 0.0f)); + } + else if(type == ICE_BONUS) { + sprite = sprite_manager->create("images/powerups/iceflower/iceflower.sprite"); + sound_manager->preload("sounds/fire-flower.wav"); + lightsprite->set_color(Color(0.0f, 0.1f, 0.2f)); + } else { + assert(false); + } - if(_type == FIREFLOWER) - sprite = sprite_manager->create("fireflower"); - else - sprite = sprite_manager->create("iceflower"); + set_group(COLGROUP_TOUCHABLE); } Flower::~Flower() { - delete sprite; } void -Flower::action(float ) +Flower::update(float ) { } void Flower::draw(DrawingContext& context) { - sprite->draw(context, get_pos(), LAYER_OBJECTS); + //Draw the Sprite. + sprite->draw(context, get_pos(), LAYER_OBJECTS, drawing_effect); + //Draw the light when dark + context.get_light( get_bbox().get_middle(), &light ); + if (light.red + light.green + light.blue < 3.0){ + context.push_target(); + context.set_target(DrawingContext::LIGHTMAP); + lightsprite->draw(context, get_bbox().get_middle(), 0); + context.pop_target(); + } } HitResponse -Flower::collision(GameObject& other, const CollisionHit& hit) +Flower::collision(GameObject& other, const CollisionHit& ) { Player* player = dynamic_cast(&other); if(!player) return ABORT_MOVE; - if(type == FIREFLOWER) - player->got_power = Player::FIRE_POWER; - else - player->got_power = Player::ICE_POWER; - SoundManager::get()->play_sound(IDToSound(SND_COFFEE)); + if(!player->add_bonus(type, true)) + return FORCE_MOVE; + + sound_manager->play("sounds/fire-flower.wav"); remove_me(); return ABORT_MOVE; } +/* EOF */