HailPanel::HailPanel(PlayerInfo &player, const shared_ptr<Ship> &ship) : player(player), ship(ship), sprite(ship->GetSprite().GetSprite()), unit(2. * ship->Unit()) { SetInterruptible(false); const Government *gov = ship->GetGovernment(); header = gov->GetName() + " ship \"" + ship->Name() + "\":"; if(gov->IsEnemy()) { SetBribe(gov->GetBribeFraction()); if(bribe) message = "If you want us to leave you alone, it'll cost you " + Format::Number(bribe) + " credits."; } else if(ship->IsDisabled()) { const Ship *flagship = player.Flagship(); if(!flagship->JumpsRemaining() || flagship->IsDisabled()) message = "Sorry, we can't help you, because our ship is disabled."; else message = "Our ship has been disabled! Please come board our ship and patch us up!"; } else { // Is the player in any need of assistance? const Ship *flagship = player.Flagship(); // Check if the player is out of fuel. if(!flagship->JumpsRemaining()) { playerNeedsHelp = true; canGiveFuel = ship->CanRefuel(*flagship); } // Check if the player is disabled. if(flagship->IsDisabled()) { playerNeedsHelp = true; canRepair = true; } if(canGiveFuel || canRepair) message = "Looks like you've gotten yourself into a bit of trouble. " "Would you like us to "; if(canGiveFuel && canRepair) message += "patch you up and give you some fuel?"; else if(canGiveFuel) message += "give you some fuel?"; else if(canRepair) message += "patch you up?"; } if(message.empty()) message = ship->GetHail(); }