MAPG-47 refactor GameController and its view

This commit is contained in:
Bence Pőcze 2020-05-25 19:14:49 +02:00
parent 8eb3dcf2e2
commit 567238c979
2 changed files with 28 additions and 10 deletions

View File

@ -1,28 +1,47 @@
<?php namespace MapGuesser\Controller; <?php namespace MapGuesser\Controller;
use MapGuesser\Util\Geo\Bounds; use MapGuesser\Util\Geo\Bounds;
use MapGuesser\Util\Geo\Position;
use MapGuesser\View\HtmlView; use MapGuesser\View\HtmlView;
use MapGuesser\View\ViewBase; use MapGuesser\View\ViewBase;
use mysqli; use mysqli;
class GameController implements ControllerInterface class GameController implements ControllerInterface
{ {
public function run(): ViewBase private mysqli $mysql;
{
$mysql = new mysqli($_ENV['DB_HOST'], $_ENV['DB_USER'], $_ENV['DB_PASSWORD'], $_ENV['DB_NAME']);
// demo map // demo map
$mapId = 1; private int $mapId = 1;
$stmt = $mysql->prepare('SELECT bound_south_lat, bound_west_lng, bound_north_lat, bound_east_lng FROM maps WHERE id=?'); public function __construct()
$stmt->bind_param("i", $mapId); {
$this->mysql = new mysqli($_ENV['DB_HOST'], $_ENV['DB_USER'], $_ENV['DB_PASSWORD'], $_ENV['DB_NAME']);
}
public function run(): ViewBase
{
$bounds = $this->getMapBounds();
if (!isset($_SESSION['state']) || $_SESSION['state']['mapId'] !== $this->mapId) {
$_SESSION['state'] = [
'mapId' => $this->mapId,
'area' => $bounds->calculateApproximateArea(),
'rounds' => []
];
}
$data = ['bounds' => $bounds->toArray()];
return new HtmlView('game', $data);
}
private function getMapBounds(): Bounds
{
$stmt = $this->mysql->prepare('SELECT bound_south_lat, bound_west_lng, bound_north_lat, bound_east_lng FROM maps WHERE id=?');
$stmt->bind_param("i", $this->mapId);
$stmt->execute(); $stmt->execute();
$map = $stmt->get_result()->fetch_assoc(); $map = $stmt->get_result()->fetch_assoc();
$bounds = Bounds::createDirectly($map['bound_south_lat'], $map['bound_west_lng'], $map['bound_north_lat'], $map['bound_east_lng']); $bounds = Bounds::createDirectly($map['bound_south_lat'], $map['bound_west_lng'], $map['bound_north_lat'], $map['bound_east_lng']);
$data = compact('bounds'); return $bounds;
return new HtmlView('game', $data);
} }
} }

View File

@ -48,8 +48,7 @@
</div> </div>
</div> </div>
<script> <script>
var mapArea = <?= $bounds->calculateApproximateArea() ?>; var mapBounds = <?= json_encode($bounds) ?>;
var guessMapBounds = <?= $bounds->toJson() ?>;
</script> </script>
<script src="https://maps.googleapis.com/maps/api/js?key=<?= $_ENV['GOOGLE_MAPS_JS_API_KEY'] ?>"></script> <script src="https://maps.googleapis.com/maps/api/js?key=<?= $_ENV['GOOGLE_MAPS_JS_API_KEY'] ?>"></script>
<script src="static/js/mapguesser.js"></script> <script src="static/js/mapguesser.js"></script>