X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fspotlight.cpp;h=d86848cf42854cd370e34babaa91741cfdc3e6f6;hb=a98f7cee9f6a2593c0e1f3442800f159bad410df;hp=e15cdf37198b1b735b4bc401b315196e47418436;hpb=49796e6cc2385aea989d7c44c789b406190f2bf7;p=supertux.git diff --git a/src/object/spotlight.cpp b/src/object/spotlight.cpp index e15cdf371..d86848cf4 100644 --- a/src/object/spotlight.cpp +++ b/src/object/spotlight.cpp @@ -1,4 +1,4 @@ -// $Id: light.cpp 3327 2006-04-13 15:02:40Z ravu_al_hemio $ +// $Id$ // // SuperTux // Copyright (C) 2006 Ingo Ruhnke @@ -27,14 +27,27 @@ #include "player.hpp" #include "sector.hpp" -Spotlight::Spotlight(const lisp::Lisp& ) +Spotlight::Spotlight(const lisp::Lisp& lisp) + : angle(0.0f), + color(1.0f, 1.0f, 1.0f) { + lisp.get("x", position.x); + lisp.get("y", position.y); + + lisp.get("angle", angle); + + std::vector vColor; + if( lisp.get_vector( "color", vColor ) ){ + color = Color( vColor ); + } + center = sprite_manager->create("images/objects/spotlight/spotlight_center.sprite"); base = sprite_manager->create("images/objects/spotlight/spotlight_base.sprite"); lights = sprite_manager->create("images/objects/spotlight/spotlight_lights.sprite"); lightcone = sprite_manager->create("images/objects/spotlight/lightcone.sprite"); + light = sprite_manager->create("images/objects/spotlight/light.sprite"); + - angle = 0.0f; } Spotlight::~Spotlight() @@ -43,6 +56,7 @@ Spotlight::~Spotlight() delete base; delete lights; delete lightcone; + delete light; } void @@ -54,26 +68,29 @@ Spotlight::update(float delta) void Spotlight::draw(DrawingContext& context) { - context.push_target(); + context.push_target(); context.set_target(DrawingContext::LIGHTMAP); - - Vector pos(100, 300); - lightcone->set_angle(angle); - lightcone->draw(context, pos, 0); + light->set_color(color); + light->set_blend(Blend(GL_SRC_ALPHA, GL_ONE)); + light->set_angle(angle); + light->draw(context, position, 0); + + //lightcone->set_angle(angle); + //lightcone->draw(context, position, 0); - lightcone->set_angle(angle + 180.0f); - lightcone->draw(context, pos, 0); - context.set_target(DrawingContext::NORMAL); lights->set_angle(angle); - lights->draw(context, pos, 0); + lights->draw(context, position, 0); base->set_angle(angle); - base->draw(context, pos, 0); + base->draw(context, position, 0); - center->draw(context, pos, 0); + center->draw(context, position, 0); + + lightcone->set_angle(angle); + lightcone->draw(context, position, LAYER_FOREGROUND1 + 10); context.pop_target(); }