/** * \brief Creates an arrow. * \param hero The hero. */ Arrow::Arrow(const Hero& hero): Entity("", 0, hero.get_layer(), Point(0, 0), Size(0, 0)), hero(hero) { // initialize the entity int direction = hero.get_animation_direction(); create_sprite("entities/arrow", true); get_sprite().set_current_direction(direction); set_drawn_in_y_order(true); if (direction % 2 == 0) { // Horizontal. set_size(16, 8); set_origin(8, 4); } else { // Vertical. set_size(8, 16); set_origin(4, 8); } set_xy(hero.get_center_point()); notify_position_changed(); std::string path = " "; path[0] = '0' + (direction * 2); set_movement(std::make_shared<PathMovement>( path, 192, true, false, false )); disappear_date = System::now() + 10000; stop_now = false; entity_reached = nullptr; }
/** * \brief Creates an arrow. * \param hero The hero. */ Arrow::Arrow(const Hero& hero): MapEntity("", 0, hero.get_layer(), 0, 0, 0, 0), hero(hero) { // initialize the entity int direction = hero.get_animation_direction(); create_sprite("entities/arrow", true); get_sprite().set_current_direction(direction); set_drawn_in_y_order(true); if (direction % 2 == 0) { // Horizontal. set_size(16, 8); set_origin(8, 4); } else { // Vertical. set_size(8, 16); set_origin(4, 8); } set_xy(hero.get_center_point()); set_optimization_distance(0); // Make the arrow continue outside the screen until disappear_date. std::string path = " "; path[0] = '0' + (direction * 2); Movement* movement = new PathMovement(path, 192, true, false, false); set_movement(movement); disappear_date = System::now() + 10000; stop_now = false; entity_reached = NULL; }
/** * \brief Creates an arrow. * \param hero the hero */ Arrow::Arrow(Hero& hero): hero(hero) { // initialize the entity int direction = hero.get_animation_direction(); set_layer(hero.get_layer()); create_sprite("entities/arrow", true); get_sprite().set_current_direction(direction); set_bounding_box_from_sprite(); set_xy(hero.get_center_point()); set_optimization_distance(0); // Make the arrow continue outside the screen until disappear_date. std::string path = " "; path[0] = '0' + (direction * 2); Movement *movement = new PathMovement(path, 192, true, false, false); set_movement(movement); disappear_date = System::now() + 10000; stop_now = false; entity_reached = NULL; }