get('/', function() { if (user()->currentaction === "In Town") { $page = Towns\town(); } elseif (user()->currentaction === "Exploring") { $page = Explore\explore(); } elseif (user()->currentaction === "Fighting") { redirect('/fight'); } return is_htmx() ? $page : display($page, ''); }); /* NINJA! 🥷 */ $r->get('/ninja', function() { exit('NINJA! 🥷'); }); Towns\register_routes($r); Fights\register_routes($r); Users\register_routes($r); Help\register_routes($r); Forum\register_routes($r); Install\register_routes($r); Admin\register_routes($r); $r->post('/move', 'Explore\move'); $r->get('/spell/:id', 'healspells'); $r->get('/character', 'show_character_info'); $r->get('/character/:id', 'show_character_info'); $r->get('/showmap', 'showmap'); $r->form('/babblebox', 'babblebox'); $r->get('/babblebox/messages', 'babblebox_messages'); // [code, handler, params, middleware] $l = $r->lookup($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']); if (is_int($l)) exit("Error: $l"); $content = $l['handler'](...$l['params'] ?? []); if (is_htmx() && $uri[0] !== 'babblebox') { header('HX-Push-Url: '.$_SERVER['REQUEST_URI']); $content .= '
'.$pos,
'title' => 'Map'
]);
}
/**
* ...
*/
function babblebox()
{
if (is_post()) {
$content = trim($_POST["babble"]);
if (!empty($content)) {
db()->query('INSERT INTO babble (posttime, author, babble) VALUES (CURRENT_TIMESTAMP, ?, ?);',
[user()->username, $content]);
}
return babblebox_messages();
}
}
/**
* The handler that is polled by HTMX for new babblebox messages.
*/
function babblebox_messages(): string
{
if (user() === false) return '';
$query = db()->query('SELECT * FROM babble ORDER BY id ASC LIMIT 40;');
$has_chats = false;
$messages = '';
while ($row = $query->fetchArray(SQLITE3_ASSOC)) {
$has_chats = true;
$messages .= '';
}
if (!$has_chats) $messages = 'There are no messages. :(';
return $messages;
}