const float MUZZLE_Y = 28; /**< [px] muzzle y-offset from top */
}
-DartTrap::DartTrap(const lisp::Lisp& reader) : set_direction(true), initial_direction(LEFT), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE)
+DartTrap::DartTrap(const lisp::Lisp& reader)
+ : BadGuy(reader, "images/creatures/darttrap/darttrap.sprite", LAYER_TILES-1), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE)
{
- reader.get("x", start_position.x);
- reader.get("y", start_position.y);
reader.get("initial-delay", initial_delay);
reader.get("fire-delay", fire_delay);
reader.get("ammo", ammo);
- sprite = sprite_manager->create("images/creatures/darttrap/darttrap.sprite");
- bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
countMe = false;
+ sound_manager->preload("sounds/dartfire.wav");
+ if (start_dir == AUTO) log_warning << "Setting a DartTrap's direction to AUTO is no good idea" << std::endl;
}
void
void
DartTrap::activate()
{
- if (set_direction) dir = initial_direction;
state = IDLE;
sprite->set_action(dir == LEFT ? "idle-left" : "idle-right");
+ set_group(COLGROUP_DISABLED);
- if (initial_delay == 0) initial_delay = 0.1;
+ if (initial_delay == 0) initial_delay = 0.1f;
fire_timer.start(initial_delay);
}
-HitResponse
+HitResponse
DartTrap::collision_player(Player& , const CollisionHit& )
{
return ABORT_MOVE;
float py = get_pos().y;
py += MUZZLE_Y;
- sound_manager->play("sounds/squish.wav", get_pos());
- Sector::current()->add_object(new Dart(px, py, dir, this));
+ sound_manager->play("sounds/dartfire.wav", get_pos());
+ Sector::current()->add_object(new Dart(Vector(px, py), dir, this));
state = IDLE;
sprite->set_action(dir == LEFT ? "idle-left" : "idle-right");
}
IMPLEMENT_FACTORY(DartTrap, "darttrap")
-