mirror of
https://github.com/stevenhowes/CTheEscape.git
synced 2026-05-27 00:03:27 +01:00
compile.php compiles m2_txt into m2_evt and m2_evact. Mission2 updated to load binaries.
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
<?php
|
||||
$script = file_get_contents("m2_txt");
|
||||
|
||||
$inevent = -1;
|
||||
|
||||
$events = array();
|
||||
$eventactions = array();
|
||||
|
||||
foreach(preg_split("/((\r?\n)|(\r\n?))/", $script) as $line)
|
||||
{
|
||||
$line = trim($line);
|
||||
|
||||
if(strlen($line) == 0)
|
||||
{
|
||||
$inevent = -1;
|
||||
continue;
|
||||
}
|
||||
|
||||
$split = preg_split("/\(|\)/",$line);
|
||||
|
||||
if(count($split) != 3)
|
||||
{
|
||||
echo " Syntax error: " . $line . "\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
switch ($split[0])
|
||||
{
|
||||
case "AddEvent":
|
||||
$csv = str_getcsv($split[1]);
|
||||
$events[$csv[0]] = array("Name"=>$csv[1],"Triggered"=>$csv[2],"RearmDelay"=>$csv[3],"NextRearm"=>$csv[4]);
|
||||
break;
|
||||
case "Event":
|
||||
$csv = str_getcsv($split[1]);
|
||||
$inevent = -1;
|
||||
foreach($events as $eventid=>$event)
|
||||
{
|
||||
if($event['Name'] == $csv[0])
|
||||
$inevent = $eventid;
|
||||
}
|
||||
if($inevent < 0)
|
||||
echo " Unknown event: " . $csv[0] . "\n";
|
||||
break;
|
||||
case "AreaName":
|
||||
if($inevent < 0)
|
||||
{
|
||||
echo " Invalid outside event\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$csv = str_getcsv($split[1]);
|
||||
$eventactions[] = array("Event"=>$inevent,"Action"=>1,"ActionValue"=>$csv[0],"ActionTarget"=>-1);
|
||||
}
|
||||
break;
|
||||
case "Sound":
|
||||
if($inevent < 0)
|
||||
{
|
||||
echo " Invalid outside event\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$csv = str_getcsv($split[1]);
|
||||
$eventactions[] = array("Event"=>$inevent,"Action"=>2,"ActionValue"=>$csv[1],"ActionTarget"=>$csv[0]);
|
||||
}
|
||||
break;
|
||||
case "SetTile":
|
||||
if($inevent < 0)
|
||||
{
|
||||
echo " Invalid outside event\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$csv = str_getcsv($split[1]);
|
||||
$eventactions[] = array("Event"=>$inevent,"Action"=>0,"ActionValue"=>$csv[1],"ActionTarget"=>$csv[0]);
|
||||
}
|
||||
break;
|
||||
case "ReArm":
|
||||
if($inevent < 0)
|
||||
{
|
||||
echo " Invalid outside event\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$csv = str_getcsv($split[1]);
|
||||
|
||||
$target = -1;
|
||||
foreach($events as $eventid=>$event)
|
||||
{
|
||||
if($event['Name'] == $csv[0])
|
||||
$target = $eventid;
|
||||
}
|
||||
|
||||
if($target < 0)
|
||||
echo " Unknown target: " . $csv[0] . "\n";
|
||||
else
|
||||
$eventactions[] = array("Event"=>$inevent,"Action"=>3,"ActionValue"=>255,"ActionTarget"=>$target);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
echo " Unknown command: " . $split[0] . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
$fp = fopen('m2_evt,ffd', 'w');
|
||||
foreach($events as $event)
|
||||
{
|
||||
fwrite($fp, $event['Name']);
|
||||
$pad = 16 - strlen($event['Name']);
|
||||
while($pad > 0)
|
||||
{
|
||||
$pad --;
|
||||
fwrite($fp, "\0");
|
||||
}
|
||||
|
||||
if($event['Triggered'] == 1)
|
||||
fwrite($fp, "\1");
|
||||
else
|
||||
fwrite($fp, "\0");
|
||||
$pad = 3;
|
||||
while($pad > 0)
|
||||
{
|
||||
$pad --;
|
||||
fwrite($fp, "\0");
|
||||
}
|
||||
|
||||
// TODO: ReArm stuff
|
||||
$pad = 8;
|
||||
while($pad > 0)
|
||||
{
|
||||
$pad --;
|
||||
fwrite($fp, chr(255));
|
||||
}
|
||||
}
|
||||
|
||||
$blanks = 200 - count($events);
|
||||
while($blanks > 0)
|
||||
{
|
||||
$blanks --;
|
||||
fwrite($fp, "INVALID");
|
||||
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
|
||||
fwrite($fp, chr(1));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
fwrite($fp, chr(0));
|
||||
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
}
|
||||
fclose($fp);
|
||||
|
||||
$fp = fopen('m2_evact,ffd', 'w');
|
||||
foreach($eventactions as $eventaction)
|
||||
{
|
||||
fwrite($fp, pack('V', $eventaction['Event'])); // Event
|
||||
|
||||
fwrite($fp, chr($eventaction['Action'])); // Action
|
||||
fwrite($fp, chr($eventaction['ActionValue'])); // ActionValue
|
||||
|
||||
fwrite($fp, chr(0)); // PAD
|
||||
fwrite($fp, chr(0)); // PAD
|
||||
|
||||
fwrite($fp, pack('V', $eventaction['ActionTarget'])); // Event
|
||||
}
|
||||
|
||||
$blanks = 1000 - count($eventactions);
|
||||
while($blanks > 0)
|
||||
{
|
||||
$blanks --;
|
||||
fwrite($fp, chr(255)); // Event
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
|
||||
fwrite($fp, chr(255)); // Action
|
||||
fwrite($fp, chr(255)); // ActionValue
|
||||
|
||||
fwrite($fp, chr(0)); // PAD
|
||||
fwrite($fp, chr(0)); // PAD
|
||||
|
||||
fwrite($fp, chr(255)); // ActionTarget
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
fwrite($fp, chr(255));
|
||||
}
|
||||
fclose($fp);
|
||||
?>
|
||||
Reference in New Issue
Block a user