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(); } } }
void Dispenser::active_update(float ) { if (dispense_timer.check()) { launch_badguy(); } }
void Dispenser::activate() { if(frozen) return; dispense_timer.start(cycle, true); launch_badguy(); }
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(); }
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(); }