109 lines
2.9 KiB
PHP
109 lines
2.9 KiB
PHP
<?php
|
|
|
|
set_magic_quotes_runtime(false);
|
|
|
|
session_start();
|
|
if (!is_array($_SESSION['lw_new_game']) || !$_SESSION['lw_new_game']['do_it_now'] || !$_SESSION['lw_new_game']['started']) {
|
|
echo "Sorry, can't do that.";
|
|
exit(0);
|
|
}
|
|
|
|
require_once("config.inc");
|
|
|
|
function makeCTFParams() {
|
|
$cnx = __dbConnect();
|
|
if (!$cnx) {
|
|
print "<b>DATABASE CONNECTION ERROR</b>";
|
|
exit(1);
|
|
}
|
|
$query = pg_query("SELECT * FROM main.ctf_map_def ORDER BY name");
|
|
if (!$query) {
|
|
print "<b>DATABASE ERROR</b>";
|
|
exit(1);
|
|
}
|
|
|
|
$ctfMaps = array();
|
|
while ($r = pg_fetch_assoc($query)) {
|
|
$ctfMaps[$r['id']] = $r;
|
|
$query2 = pg_query("SELECT COUNT(*) FROM main.ctf_map_layout WHERE map={$r['id']} AND spawn_here");
|
|
if (!$query2) {
|
|
print "<b>DATABASE ERROR</b>";
|
|
exit(1);
|
|
}
|
|
list($ctfMaps[$r['id']]['players']) = pg_fetch_array($query2);
|
|
pg_free_result($query2);
|
|
}
|
|
pg_free_result($query);
|
|
pg_close($cnx);
|
|
|
|
$map = $ctfMaps[$_SESSION['lw_new_game']['ctfmap']];
|
|
$cParams = $_SESSION['lw_new_game']['ctfparams'];
|
|
|
|
$params = array(
|
|
'usemap' => $map['id'],
|
|
'maxplayers' => $map['players'],
|
|
'norealloc' => 1,
|
|
'partialtechs' => 0,
|
|
'lockalliances' => $map['alliances'],
|
|
'alliancecap' => 0,
|
|
'victory' => 2,
|
|
'novacation' => 1
|
|
);
|
|
|
|
foreach ($cParams as $p => $v) {
|
|
$params[$p] = $v;
|
|
}
|
|
|
|
return $params;
|
|
}
|
|
|
|
|
|
$ns = $_SESSION['lw_new_game']['found_id'];
|
|
$newConfig = "\t\t<!-- Game added automatically by the game creation tool -->\n"
|
|
. "\t\t<Game id=\"$ns\" version=\"beta5\" namespace=\"$ns\" text=\""
|
|
. $_SESSION['lw_new_game']['name'] . "\" public=\"0\" canjoin=\"0\">\n"
|
|
. "\t\t\t<!-- Game parameters -->\n";
|
|
|
|
if ($_SESSION['lw_new_game']['game_type'] == 'c') {
|
|
$_SESSION['lw_new_game']['params'] = makeCTFParams();
|
|
}
|
|
|
|
foreach ($_SESSION['lw_new_game']['params'] as $p => $v) {
|
|
$newConfig .= "\t\t\t<Param name=\"$p\" value=\"$v\" />\n";
|
|
}
|
|
$newConfig .= "\n"
|
|
. "\t\t\t<!-- Description -->\n"
|
|
. "\t\t\t<Description lang=\"en\">\n"
|
|
. "\t\t\t\t" . $_SESSION['lw_new_game']['descr'] . "\n"
|
|
. "\t\t\t</Description>\n\n"
|
|
. "\t\t\t<!-- Ticks -->\n\n";
|
|
|
|
require_once("cg_ticks_schedule.inc");
|
|
$ticks = __computeTicks($_SESSION['lw_new_game']['ft_y'],
|
|
$_SESSION['lw_new_game']['ft_m'], $_SESSION['lw_new_game']['ft_d'],
|
|
$_SESSION['lw_new_game']['speed'], $_SESSION['lw_new_game']['shift_ticks']);
|
|
|
|
foreach ($ticks as $tid => $data) {
|
|
$time = $data[1];
|
|
$time = ($time - ($secs = $time % 60)) / 60;
|
|
$time = ($time - ($mins = $time % 60)) / 60;
|
|
$newConfig .= "\t\t\t<!-- \"$tid\" tick: first tick " . gmstrftime("%H:%M:%S on %Y-%m-%d", $data[0])
|
|
. ", interval {$time}h, {$mins}min, {$secs}s -->\n"
|
|
. "\t\t\t<Tick script=\"$tid\" first=\"{$data[0]}\" interval=\"{$data[1]}\" />\n";
|
|
}
|
|
$newConfig .= "\t\t</Game>\n";
|
|
|
|
$file = fopen($aConfig['ctrlPath'] . "/config.$ns.xml", "w");
|
|
fwrite($file, $newConfig);
|
|
fclose($file);
|
|
|
|
$op = array(
|
|
"pc" => 70,
|
|
"text" => "Merging configuration",
|
|
"delay" => 1,
|
|
"to" => "cg_step9.php"
|
|
);
|
|
|
|
include('cg_operation.inc');
|
|
|
|
?>
|