!extension_loaded($ext))) { throw new \Exception( 'Required PHP extensions missing: ' . implode(', ', $missing) . '. Please enable them in your PHP configuration.' ); } $uri = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); // Do an early return with babblebox data if that's what's being requested if ($uri[0] === 'babblebox' && (isset($uri[1]) && $uri[1] === 'messages')) { echo babblebox_messages(); exit; } $r = new Router; $r->get('/', fn() => \DragonKnight\index()); $r->post('/move', fn() => \DragonKnight\Actions\Explore::move()); $r->get('/spell/:id', fn($id) => \DragonKnight\Actions\Heal::healspells($id)); $r->get('/character', fn() => \DragonKnight\show_character_info()); $r->get('/character/:id', fn($id) => \DragonKnight\show_character_info($id)); $r->get('/showmap', fn() => \DragonKnight\show_map()); $r->form('/babblebox', fn() => \DragonKnight\babblebox()); $r->get('/babblebox/messages', fn() => \DragonKnight\babblebox_messages()); Towns::register_routes($r); Fight::register_routes($r); Users::register_routes($r); Help::register_routes($r); Forum::register_routes($r); Install::register_routes($r); Admin::register_routes($r); /* NINJA! 🥷 */ $r->get('/ninja', function () { exit('NINJA! 🥷'); }); // [code, handler, params, middleware] $l = $r->lookup($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']); if (is_int($l)) { exit("Error: $l"); } echo render_response($uri, $l['handler'](...$l['params'] ?? []));