Esempio n. 1
0
function sector_show_sector($sector_id, $user_id)
{
    assert(!empty($sector_id));
    assert(!empty($user_id));
    global $_RUN;
    // Create the submenu where we can easily move between sectors
    $result = sql_query("SELECT * FROM g_sectors WHERE user_id = " . $user_id);
    $tmp = sql_fetchrow($result);
    $sectors = csl($tmp['csl_sector_id']);
    $idx = array_search($sector_id, $sectors);
    $first = reset($sectors);
    $last = end($sectors);
    if ($idx == 0) {
        $prev = $sectors[$idx];
    } else {
        $prev = $sectors[$idx - 1];
    }
    if ($idx == count($sectors) - 1) {
        $next = $sectors[$idx];
    } else {
        $next = $sectors[$idx + 1];
    }
    create_submenu(array("First Sector" => "sector.php?cmd=" . encrypt_get_vars("show") . "&sid=" . encrypt_get_vars($first), "Previous Sector" => "sector.php?cmd=" . encrypt_get_vars("show") . "&sid=" . encrypt_get_vars($prev), "Next Sector" => "sector.php?cmd=" . encrypt_get_vars("show") . "&sid=" . encrypt_get_vars($next), "Last Sector" => "sector.php?cmd=" . encrypt_get_vars("show") . "&sid=" . encrypt_get_vars($last)));
    $sector = sector_get_sector($sector_id);
    $template = new Smarty();
    $template->debugging = true;
    help_set_template_vars($template);
    $template->assign("sector_id", $sector['sector']);
    $template->assign("sector_name", $sector['name']);
    $template->assign("sector_coordinate", $sector['distance'] . " / " . $sector['angle']);
    if ($sector['user_id'] == UID_NOBODY) {
        $template->assign("rename_form_visible", "true");
    } else {
        $template->assign("rename_form_visible", "false");
    }
    // And now, do all anomalies
    $tmp = user_get_all_anomalies_from_user($user_id);
    $anomalies = csl($tmp['csl_discovered_id']);
    $undiscovered_anomalies = csl($tmp['csl_undiscovered_id']);
    $anomalies = csl_merge_fields($anomalies, $tmp['csl_undiscovered_id']);
    // We didn't find any discovered anomalies in this sector per default
    $i = 0;
    $tmpvar = array();
    // Get anomaly information for all anomalies in the sector
    $result = sql_query("SELECT * FROM s_anomalies WHERE sector_id=" . $sector_id . " ORDER BY distance");
    while ($anomaly = sql_fetchrow($result)) {
        // We didn't discover this anomaly yet, continue with another
        if (!in_array($anomaly['id'], $anomalies)) {
            continue;
        }
        // Thread undiscovered planets different...
        if (in_array($anomaly['id'], $undiscovered_anomalies)) {
            $tmp['name'] = "Unknown";
            $tmp['class'] = "";
            $tmp['population'] = "";
            $tmp['owner'] = "";
            $tmp['status'] = "";
            $tmp['radius'] = $anomaly['radius'];
            $tmp['distance'] = $anomaly['distance'];
            $tmpvar[] = $tmp;
            continue;
        }
        // If we are here, we have found an anomaly with we already
        // discovered and explored, show all the info about it...
        $state = sql_get_state($anomaly['state_id']);
        if ($anomaly['user_id'] != 0) {
            $race = user_get_race($anomaly['user_id']);
        } else {
            $race = "Nobody";
        }
        // Show the population status in a different color
        if ($anomaly['population_capacity'] == 0) {
            $p = 0;
        } else {
            $p = $anomaly['population'] / $anomaly['population_capacity'] * 100;
        }
        $popcol = 'people_class1';
        if ($p > 50) {
            $popcol = 'people_class2';
        }
        if ($p > 75) {
            $popcol = 'people_class3';
        }
        if ($p > 99) {
            $popcol = 'people_class4';
        }
        if (!anomaly_is_planet($anomaly['id'])) {
            $anomaly['class'] = "";
            $anomaly['population'] = "";
        }
        // Show the class in different colors, A..J are orange... K..M are white... L..Z are red
        $classcol = "class_normal";
        if (planet_is_habitable($anomaly['id'])) {
            $classcol = 'class_habitable';
        } elseif (planet_is_minable($anomaly['id'])) {
            $classcol = 'class_minable';
        } else {
            $classcol = 'class_unusable';
        }
        $tmp = array();
        $tmp['name_href'] = "anomaly.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($anomaly['id']);
        $tmp['name'] = $anomaly['name'];
        $tmp['class'] = $anomaly['class'];
        $tmp['class_class'] = $classcol;
        if (planet_is_habitable($anomaly['id'])) {
            $tmp['population'] = $anomaly['population'];
        } else {
            $tmp['population'] = "---";
        }
        $tmp['population_class'] = $popcol;
        $tmp['owner'] = $race;
        $tmp['status'] = $state;
        $tmp['radius'] = $anomaly['radius'];
        $tmp['distance'] = $anomaly['distance'];
        $tmpvar[] = $tmp;
    }
    $template->assign("anomalies", $tmpvar);
    $template->display($_RUN['theme_path'] . "/sectors-item.tpl");
}
Esempio n. 2
0
function show_constructions($anomaly_id)
{
    assert(is_numeric($anomaly_id));
    // Get global information stuff
    $planet = anomaly_get_anomaly($anomaly_id);
    $user = user_get_user($planet['user_id']);
    // And get the ores from the planet
    $result = sql_query("SELECT * FROM g_ores WHERE planet_id=" . $anomaly_id);
    $ores = sql_fetchrow($result);
    // Get all buildings that are currently build on the planet
    $surface = planet_get_surface($anomaly_id);
    $current_buildings = csl($surface['csl_building_id']);
    // If we've got an headquarter and it's inactive, we cannot build anything.. :(
    if (in_array(BUILDING_HEADQUARTER_INACTIVE, $current_buildings)) {
        print_line("Your headquarter is currently inactive due to insufficent resources for its upkeep. You cannot build anything on this planet until you replenish your resources.");
        $cannot_build = true;
        return;
    }
    print_subtitle("Construction on planet " . $planet['name']);
    // And get all buildings, compare wether or not we may build them...
    $result = sql_query("SELECT * FROM s_buildings ORDER BY id");
    while ($building = sql_fetchrow($result)) {
        // Default, we can build this
        $cannot_build = false;
        // Stage -1: Check planet class when we want to build a headquarter
        if ($building['id'] == BUILDING_HEADQUARTER) {
            if (!planet_is_habitable($anomaly_id)) {
                $cannot_build = true;
            }
        }
        // Stage 0: Check building_level
        if ($building['build_level'] > $user['building_level']) {
            $cannot_build = true;
        }
        // Stage 1: Building Count Check
        // Build counter check
        if ($building['max'] > 0) {
            $times_already_build = 0;
            for ($i = 0; $i != count($current_buildings); $i++) {
                if (building_active_or_inactive($current_buildings[$i]) == $building['id']) {
                    $times_already_build++;
                }
            }
            // Cannot build cause we already have MAX buildings of this kind.. :(
            // building['max'] = 0 means unlimited buildings...
            if ($times_already_build == $building['max']) {
                $cannot_build = true;
            }
        }
        // Stage 2: Dependency Check
        // Get all dependencies
        $buildings_needed = csl($building['csl_depends']);
        // Do we need them? If not, skip dependency-check.
        if (!empty($building['csl_depends'])) {
            $deps_found = count($buildings_needed);
            // Count to zero...
            while (list($key, $building_dep_id) = each($buildings_needed)) {
                if ($building_dep_id == "") {
                    $deps_found--;
                    continue;
                }
                // Get all dependencies
                if (in_array($building_dep_id, $current_buildings)) {
                    $deps_found--;
                    // Found in current_buildings?
                    // Decrease counter
                }
            }
        } else {
            // No need for deps
            $deps_found = 0;
            // Zero is good...
        }
        // Not all dependencies found, we cannot build it.. :(
        if ($deps_found > 0) {
            $cannot_build = true;
        }
        // Stage 3: Show building if we can build it..
        if ($cannot_build == false) {
            building_show_details($building['id'], $planet['id'], $user['user_id'], $ores['stock_ores']);
        }
    }
}
function planet_show_planet($planet_id)
{
    assert(!empty($planet_id));
    global $_GALAXY;
    global $_CONFIG;
    global $_RUN;
    if (!anomaly_is_planet($planet_id)) {
        return;
    }
    $planet = anomaly_get_anomaly($planet_id);
    $result = sql_query("SELECT * FROM g_ores WHERE planet_id=" . $planet_id);
    $ore = sql_fetchrow($result);
    $stock_ore = ore_csl_to_list($ore['stock_ores']);
    $race = user_get_race($planet['user_id']);
    $sector = sector_get_sector($planet['sector_id']);
    $result = sql_query("SELECT * FROM s_state WHERE id=" . $planet['state_id']);
    $state = sql_fetchrow($result);
    if ($race == "") {
        $race = "-";
    }
    $extra_attack = 0;
    $extra_defense = 0;
    $attack = $planet['cur_attack'];
    $defense = $planet['cur_attack'];
    // Count all ships and their attack/defense currently in orbit around the planet
    $result = sql_query("SELECT COUNT(*) FROM g_vessels AS g, s_vessels AS s WHERE g.planet_id=" . $planet_id . " AND s.id = g.vessel_id AND s.type='" . VESSEL_TYPE_BATTLE . "' AND status='ORBIT' AND created=1");
    $tmp = sql_fetchrow($result);
    $battle_vessels = $tmp[0];
    $result = sql_query("SELECT COUNT(*) FROM g_vessels AS g, s_vessels AS s WHERE g.planet_id=" . $planet_id . " AND s.id = g.vessel_id AND s.type='" . VESSEL_TYPE_TRADE . "' AND status='ORBIT' AND created=1");
    $tmp = sql_fetchrow($result);
    $trade_vessels = $tmp[0];
    $result = sql_query("SELECT COUNT(*) FROM g_vessels AS g, s_vessels AS s WHERE g.planet_id=" . $planet_id . " AND s.id = g.vessel_id AND s.type='" . VESSEL_TYPE_EXPLORE . "' AND status='ORBIT' AND created=1");
    $tmp = sql_fetchrow($result);
    $explore_vessels = $tmp[0];
    $result = sql_query("SELECT SUM(cur_attack) AS CA, SUM(cur_defense) AS CD FROM g_vessels AS g WHERE g.planet_id=" . $planet_id . " AND status='ORBIT' AND created=1");
    $tmp = sql_fetchrow($result);
    if (isset($tmp['CA'])) {
        $extra_attack = $extra_attack + $tmp['CA'];
    }
    if (isset($tmp['CD'])) {
        $extra_defense = $extra_defense + $tmp['CD'];
    }
    $template = new Smarty();
    $template->debugging = true;
    $template->assign("sector_name", $sector['name']);
    $template->assign("planet_name", $planet['name']);
    $template->assign("image", $_CONFIG['IMAGE_URL'] . $_GALAXY['image_dir'] . "/planets/" . $planet['image'] . ".jpg");
    if ($planet['unknown'] == 1) {
        $template->assign("cmd", encrypt_get_vars("claim"));
        $template->assign("formid", generate_form_id());
        $template->assign("aid", encrypt_get_vars($planet_id));
        $template->assign("rename_form_visible", "true");
    } else {
        $template->assign("rename_form_visible", "false");
    }
    $template->assign("class", $planet['class']);
    $template->assign("race", $race);
    $template->assign("state", $state['name']);
    $template->assign("happieness", planet_get_happy_string($planet['happieness']));
    $template->assign("healtieness", planet_get_healty_string($planet['sickness']));
    $template->assign("population", $planet['population']);
    $template->assign("radius", $planet['radius']);
    $template->assign("distance", $planet['distance']);
    $template->assign("water", $planet['water']);
    $template->assign("temperature", $planet['temperature']);
    for ($i = 0; $i != ore_get_ore_count(); $i++) {
        $tmp = array();
        $tmp['name'] = ore_get_ore_name($i);
        $tmp['stock'] = $stock_ore[$i];
        $tmpvar[] = $tmp;
    }
    $template->assign("ores", $tmpvar);
    $template->assign("attack", $attack);
    $template->assign("extra_attack", $extra_attack);
    $template->assign("defense", $defense);
    $template->assign("extra_defense", $extra_defense);
    $template->assign("strength", $planet['cur_strength']);
    $template->assign("orbit_battle", $trade_vessels);
    $template->assign("orbit_trade", $battle_vessels);
    $template->assign("orbit_explore", $explore_vessels);
    $template->assign("description", convert_px_to_html_tags($planet['description']));
    $template->display($_RUN['theme_path'] . "/planet-details.tpl");
    $commands = array();
    // If we have at least 1 ship in orbit, we can view them here...
    if ($explore_vessels + $trade_vessels + $battle_vessels > 0) {
        $commands['View Vessels'] = "vessel.php?cmd=" . encrypt_get_vars("showaid") . "&aid=" . encrypt_get_vars($planet_id);
    }
    // If it's a solid-class planet (lower than M), we can view the surface.
    if (planet_is_habitable($planet_id) or planet_is_minable($planet_id)) {
        $commands['View Surface'] = "surface.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet_id);
    }
    // If it's our planet we might construct and manufacture,..
    if (anomaly_am_i_owner($planet['id'])) {
        $commands['Change Description'] = "anomaly.php?cmd=" . encrypt_get_vars("description") . "&aid=" . encrypt_get_vars($planet_id);
        // Only minable or habitable or lower can construct
        if (planet_is_habitable($planet_id) or planet_is_minable($planet_id)) {
            $commands['Construct'] = "construct.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet_id);
            $commands['Manufacture'] = "manufacture.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet_id);
        }
        if (planet_has_vesselbuilding_capability($planet_id)) {
            $commands['Create Vessel'] = "vesselcreate.php?cmd=" . encrypt_get_vars("showaid") . "&aid=" . encrypt_get_vars($planet_id);
        }
    }
    create_submenu($commands);
}
Esempio n. 4
0
function conview_show_sector($user_id, $sector_id, $planets)
{
    assert(is_numeric($user_id));
    assert(is_numeric($sector_id));
    assert(is_array($planets));
    global $_RUN;
    $tmpvar3 = array();
    // Check how many planets we own in this sector. If none, don't show anything...
    $result = sql_query("SELECT COUNT(*) AS count FROM s_anomalies WHERE sector_id = " . $sector_id . " AND user_id=" . $user_id, JUST_ONE_ALLOWED);
    $tmp = sql_fetchrow($result);
    if ($tmp['count'] == 0) {
        return;
    }
    // Get sector information
    $sector = sector_get_sector($sector_id);
    // Get planet information for all planets in the sector
    $result = sql_query("SELECT * FROM s_anomalies WHERE sector_id=" . $sector_id . " AND user_id=" . $user_id . " ORDER BY distance", MULTIPLE_ALLOWED);
    while ($planet = sql_fetchrow($result)) {
        // If we can't view the planet, then don't show it...
        if (!in_array($planet['id'], $planets)) {
            continue;
        }
        // Can we show this planet (eg, is it in our $planets-array)
        if (!empty($visible_planets) && !in_array($planet['id'], $visible_planets)) {
            continue;
        }
        $tmpvar = array();
        $tmpvar['name'] = $planet['name'];
        $tmpvar['href'] = "anomaly.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet['id']);
        if (anomaly_is_planet($planet['id'])) {
            $tmpvar['viewstring'] = "View Planet";
        } else {
            $tmpvar['viewstring'] = "View Anomaly";
        }
        $tmpvar2 = array();
        if (planet_is_habitable($planet['id']) or planet_is_minable($planet['id'])) {
            $tmpvar2['href'] = "surface.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet['id']);
            $tmpvar2['str'] = "Surface View";
            $tmpvar['href_array'][] = $tmpvar2;
            $tmpvar2['href'] = "construct.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet['id']);
            $tmpvar2['str'] = "Construction";
            $tmpvar['href_array'][] = $tmpvar2;
            $tmpvar2['href'] = "manufacture.php?cmd=" . encrypt_get_vars("show") . "&aid=" . encrypt_get_vars($planet['id']);
            $tmpvar2['str'] = "Manufacturing";
            $tmpvar['href_array'][] = $tmpvar2;
            if (planet_has_vesselbuilding_capability($planet['id'])) {
                $tmpvar2['href'] = "vesselcreate.php?cmd=" . encrypt_get_vars("showaid") . "&aid=" . encrypt_get_vars($planet['id']);
                $tmpvar2['str'] = "Create Vessel";
                $tmpvar['href_array'][] = $tmpvar2;
            } else {
                $tmpvar2['href'] = "";
                $tmpvar2['str'] = "";
                $tmpvar['href_array'][] = $tmpvar2;
            }
        } else {
            $tmpvar2['href'] = "";
            $tmpvar2['str'] = "";
            $tmpvar['href_array'][] = $tmpvar2;
            $tmpvar['href_array'][] = $tmpvar2;
            $tmpvar['href_array'][] = $tmpvar2;
            $tmpvar['href_array'][] = $tmpvar2;
        }
        $tmpvar3[] = $tmpvar;
    }
    // while
    $template = new Smarty();
    $template->debugging = true;
    $template->assign("sector_id", $sector['sector']);
    $template->assign("sector_name", $sector['name']);
    $template->assign("planets", $tmpvar3);
    $template->display($_RUN['theme_path'] . "/conview.tpl");
}
Esempio n. 5
0
function info_get_anomaly_statistics($user_id)
{
    assert(isset($user_id));
    $minable = 0;
    $habitable = 0;
    $unusable = 0;
    $starbase = 0;
    $wormhole = 0;
    $anomalies = 0;
    $blackhole = 0;
    $result = sql_query("SELECT * FROM s_anomalies WHERE user_id = " . $user_id);
    while ($anomaly = sql_fetchrow($result)) {
        if (anomaly_is_planet($anomaly['id'])) {
            if (planet_is_habitable($anomaly['id'])) {
                $habitable++;
            } elseif (planet_is_minable($anomaly['id'])) {
                $minable++;
            } else {
                $unusable++;
            }
        } elseif (anomaly_is_wormhole($anomaly['id'])) {
            $wormhole++;
        } elseif (anomaly_is_starbase($anomaly['id'])) {
            $starbase++;
        } elseif (anomaly_is_blackhole($anomaly['id'])) {
            $blackhole++;
        } else {
            $anomalies++;
        }
    }
    return array($minable, $habitable, $unusable, $starbase, $wormhole, $blackhole, $anomalies);
}