#include <ghost_particle_system.hpp>
Inherits ParticleSystem.
Public Member Functions | |
GhostParticleSystem () | |
virtual | ~GhostParticleSystem () |
void | parse (const Reader &lisp) |
virtual void | update (float elapsed_time) |
This function is called once per frame and allows the object to update it's state. | |
std::string | type () const |
Private Member Functions | |
GhostParticleSystem (const GhostParticleSystem &) | |
GhostParticleSystem & | operator= (const GhostParticleSystem &) |
Private Attributes | |
SurfacePtr | ghosts [2] |
Classes | |
class | GhostParticle |
Definition at line 25 of file ghost_particle_system.hpp.
GhostParticleSystem::GhostParticleSystem | ( | ) |
Definition at line 27 of file ghost_particle_system.cpp.
References Surface::create(), ghosts, graphicsRandom, ParticleSystem::particles, RandomGenerator::rand(), RandomGenerator::randf(), SCREEN_HEIGHT, SCREEN_WIDTH, and ParticleSystem::virtual_width.
00028 { 00029 ghosts[0] = Surface::create("images/objects/particles/ghost0.png"); 00030 ghosts[1] = Surface::create("images/objects/particles/ghost1.png"); 00031 00032 virtual_width = SCREEN_WIDTH * 2; 00033 00034 // create two ghosts 00035 size_t ghostcount = 2; 00036 for(size_t i=0; i<ghostcount; ++i) { 00037 GhostParticle* particle = new GhostParticle; 00038 particle->pos.x = graphicsRandom.randf(virtual_width); 00039 particle->pos.y = graphicsRandom.randf(SCREEN_HEIGHT); 00040 int size = graphicsRandom.rand(2); 00041 particle->texture = ghosts[size]; 00042 particle->speed = graphicsRandom.randf(std::max(50, (size * 10)), 180 + (size * 10)); 00043 particles.push_back(particle); 00044 } 00045 }
GhostParticleSystem::~GhostParticleSystem | ( | ) | [virtual] |
GhostParticleSystem::GhostParticleSystem | ( | const GhostParticleSystem & | ) | [private] |
void GhostParticleSystem::parse | ( | const Reader & | lisp | ) |
Definition at line 48 of file ghost_particle_system.cpp.
References LAYER_BACKGROUND1, reader_get_layer(), and ParticleSystem::z_pos.
Referenced by Sector::parse_object().
00049 { 00050 z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1); 00051 }
void GhostParticleSystem::update | ( | float | elapsed_time | ) | [virtual] |
This function is called once per frame and allows the object to update it's state.
The elapsed_time is the time since the last frame in seconds and should be the base for all timed calculations (don't use SDL_GetTicks directly as this will fail in pause mode)
Implements GameObject.
Definition at line 57 of file ghost_particle_system.cpp.
References graphicsRandom, ParticleSystem::particles, RandomGenerator::rand(), SCREEN_HEIGHT, ParticleSystem::virtual_height, and ParticleSystem::virtual_width.
00058 { 00059 std::vector<Particle*>::iterator i; 00060 for(i = particles.begin(); i != particles.end(); ++i) { 00061 GhostParticle* particle = (GhostParticle*) *i; 00062 particle->pos.y -= particle->speed * elapsed_time; 00063 particle->pos.x -= particle->speed * elapsed_time; 00064 if(particle->pos.y > SCREEN_HEIGHT) { 00065 particle->pos.y = fmodf(particle->pos.y , virtual_height); 00066 particle->pos.x = graphicsRandom.rand(static_cast<int>(virtual_width)); 00067 } 00068 } 00069 }
std::string GhostParticleSystem::type | ( | ) | const [inline] |
GhostParticleSystem& GhostParticleSystem::operator= | ( | const GhostParticleSystem & | ) | [private] |
SurfacePtr GhostParticleSystem::ghosts[2] [private] |