void BadGuy::update(float elapsed_time) { if(!Sector::current()->inside(bbox)) { run_dead_script(); is_active_flag = false; remove_me(); // This was removed due to fixing a bug. If is it needed somewhere, then I'm sorry. --Hume2 /**if(countMe) { // get badguy name from sprite_name ignoring path and extension std::string badguy = sprite_name.substr(0, sprite_name.length() - 7); int path_chars = badguy.rfind("/",badguy.length()); badguy = badguy.substr(path_chars + 1, badguy.length() - path_chars); // log warning since badguys_killed can no longer reach total_badguys std::string current_level = "[" + Sector::current()->get_level()->filename + "] "; log_warning << current_level << "Counted badguy " << badguy << " starting at " << start_position << " has left the sector" <<std::endl;; }*/ return; } if ((state != STATE_INACTIVE) && is_offscreen()) { if (state == STATE_ACTIVE) deactivate(); set_state(STATE_INACTIVE); } switch(state) { case STATE_ACTIVE: is_active_flag = true; if (Editor::current()) if (Editor::current()->levelloaded) { break; } active_update(elapsed_time); break; case STATE_INIT: case STATE_INACTIVE: is_active_flag = false; inactive_update(elapsed_time); try_activate(); break; case STATE_SQUISHED: is_active_flag = false; if(state_timer.check()) { remove_me(); break; } movement = physic.get_movement(elapsed_time); break; case STATE_FALLING: is_active_flag = false; movement = physic.get_movement(elapsed_time); break; } on_ground_flag = false; }
void BadGuy::update(float elapsed_time) { if(!Sector::current()->inside(bbox)) { is_active_flag = false; remove_me(); return; } if ((state != STATE_INACTIVE) && is_offscreen()) { if (state == STATE_ACTIVE) deactivate(); set_state(STATE_INACTIVE); } switch(state) { case STATE_ACTIVE: is_active_flag = true; active_update(elapsed_time); break; case STATE_INIT: case STATE_INACTIVE: is_active_flag = false; inactive_update(elapsed_time); try_activate(); break; case STATE_SQUISHED: is_active_flag = false; if(state_timer.check()) { remove_me(); break; } movement = physic.get_movement(elapsed_time); break; case STATE_FALLING: is_active_flag = false; movement = physic.get_movement(elapsed_time); break; } on_ground_flag = false; }
void BadGuy::update(float dt_sec) { if (!Sector::get().inside(m_col.m_bbox)) { run_dead_script(); m_is_active_flag = false; remove_me(); // This was removed due to fixing a bug. If is it needed somewhere, then I'm sorry. --Hume2 /**if(countMe) { // get badguy name from sprite_name ignoring path and extension std::string badguy = sprite_name.substr(0, sprite_name.length() - 7); int path_chars = badguy.rfind("/",badguy.length()); badguy = badguy.substr(path_chars + 1, badguy.length() - path_chars); // log warning since badguys_killed can no longer reach total_badguys std::string current_level = "[" + Sector::get().get_level()->filename + "] "; log_warning << current_level << "Counted badguy " << badguy << " starting at " << start_position << " has left the sector" <<std::endl;; }*/ return; } if ((m_state != STATE_INACTIVE) && is_offscreen()) { if (m_state == STATE_ACTIVE) deactivate(); set_state(STATE_INACTIVE); } switch (m_state) { case STATE_ACTIVE: m_is_active_flag = true; if (Editor::is_active()) { break; } active_update(dt_sec); break; case STATE_INIT: case STATE_INACTIVE: m_is_active_flag = false; inactive_update(dt_sec); try_activate(); break; case STATE_BURNING: { m_is_active_flag = false; m_col.m_movement = m_physic.get_movement(dt_sec); if ( m_sprite->animation_done() ) { remove_me(); } } break; case STATE_GEAR: case STATE_SQUISHED: m_is_active_flag = false; if (m_state_timer.check()) { remove_me(); break; } m_col.m_movement = m_physic.get_movement(dt_sec); break; case STATE_MELTING: { m_is_active_flag = false; m_col.m_movement = m_physic.get_movement(dt_sec); if ( m_sprite->animation_done() || on_ground() ) { Sector::get().add<WaterDrop>(m_col.m_bbox.p1(), get_water_sprite(), m_physic.get_velocity()); remove_me(); break; } } break; case STATE_GROUND_MELTING: m_is_active_flag = false; m_col.m_movement = m_physic.get_movement(dt_sec); if ( m_sprite->animation_done() ) { remove_me(); } break; case STATE_INSIDE_MELTING: { m_is_active_flag = false; m_col.m_movement = m_physic.get_movement(dt_sec); if ( on_ground() && m_sprite->animation_done() ) { m_sprite->set_action(m_dir == Direction::LEFT ? "gear-left" : "gear-right", 1); set_state(STATE_GEAR); } int pa = graphicsRandom.rand(0,3); float px = graphicsRandom.randf(m_col.m_bbox.get_left(), m_col.m_bbox.get_right()); float py = graphicsRandom.randf(m_col.m_bbox.get_top(), m_col.m_bbox.get_bottom()); Vector ppos = Vector(px, py); Sector::get().add<SpriteParticle>(get_water_sprite(), "particle_" + std::to_string(pa), ppos, ANCHOR_MIDDLE, Vector(0, 0), Vector(0, 100 * Sector::get().get_gravity()), LAYER_OBJECTS-1); } break; case STATE_FALLING: m_is_active_flag = false; m_col.m_movement = m_physic.get_movement(dt_sec); break; } m_on_ground_flag = false; }
void WalkingBadguy::active_update(float elapsed_time) { active_update (elapsed_time, (dir == LEFT) ? -walk_speed : +walk_speed); }
void WalkingBadguy::active_update(float dt_sec) { active_update (dt_sec, (m_dir == Direction::LEFT) ? -walk_speed : +walk_speed); }