import type { LoaderArgs, V2_MetaFunction } from "@remix-run/cloudflare"; import { json } from "@remix-run/cloudflare"; import { useLoaderData } from "@remix-run/react"; import { WorldResponse, Zone, allClasses, allVehicles, worldQuery, } from "~/utils/saerro"; import { pascalCaseToTitleCase, toTitleCase } from "~/utils/strings"; export const loader = async ({ params }: LoaderArgs) => { return json(await worldQuery(params.id as string)); }; export const meta: V2_MetaFunction = ({ data }) => { return [{ title: `${data.world.name} | PS2.LIVE` }]; }; export default function World() { const { world } = useLoaderData(); return (

{world.name}

Total Population

{world.population.total} players ({world.population.vs} VS,{" "} {world.population.nc} NC, {world.population.tr} TR)

Continents

{world.zones.all.map((zone) => ( ))}
); } const ZoneInfo = ({ zone }: { zone: Zone }) => { return (

{zone.name}

{zone.population.total} players ({zone.population.vs} VS,{" "} {zone.population.nc} NC, {zone.population.tr} TR)

    {allClasses.map((cls, idx) => (
  • {pascalCaseToTitleCase(cls)}: {zone.classes?.[cls].total}{" "} total, {zone.classes?.[cls].vs} VS, {zone.classes?.[cls].nc} NC,{" "} {zone.classes?.[cls].tr} TR
  • ))}

{zone.vehicles?.total} vehicles...

    {allVehicles.map((vehicle, idx) => (
  • {toTitleCase(vehicle)}: {zone.vehicles?.[vehicle].total}{" "} total, {zone.vehicles?.[vehicle].vs} VS,{" "} {zone.vehicles?.[vehicle].nc} NC, {zone.vehicles?.[vehicle].tr} TR
  • ))}

); };