Maps/public/index.php
2022-02-20 23:15:30 +00:00

75 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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