75 lines
2.6 KiB
PHP
75 lines
2.6 KiB
PHP
<?php
|
||
session_start();
|
||
error_reporting(E_ALL);
|
||
|
||
# Date: 20.02.2022 (16:17)
|
||
use Insallah\Map\Map;
|
||
use Insallah\Map\MapData;
|
||
use Insallah\Player\Player;
|
||
|
||
/** Автозагрузка классов с учётом неймспейсов. */
|
||
spl_autoload_register(function ($className) {
|
||
$fileName = dirname(__DIR__) . '/src/' . str_replace('\\', '/', $className . '.php');
|
||
if (file_exists($fileName)) {
|
||
require_once $fileName;
|
||
}
|
||
});
|
||
|
||
$_POST['action'] ??= null;
|
||
$_SESSION['x'] ??= null;
|
||
$_SESSION['y'] ??= null;
|
||
$_SESSION['force'] ??= null; // Для насильной смены локации.
|
||
$_SESSION['mapname'] ??= 'map';
|
||
|
||
/** Пример смены локации.
|
||
* Да, можно сделать функцию.
|
||
* И это будет более правильно.
|
||
* Это просто принцип для демонстрации.
|
||
*/
|
||
if ($_SESSION['x'] === 0 && $_SESSION['y'] === 2 && $_SESSION['mapname'] === 'map') {
|
||
$_SESSION['mapname'] = 'map2';
|
||
$_SESSION['force'] = true;
|
||
header('Location: ' . $_SERVER['REQUEST_URI']);
|
||
exit;
|
||
}
|
||
if ($_SESSION['x'] === 4 && $_SESSION['y'] === 2 && $_SESSION['mapname'] === 'map2') {
|
||
$_SESSION['mapname'] = 'map';
|
||
$_SESSION['force'] = true;
|
||
header('Location: ' . $_SERVER['REQUEST_URI']);
|
||
exit;
|
||
}
|
||
|
||
$map = new Map(new MapData($_SESSION['mapname']), $_SESSION['force']);
|
||
unset($_SESSION['force']);
|
||
|
||
if ($_POST['action'] === 'up') {
|
||
$map->goUp();
|
||
}
|
||
if ($_POST['action'] === 'down') {
|
||
$map->goDown();
|
||
}
|
||
if ($_POST['action'] === 'left') {
|
||
$map->goLeft();
|
||
}
|
||
if ($_POST['action'] === 'right') {
|
||
$map->goRight();
|
||
}
|
||
if ($_POST['action'] === 'clear') {
|
||
Player::clear();
|
||
}
|
||
|
||
/** Для отладки. */
|
||
?>
|
||
<div style="width: 600px; border: lightcoral dashed 2px; background-color: antiquewhite; padding: 2px;">
|
||
<strong>P:[<?= Player::getPos()[0] ?>,<?= Player::getPos()[1] ?>] MAP:[<?= $_SESSION['mapname'] ?>]</strong><br>
|
||
Смена локаций на MAP:[0,2] и MAP2:[4,2]. Да, там надо повторно клацнуть чтобы всё сменилось, но опять же, это
|
||
принцип на коленке, а не готовое решение. Если хранить всё хоть в какой-то базе, а не в сессиях от половины этих
|
||
костылей можно отказаться.
|
||
</div>
|
||
<?php
|
||
echo $map->drawVisible();
|
||
require_once '../resources/views/map-controls.html';
|
||
|
||
echo 'Карта целиком:<br><br>';
|
||
MapData::drawFullMap();
|