Skip to content

Commit

Permalink
New BadGuys: 'iceflame' flame with fire vulnerability, 'ghostflame' f…
Browse files Browse the repository at this point in the history
…lame without vulnerabilities
  • Loading branch information
LMH0013 committed Apr 9, 2013
1 parent 3e1eec1 commit 0dfd364
Show file tree
Hide file tree
Showing 29 changed files with 337 additions and 5 deletions.
Binary file added data/images/creatures/flame/ghostflame-0.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/ghostflame-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/ghostflame-2.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/ghostflame-3.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/ghostflame-4.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/ghostflame-editor.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions data/images/creatures/flame/ghostflame.sprite
@@ -0,0 +1,16 @@
(supertux-sprite
(action
(hitbox 0.2 0.2 31.6 31.6)
(name "normal")
(images "ghostflame-0.png"
"ghostflame-1.png"
"ghostflame-2.png"
"ghostflame-3.png"
"ghostflame-4.png"))
(action
(hitbox 96 96 127.8 31.8)
(name "editor")
(images "ghostflame-editor.png"))

)

Binary file added data/images/creatures/flame/ghostflame.xcf
Binary file not shown.
Binary file added data/images/creatures/flame/iceflame-0.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-2.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-3.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-4.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-5.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-editor.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-fade-0.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-fade-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/creatures/flame/iceflame-fade-3.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions data/images/creatures/flame/iceflame.sprite
@@ -0,0 +1,26 @@
(supertux-sprite
; these graphics could use some work
(action
(hitbox 0 0 31.8 31.8)
(name "normal")
(images "iceflame-0.png"
"iceflame-1.png"
"iceflame-2.png"
"iceflame-3.png"
"iceflame-4.png"
"iceflame-5.png"))
(action
(hitbox 0 0 31.8 31.8)
(name "fade")
(fps 5)
(images "iceflame-1.png"
"iceflame-fade-0.png"
"iceflame-fade-1.png"
"iceflame-fade-2.png"
"iceflame-fade-3.png"))
(action
(hitbox 96 96 127.8 31.8)
(name "editor")
(images "iceflame-editor.png"))
)

Binary file added data/images/creatures/flame/iceflame.xcf
Binary file not shown.
6 changes: 3 additions & 3 deletions data/levels/test/glow_effects.stl
Expand Up @@ -16,9 +16,9 @@
(short_fuse (x 1152 )(y 736 ))
(short_fuse (x 1248 )(y 736 ))
(haywire (x 928 )(y 736 ))
(flame (x 1088 )(y 512 ))
(flame (x 1088 )(y 512 ))
(flame (x 1088 )(y 512 ))
(flame (x 576 )(y 480 )(speed 0.2))
(iceflame (x 736 )(y 480 )(speed 0.2))
(ghostflame (x 656 )(y 160 ))

