yes, its pretty old. Also as semantic I see no problem use "i". its pretty webstandart since its from first html.
You can replace the render function for this one
PHP Code:
<?Php
class graalLevel{
var $tile = array();
var $imgFolder = 'images/';
var $defaultTileset = 'pics1.png';
function prepare(){
file_exists($this->imgFolder) or mkdir($this->imgFolder);
file_exists($this->imgFolder.$this->defaultTileset) or die("Please, first save {$this->defaultTileset} file in folder '{$this->imgFolder}'.");
}
function graalLevel($lvl){
$this->prepare();
preg_match_all('/board \d \d+ \d\d \d (.*)/ei',$lvl,$r);
function convertLine($a,$b,&$o){
foreach(str_split($a, 2) as $c=>$d)$o->tile[$b][$c] = $o->tileSetCoordinates($d);
}
array_walk($r[1],'convertLine',$this);
}
function tileSetCoordinates($d){
$seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
$_ = strpos($seq,$d[1])+strpos($seq,$d[0])*64;
return array(floor((floor($_/512)*16+($_%16))*16),floor((floor($_/16)%32)*16));
}
function render(){
$img = imagecreatetruecolor(1024,1024);
$tileSet = imagecreatefrompng($this->imgFolder.$this->defaultTileset);
for($i=0;$i<64;$i++)for($j=0;$j<64;$j++)
imagecopy($img,$tileSet,$j*16,$i*16,(count($this->tile)>0?$this->tile[$i][$j][0]:'0'),(count($this->tile)>0?$this->tile[$i][$j][1]:0 ),16,16);
header("Content-type: image/jpeg");
imagejpeg($img,NULL,100);
}
}
if(array_key_exists('arq',$_FILES) && $_FILES['arq']['size']>0 && is_array($t = pathinfo($_FILES['arq']['name'])) && $t['extension'] == 'nw'){
$level = new graalLevel( file_get_contents($_FILES['arq']['tmp_name']) );
$level->render();
}
?>
<form method="post" enctype="multipart/form-data">Select nw file:<input type="file" name="arq" /><input type="submit" name="submit" value="enviar"/></form>
than you get the result as image and pretty fast.