$template->assign('PageTopic', 'Planet : ' . $planet->getName() . ' [Sector #' . $planet->getSectorID() . ']'); require_once get_file_loc('menu.inc'); create_planet_menu($planet); $PHP_OUTPUT .= '<p>There are no goods present on your ship or the planet!</p>'; $present = false; $table .= '<p>'; $table .= '<table class="standard">'; $table .= '<tr>'; $table .= '<th></th>'; $table .= '<th>Good</th>'; $table .= '<th>Ship</th>'; $table .= '<th>Planet</th>'; $table .= '<th>Amount</th>'; $table .= '<th>Transfer to</th>'; $table .= '</tr>'; $GOODS =& Globals::getGoods(); foreach ($GOODS as $goodID => $good) { if (!$ship->hasCargo($goodID) && !$planet->hasStockpile($goodID)) { continue; } if (!$present) { $present = true; $PHP_OUTPUT = ""; } $container = create_container('planet_stockpile_processing.php'); $container['good_id'] = $goodID; $PHP_OUTPUT .= create_echo_form($container); $PHP_OUTPUT .= '<tr>'; $PHP_OUTPUT .= '<td class="left"><img src="' . $good['ImageLink'] . '" width="13" height="16" title="' . $good['Name'] . '" alt=""></td>'; $PHP_OUTPUT .= '<td>' . $good['Name'] . '</td>'; $PHP_OUTPUT .= '<td align="center">' . $ship->getCargo($goodID) . '</td>';
$Locations =& SmrLocation::getAllLocations(); Sorter::sortByNumMethod($Locations, 'getName'); foreach ($Locations as &$Location) { ?> <option value="<?php echo $Location->getTypeID(); ?> "><?php echo $Location->getName(); ?> </option><?php } unset($Location); break; case 'Goods': $Goods =& Globals::getGoods(); foreach ($Goods as &$Good) { ?> <option value="<?php echo $Good['ID']; ?> "><?php echo $Good['Name']; ?> </option><?php } unset($Good); break; default: } ?>
<?php if (!$player->isLandedOnPlanet()) { create_error('You are not on a planet!'); } $planet =& $player->getSectorPlanet(); $template->assign('PageTopic', 'Planet : ' . $planet->getName() . ' [Sector #' . $player->getSectorID() . ']'); require_once get_file_loc('menu.inc'); create_planet_menu($planet); $template->assignByRef('ThisPlanet', $planet); $template->assign('PlanetBuildings', Globals::getPlanetBuildings()); $template->assign('Goods', Globals::getGoods());
function &findRoutes(&$player) { debug('Finding Routes'); $galaxies =& SmrGalaxy::getGameGalaxies($player->getGameID()); $tradeGoods = array(GOOD_NOTHING => false); $goods =& Globals::getGoods(); foreach ($goods as $goodID => &$good) { if ($player->meetsAlignmentRestriction($good['AlignRestriction'])) { $tradeGoods[$goodID] = true; } else { $tradeGoods[$goodID] = false; } } unset($good); $tradeRaces = array(); $races =& Globals::getRaces(); foreach ($races as $raceID => &$race) { $tradeRaces[$raceID] = false; } unset($race); $tradeRaces[$player->getRaceID()] = true; $galaxy =& $player->getSector()->getGalaxy(); $maxNumberOfPorts = 2; $routesForPort = -1; $numberOfRoutes = 1000; $maxDistance = 15; $startSectorID = $galaxy->getStartSector(); $endSectorID = $galaxy->getEndSector(); $db = new SmrMySqlDatabase(); $db->query('SELECT routes FROM route_cache WHERE game_id=' . $db->escapeNumber($player->getGameID()) . ' AND max_ports=' . $db->escapeNumber($maxNumberOfPorts) . ' AND goods_allowed=' . $db->escapeObject($tradeGoods) . ' AND races_allowed=' . $db->escapeObject($tradeRaces) . ' AND start_sector_id=' . $db->escapeNumber($startSectorID) . ' AND end_sector_id=' . $db->escapeNumber($endSectorID) . ' AND routes_for_port=' . $db->escapeNumber($routesForPort) . ' AND max_distance=' . $db->escapeNumber($maxDistance)); if ($db->nextRecord()) { $routes = unserialize(gzuncompress($db->getField('routes'))); debug('Using Cached Routes: #' . count($routes)); return $routes; } else { debug('Generating Routes'); $allSectors = array(); foreach ($galaxies as &$galaxy) { $allSectors += $galaxy->getSectors(); //Merge arrays } unset($galaxy); $distances =& Plotter::calculatePortToPortDistances($allSectors, $maxDistance, $startSectorID, $endSectorID); if ($maxNumberOfPorts == 1) { $allRoutes = RouteGenerator::generateOneWayRoutes($allSectors, $distances, $tradeGoods, $tradeRaces, $routesForPort); } else { $allRoutes = RouteGenerator::generateMultiPortRoutes($maxNumberOfPorts, $allSectors, $tradeGoods, $tradeRaces, $distances, $routesForPort, $numberOfRoutes); } unset($distances); $allRoutes =& $allRoutes[RouteGenerator::EXP_ROUTE]; $routesMerged = array(); foreach ($allRoutes as $multi => &$routesByMulti) { $routesMerged += $routesByMulti; //Merge arrays } unset($routesByMulti); unset($allSectors); SmrPort::clearCache(); SmrSector::clearCache(); $db->query('INSERT INTO route_cache ' . '(game_id, max_ports, goods_allowed, races_allowed, start_sector_id, end_sector_id, routes_for_port, max_distance, routes)' . ' VALUES (' . $db->escapeNumber($player->getGameID()) . ', ' . $db->escapeNumber($maxNumberOfPorts) . ', ' . $db->escapeObject($tradeGoods) . ', ' . $db->escapeObject($tradeRaces) . ', ' . $db->escapeNumber($startSectorID) . ', ' . $db->escapeNumber($endSectorID) . ', ' . $db->escapeNumber($routesForPort) . ', ' . $db->escapeNumber($maxDistance) . ', ' . $db->escapeObject($routesMerged, true) . ')'); debug('Found Routes: #' . count($routesMerged)); return $routesMerged; } }