(tilemap (name "Interactive" )
(z-pos 0 )(solid #t )
Expand Down
6 changes: 4 additions & 2 deletions src/badguy/flame.cpp
Expand Up @@ -34,9 +34,9 @@ Flame::Flame(const Reader& reader) :
angle(0),
radius(100),
speed(2),
fading(true),
fading(false),
light(0.0f,0.0f,0.0f),
lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-tiny.sprite")),
lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-small.sprite")),
sound_source()
{
reader.get("radius", radius);
Expand Down Expand Up @@ -77,6 +77,7 @@ Flame::draw(DrawingContext& context)
if (light.red + light.green < 2.0){
context.push_target();
context.set_target(DrawingContext::LIGHTMAP);
sprite->draw(context, get_pos(), layer);
lightsprite->draw(context, get_bbox().get_middle(), 0);
context.pop_target();
}
Expand Down Expand Up @@ -109,6 +110,7 @@ Flame::kill_fall()
void
Flame::freeze()
{
//TODO: get unique death sound
sound_manager->play("sounds/fizz.wav", get_pos());
sprite->set_action("fade", 1);
Vector ppos = bbox.get_middle();
Expand Down
85 changes: 85 additions & 0 deletions src/badguy/ghostflame.cpp
@@ -0,0 +1,85 @@
// SuperTux
// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// 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 <http://www.gnu.org/licenses/>.

#include "badguy/ghostflame.hpp"

#include <math.h>

#include "audio/sound_manager.hpp"
#include "math/random_generator.hpp"
#include "sprite/sprite.hpp"
#include "sprite/sprite_manager.hpp"
#include "object/sprite_particle.hpp"
#include "supertux/object_factory.hpp"
#include "supertux/sector.hpp"
#include "util/reader.hpp"

Ghostflame::Ghostflame(const Reader& reader) :
BadGuy(reader, "images/creatures/flame/ghostflame.sprite", LAYER_FLOATINGOBJECTS),
angle(0),
radius(100),
speed(2),
light(0.0f,0.0f,0.0f),
lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-small.sprite"))
{
reader.get("radius", radius);
reader.get("speed", speed);
bbox.set_pos(Vector(start_position.x + cos(angle) * radius,
start_position.y + sin(angle) * radius));
countMe = false;
//TODO: get unique death sound
sound_manager->preload("sounds/fizz.wav");

set_colgroup_active(COLGROUP_TOUCHABLE);

lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE));
lightsprite->set_color(Color(0.21f, 0.00f, 0.21f));

}

void
Ghostflame::active_update(float elapsed_time)
{
angle = fmodf(angle + elapsed_time * speed, (float) (2*M_PI));
Vector newpos(start_position.x + cos(angle) * radius,
start_position.y + sin(angle) * radius);
movement = newpos - get_pos();

}

void
Ghostflame::draw(DrawingContext& context)
{
//Draw the Sprite.
sprite->draw(context, get_pos(), LAYER_OBJECTS);
//Draw the light if dark
context.get_light( get_bbox().get_middle(), &light );
if (light.blue + light.red < 2.0){
context.push_target();
context.set_target(DrawingContext::LIGHTMAP);
sprite->draw(context, get_pos(), layer);
lightsprite->draw(context, get_bbox().get_middle(), 0);
context.pop_target();
}
}


void
Ghostflame::kill_fall()
{
}

/* EOF */
43 changes: 43 additions & 0 deletions src/badguy/ghostflame.hpp
@@ -0,0 +1,43 @@
// SuperTux
// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// 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 <http://www.gnu.org/licenses/>.

#ifndef HEADER_SUPERTUX_BADGUY_GHOSTFLAME_HPP
#define HEADER_SUPERTUX_BADGUY_GHOSTFLAME_HPP

#include "badguy/badguy.hpp"

class Ghostflame : public BadGuy
{
public:
Ghostflame(const Reader& reader);
Ghostflame(const Ghostflame& ghostflame);

void active_update(float elapsed_time);
void draw(DrawingContext& context);
void kill_fall();

private:
float angle;
float radius;
float speed;
Color light;
SpritePtr lightsprite;

};

#endif

/* EOF */
108 changes: 108 additions & 0 deletions src/badguy/iceflame.cpp
@@ -0,0 +1,108 @@
// SuperTux
// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// 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 <http://www.gnu.org/licenses/>.

#include "badguy/iceflame.hpp"

#include <math.h>

#include "audio/sound_manager.hpp"
#include "math/random_generator.hpp"
#include "sprite/sprite.hpp"
#include "sprite/sprite_manager.hpp"
#include "object/sprite_particle.hpp"
#include "supertux/object_factory.hpp"
#include "supertux/sector.hpp"
#include "util/reader.hpp"

Iceflame::Iceflame(const Reader& reader) :
BadGuy(reader, "images/creatures/flame/iceflame.sprite", LAYER_FLOATINGOBJECTS),
angle(0),
radius(100),
speed(2),
fading(false),
light(0.0f,0.0f,0.0f),
lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-small.sprite"))
{
reader.get("radius", radius);
reader.get("speed", speed);
bbox.set_pos(Vector(start_position.x + cos(angle) * radius,
start_position.y + sin(angle) * radius));
countMe = false;
//TODO: get unique death sound
sound_manager->preload("sounds/fizz.wav");

set_colgroup_active(COLGROUP_TOUCHABLE);

lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE));
lightsprite->set_color(Color(0.00f, 0.13f, 0.18f));

}

void
Iceflame::active_update(float elapsed_time)
{
angle = fmodf(angle + elapsed_time * speed, (float) (2*M_PI));
Vector newpos(start_position.x + cos(angle) * radius,
start_position.y + sin(angle) * radius);
movement = newpos - get_pos();

if(fading)
if (sprite->animation_done()) remove_me();
}

void
Iceflame::draw(DrawingContext& context)
{
//Draw the Sprite.
sprite->draw(context, get_pos(), LAYER_OBJECTS);
//Draw the light if dark
context.get_light( get_bbox().get_middle(), &light );
if (light.blue + light.green < 2.0){
context.push_target();
context.set_target(DrawingContext::LIGHTMAP);
lightsprite->draw(context, get_bbox().get_middle(), 0);
context.pop_target();
}
}


void
Iceflame::kill_fall()
{
}

void
Iceflame::ignite()
{
sound_manager->play("sounds/fizz.wav", get_pos());
sprite->set_action("fade", 1);
Vector ppos = bbox.get_middle();
Vector pspeed = Vector(0, -150);
Vector paccel = Vector(0,0);
Sector::current()->add_object(new SpriteParticle("images/objects/particles/smoke.sprite", "default", ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_BACKGROUNDTILES+2));
fading = true;

// start dead-script
run_dead_script();
}

bool
Iceflame::is_flammable() const
{
return true;
}

/* EOF */
47 changes: 47 additions & 0 deletions src/badguy/iceflame.hpp
@@ -0,0 +1,47 @@
// SuperTux
// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// 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 <http://www.gnu.org/licenses/>.

#ifndef HEADER_SUPERTUX_BADGUY_ICEFLAME_HPP
#define HEADER_SUPERTUX_BADGUY_ICEFLAME_HPP

#include "badguy/badguy.hpp"

class Iceflame : public BadGuy
{
public:
Iceflame(const Reader& reader);
Iceflame(const Iceflame& iceflame);

void active_update(float elapsed_time);
void draw(DrawingContext& context);
void kill_fall();

void ignite();
bool is_flammable() const;

private:
float angle;
float radius;
float speed;
bool fading;
Color light;
SpritePtr lightsprite;

};

#endif

/* EOF */
1 change: 1 addition & 0 deletions src/object/bullet.cpp
Expand Up @@ -95,6 +95,7 @@ Bullet::draw(DrawingContext& context)
if (light.red + light.green < 2.0){
context.push_target();
context.set_target(DrawingContext::LIGHTMAP);
sprite->draw(context, get_pos(), LAYER_OBJECTS);
lightsprite->draw(context, get_bbox().get_middle(), 0);
context.pop_target();
}
Expand Down

0 comments on commit 0dfd364

Please sign in to comment.