Exemplo n.º 1
0
void
Dispenser::active_update(float )
{
  if (dispense_timer.check()) {
    // auto always shoots in Tux's direction
    if( autotarget ){
      if( sprite->animation_done()) {
        sprite->set_action(dir == LEFT ? "working-left" : "working-right");
        swivel = false;
      }

      Player* player = this->get_nearest_player();
      if( player && !swivel ){
        Direction targetdir = (player->get_pos().x > get_pos().x) ? RIGHT : LEFT;
        if( dir != targetdir ){ // no target: swivel cannon
          swivel = true;
          dir = targetdir;
          sprite->set_action(dir == LEFT ? "swivel-left" : "swivel-right", 1);
        } else { // tux in sight: shoot
          launch_badguy();
        }
      }
    } else {
      launch_badguy();
    }
  }
}
Exemplo n.º 2
0
void
Dispenser::active_update(float )
{
  if (dispense_timer.check()) {
    launch_badguy();
  }
}
Exemplo n.º 3
0
void
Dispenser::activate()
{
   if(frozen)
     return;
   dispense_timer.start(cycle, true);
   launch_badguy();
}
Exemplo n.º 4
0
void
Dispenser::activate()
{
  if( broken ){
    return;
  }
  if( autotarget && !swivel ){ // auto cannon sprite might be wrong
    Player* player = this->get_nearest_player();
    if( player ){
      dir = (player->get_pos().x > get_pos().x) ? RIGHT : LEFT;
      sprite->set_action(dir == LEFT ? "working-left" : "working-right");
    }
  }
  dispense_timer.start(cycle, true);
  launch_badguy();
}
Exemplo n.º 5
0
void
Dispenser::activate()
{
  if (m_broken){
    return;
  }
  if (m_autotarget && !m_swivel){ // auto cannon sprite might be wrong
    auto* player = get_nearest_player();
    if (player) {
      m_dir = (player->get_pos().x > get_pos().x) ? Direction::RIGHT : Direction::LEFT;
      m_sprite->set_action(m_dir == Direction::LEFT ? "working-left" : "working-right");
    }
  }
  m_dispense_timer.start(m_cycle, true);
  launch_badguy();
}