<?php 
declare(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); 
} 
 
 |