| 
<?phpdeclare(strict_types=1);
 
 function getMapData($map,$possibleTiles){
 if(isset($_SESSION['mapData'])){
 return $_SESSION['mapData'];
 }
 $mapData = '';
 mt_srand(1337);
 for($y = 0;$y < $map['height'];$y++){
 for($x = 0;$x<$map['width'];$x++){
 $mapData .= mt_rand(0,count($possibleTiles)-1);
 }
 }
 $_SESSION['mapData'] = $mapData;
 return $mapData;
 }
 function viewMap() {
 
 
 $tile = [
 'width'=>64,
 'height'=>64
 ];
 
 $viewPort = [
 'width'=>17,
 'height'=>9
 ];
 $map = [
 'width'=>500,
 'height'=>500
 ];
 $currentPosition = [
 'y'=>0,
 'x'=>0
 ];
 
 $possibleTiles = [
 'gras',
 'water',
 'dirt'
 ];
 $mapData = getMapData($map,$possibleTiles);
 $halfViewPortWidth = floor($viewPort['width'] / 2);
 $halfViewPortHeight = floor($viewPort['height'] / 2);
 $viewPort['left'] = $currentPosition['x'] - $halfViewPortWidth;
 $viewPort['top'] = $currentPosition['y'] - $halfViewPortHeight;
 $viewPort['right'] = $viewPort['left'] + $viewPort['width'];
 $viewPort['bottom'] = $viewPort['top'] + $viewPort['height'];
 
 $data = [
 'viewPort'=>$viewPort,
 'tile'=>$tile,
 'possibleTiles'=>$possibleTiles,
 'mapData'=>$mapData,
 'map'=>$map
 ];
 return render('map', $data);
 }
 
 |