Example #1
0
/**
 * @brief Performs an appropriate action when a planet is clicked.
 *
 *    @param planet Index of the planet.
 *    @param autonav Whether to autonav to the target.
 *    @return Whether the click was used.
 */
int input_clickedPlanet( int planet, int autonav )
{
   Planet *pnt;
   pnt = cur_system->planets[ planet ];

   if (!planet_isKnown(pnt))
      return 0;

   if (autonav) {
      player_targetPlanetSet( planet );
      player_autonavPnt( pnt->name );
      return 1;
   }

   if (planet == player.p->nav_planet && input_isDoubleClick((void*)pnt)) {
      player_hyperspacePreempt(0);
      if (planet_hasService(pnt, PLANET_SERVICE_LAND)) {
         if ((pnt->faction >= 0) && (areEnemies( player.p->faction, pnt->faction ) && !pnt->bribed))
            player_hailPlanet();
         else
            player_land();
      }
   }
   else
      player_targetPlanetSet( planet );

   input_clicked( (void*)pnt );
   return 1;
}
Example #2
0
/**
 * @brief Starts autonav.
 */
void player_autonavStart (void)
{
   /* Not under manual control or disabled. */
   if (pilot_isFlag( player.p, PILOT_MANUAL_CONTROL ) ||
         pilot_isDisabled(player.p))
      return;

   if ((player.p->nav_hyperspace == -1) && (player.p->nav_planet== -1))
      return;
   else if ((player.p->nav_planet != -1) && !player_getHypPreempt()) {
      player_autonavPnt( cur_system->planets[ player.p->nav_planet ]->name );
      return;
   }

   if (player.p->fuel < player.p->fuel_consumption) {
      player_message(_("\arNot enough fuel to jump for autonav."));
      return;
   }

   if (pilot_isFlag( player.p, PILOT_NOJUMP)) {
      player_message(_("\arHyperspace drive is offline."));
      return;
   }

   if (!player_autonavSetup())
      return;

   player.autonav = AUTONAV_JUMP_APPROACH;
}
Example #3
0
/**
 * @brief Starts autonav.
 */
void player_autonavStart (void)
{
   /* Not under manual control. */
   if (pilot_isFlag( player.p, PILOT_MANUAL_CONTROL ))
      return;

   if ((player.p->nav_hyperspace == -1) && (player.p->nav_planet== -1))
      return;
   else if ((player.p->nav_planet != -1) && !player_getHypPreempt()) {
      player_autonavPnt( cur_system->planets[ player.p->nav_planet ]->name );
      return;
   }

   if (player.p->fuel < player.p->fuel_consumption) {
      player_message("\erNot enough fuel to jump for autonav.");
      return;
   }