/** * @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; }
/** * @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; }
/** * @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; }