maps2 #2
74
public/index.php
Normal file
74
public/index.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?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();
|
Loading…
Reference in New Issue
Block a user