get('/', function() { if (user()->currentaction === "In Town") { $page = Towns\town(); } elseif (user()->currentaction === "Exploring") { $page = explore(); } elseif (user()->currentaction === "Fighting") { redirect('/fight'); } return is_htmx() ? $page : display($page, ''); }); $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', '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()) { $content .= '
You are exploring the map, and nothing has happened. Continue exploring using the direction buttons or the Travel To menus.
HTML;
}
/**
* Show a character's info. Defaults to the currently logged in user.
*/
function show_character_info(int $id = 0): void
{
global $controlrow, $userrow;
$userrow = ($id === 0) ? $userrow : get_user($id);
if ($userrow === false) exit('Failed to show info for user ID '.$id);
$levelrow = db()->query("SELECT `{$userrow["charclass"]}_exp` FROM levels WHERE id=? LIMIT 1;", [$userrow['level'] + 1])->fetchArray(SQLITE3_ASSOC);
$spells = db()->query('SELECT id, name FROM spells;');
$userspells = explode(',', $userrow['spells']);
$magic_list = '';
while ($spellrow = $spells->fetchArray(SQLITE3_ASSOC)) {
$spell = false;
foreach($userspells as $b) if ($b == $spellrow["id"]) $spell = true;
if ($spell == true) $magic_list .= $spellrow["name"]."
'.$pos,
'title' => 'Map'
]);
}
/**
* ...
*/
function babblebox()
{
if ($_SERVER['REQUEST_METHOD'] === '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();
}
}
/**
* Is the handler for the HTMX get request for 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;
}
/**
* NINJA! 🥷
*/
function ninja(): void
{
exit('NINJA! 🥷');
}