Skip to content

Commit

Permalink
Merge pull request #1129 from hemberger/misc-fixes
Browse files Browse the repository at this point in the history
Miscellaneous fixes
  • Loading branch information
hemberger committed Aug 20, 2021
2 parents 4b39968 + 98f8816 commit bd440ad
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 30 deletions.
11 changes: 7 additions & 4 deletions src/engine/Default/alliance_share_maps_processing.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,22 @@
$alliance_ids = array_diff($memberIDs, [$player->getAccountID()]);

// end here if we are alone in the alliance
if (empty($alliance_ids)) {
if (count($alliance_ids) == 0) {
create_error('Who exactly are you sharing maps with?');
}

$unvisitedSectors = $player->getUnvisitedSectors();

// delete all visited sectors from the table of all our alliance mates
$db = Smr\Database::getInstance();
$db->write('DELETE
$query = 'DELETE
FROM player_visited_sector
WHERE account_id IN (' . $db->escapeArray($alliance_ids) . ')
AND game_id = ' . $db->escapeNumber($player->getGameID()) . '
AND sector_id NOT IN (' . $db->escapeArray($unvisitedSectors) . ')');
AND game_id = ' . $db->escapeNumber($player->getGameID());
if (count($unvisitedSectors) > 0) {
$query .= ' AND sector_id NOT IN (' . $db->escapeArray($unvisitedSectors) . ')';
}
$db->write($query);

// free some memory
unset($unvisitedSectors);
Expand Down
15 changes: 7 additions & 8 deletions src/engine/Default/message_view.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
$template->unassign('NextPageHREF'); // always displaying all scout messages?
} else {
foreach ($dbResult->records() as $dbRecord) {
displayMessage($messageBox, $dbRecord->getInt('message_id'), $dbRecord->getInt('account_id'), $dbRecord->getInt('sender_id'), $player->getGameID(), $dbRecord->getString('message_text'), $dbRecord->getInt('send_time'), $dbRecord->getBoolean('msg_read'), $var['folder_id'], $player->getAccount());
$messageBox['Messages'][] = displayMessage($dbRecord->getInt('message_id'), $dbRecord->getInt('account_id'), $dbRecord->getInt('sender_id'), $player->getGameID(), $dbRecord->getString('message_text'), $dbRecord->getInt('send_time'), $dbRecord->getBoolean('msg_read'), $var['folder_id'], $player->getAccount());
}
}
if (!USING_AJAX) {
Expand Down Expand Up @@ -115,7 +115,7 @@ function displayScouts(array &$messageBox, SmrPlayer $player) : void {
$totalUnread = $dbRecord->getInt('total_unread');
$message = 'Your forces have spotted ' . $sender->getBBLink() . ' passing your forces ' . $dbRecord->getInt('number') . ' ' . pluralise('time', $dbRecord->getInt('number'));
$message .= ($totalUnread > 0) ? ' (' . $totalUnread . ' unread).' : '.';
displayGrouped($messageBox, $sender, $message, $dbRecord->getInt('first'), $dbRecord->getInt('last'), $totalUnread > 0, $player->getAccount());
$messageBox['Messages'][] = displayGrouped($sender, $message, $dbRecord->getInt('first'), $dbRecord->getInt('last'), $totalUnread > 0, $player->getAccount());
}

// Now display individual messages in each group
Expand All @@ -131,15 +131,15 @@ function displayScouts(array &$messageBox, SmrPlayer $player) : void {
$groupBox =& $messageBox['GroupedMessages'][$dbRecord->getInt('sender_id')];
// Limit the number of messages in each group
if (!isset($groupBox['Messages']) || count($groupBox['Messages']) < MESSAGE_SCOUT_GROUP_LIMIT) {
displayMessage($groupBox, $dbRecord->getInt('message_id'), $dbRecord->getInt('account_id'), $dbRecord->getInt('sender_id'), $player->getGameID(), $dbRecord->getString('message_text'), $dbRecord->getInt('send_time'), $dbRecord->getBoolean('msg_read'), MSG_SCOUT, $player->getAccount());
$groupBox['Messages'][] = displayMessage($dbRecord->getInt('message_id'), $dbRecord->getInt('account_id'), $dbRecord->getInt('sender_id'), $player->getGameID(), $dbRecord->getString('message_text'), $dbRecord->getInt('send_time'), $dbRecord->getBoolean('msg_read'), MSG_SCOUT, $player->getAccount());
}
}

// In the default view (groups), we're always displaying all messages
$messageBox['NumberMessages'] = $dbResult->getNumRecords();
}

function displayGrouped(array &$messageBox, SmrPlayer $sender, string $message_text, int $first, int $last, bool $star, SmrAccount $displayAccount) : void {
function displayGrouped(SmrPlayer $sender, string $message_text, int $first, int $last, bool $star, SmrAccount $displayAccount) : array {
// Define a unique array so we can delete grouped messages
$array = array(
$sender->getAccountID(),
Expand All @@ -154,10 +154,10 @@ function displayGrouped(array &$messageBox, SmrPlayer $sender, string $message_t
$message['SenderDisplayName'] = $sender->getLinkedDisplayName(false);
$message['SendTime'] = date($displayAccount->getDateTimeFormat(), $first) . " - " . date($displayAccount->getDateTimeFormat(), $last);
$message['Text'] = $message_text;
$messageBox['Messages'][] = $message;
return $message;
}

function displayMessage(array &$messageBox, int $message_id, int $receiver_id, int $sender_id, int $game_id, string $message_text, int $send_time, bool $msg_read, int $type, SmrAccount $displayAccount) : void {
function displayMessage(int $message_id, int $receiver_id, int $sender_id, int $game_id, string $message_text, int $send_time, bool $msg_read, int $type, SmrAccount $displayAccount) : array {
$message = array();
$message['ID'] = $message_id;
$message['Text'] = $message_text;
Expand Down Expand Up @@ -201,6 +201,5 @@ function displayMessage(array &$messageBox, int $message_id, int $receiver_id, i
$message['ReceiverDisplayName'] = create_link($container, $receiver->getDisplayName());
}

// Append the message to this box
$messageBox['Messages'][] = $message;
return $message;
}
33 changes: 15 additions & 18 deletions src/tools/npc/npc.php
Original file line number Diff line number Diff line change
Expand Up @@ -450,27 +450,24 @@ function canWeUNO(AbstractSmrPlayer $player, bool $oppurtunisticOnly) : Page|fal
}
$sector = $player->getSector();

// We buy armour in preference to shields as it's cheaper.
// We buy cargo holds last if we have no newbie turns because we'd rather not die
$hardwareArray = array(HARDWARE_ARMOUR, HARDWARE_SHIELDS, HARDWARE_CARGO);

$amount = 0;
if ($player->getNewbieTurns() > MIN_NEWBIE_TURNS_TO_BUY_CARGO) {
// Buy cargo holds first if we have plenty of newbie turns left.
$hardwareArray = [HARDWARE_CARGO, HARDWARE_ARMOUR, HARDWARE_SHIELDS];
} else {
// We buy armour in preference to shields as it's cheaper.
// We buy cargo holds last if we have no newbie turns because we'd rather not die
$hardwareArray = [HARDWARE_ARMOUR, HARDWARE_SHIELDS, HARDWARE_CARGO];
}

foreach ($sector->getLocations() as $location) {
if ($location->isHardwareSold()) {
$hardwareSold = $location->getHardwareSold();
if ($player->getNewbieTurns() > MIN_NEWBIE_TURNS_TO_BUY_CARGO && !$ship->hasMaxCargoHolds() && isset($hardwareSold[HARDWARE_CARGO]) && ($amount = floor(($player->getCredits() - MINUMUM_RESERVE_CREDITS) / Globals::getHardwareCost(HARDWARE_CARGO))) > 0) { // Buy cargo holds first if we have plenty of newbie turns left.
$hardwareID = HARDWARE_CARGO;
} else {
foreach ($hardwareArray as $hardwareArrayID) {
if (!$ship->hasMaxHardware($hardwareArrayID) && isset($hardwareSold[$hardwareArrayID]) && ($amount = floor(($player->getCredits() - MINUMUM_RESERVE_CREDITS) / Globals::getHardwareCost($hardwareArrayID))) > 0) {
$hardwareID = $hardwareArrayID;
break;
}
}
foreach ($hardwareArray as $hardwareID) {
if (!$location->isHardwareSold($hardwareID)) {
continue;
}
if (isset($hardwareID)) {
$amount = min($ship->getType()->getMaxHardware($hardwareID) - $ship->getHardware($hardwareID), $amount);
$amountCanBuy = IFloor(($player->getCredits() - MINUMUM_RESERVE_CREDITS) / Globals::getHardwareCost($hardwareID));
$amountNeeded = $ship->getType()->getMaxHardware($hardwareID) - $ship->getHardware($hardwareID);
$amount = min($amountCanBuy, $amountNeeded);
if ($amount > 0) {
return doUNO($hardwareID, $amount, $sector->getSectorID());
}
}
Expand Down

0 comments on commit bd440ad

Please sign in to comment.