Files
fulpstation/tgui-next/packages/tgui/routes.js
Rob Bailey b4ded1ad00 The Bomb (#47929)
I spent a ridiculous amount of time on this.

Arm order now works like:
input disk
input nuke code, press E
input time, press E
press ARM to activate
press ARM again to deactivate (with disk)
press C to clear code input while ready but not armed
2019-11-25 11:50:52 +02:00

378 lines
10 KiB
JavaScript

import { Achievements } from './interfaces/Achievements';
import { AiAirlock } from './interfaces/AiAirlock';
import { AirAlarm } from './interfaces/AirAlarm';
import { AirlockElectronics } from './interfaces/AirlockElectronics';
import { Apc } from './interfaces/Apc';
import { AtmosAlertConsole } from './interfaces/AtmosAlertConsole';
import { AtmosControlConsole } from './interfaces/AtmosControlConsole';
import { AtmosFilter } from './interfaces/AtmosFilter';
import { AtmosMixer } from './interfaces/AtmosMixer';
import { AtmosPump } from './interfaces/AtmosPump';
import { BluespaceArtillery } from './interfaces/BluespaceArtillery';
import { BorgPanel } from './interfaces/BorgPanel';
import { BrigTimer } from './interfaces/BrigTimer';
import { Canister } from './interfaces/Canister';
import { Cargo, CargoExpress } from './interfaces/Cargo';
import { CellularEmporium } from './interfaces/CellularEmporium';
import { CentcomPodLauncher } from './interfaces/CentcomPodLauncher';
import { ChemAcclimator } from './interfaces/ChemAcclimator';
import { ChemDebugSynthesizer } from './interfaces/ChemDebugSynthesizer';
import { ChemDispenser } from './interfaces/ChemDispenser';
import { ChemFilter } from './interfaces/ChemFilter';
import { ChemHeater } from './interfaces/ChemHeater';
import { ChemMaster } from './interfaces/ChemMaster';
import { ChemPress } from './interfaces/ChemPress';
import { ChemSplitter } from './interfaces/ChemSplitter';
import { ChemSynthesizer } from './interfaces/ChemSynthesizer';
import { CodexGigas } from './interfaces/CodexGigas';
import { ComputerFabricator } from './interfaces/ComputerFabricator';
import { Crayon } from './interfaces/Crayon';
import { CrewConsole } from './interfaces/CrewConsole';
import { Cryo } from './interfaces/Cryo';
import { DisposalUnit } from './interfaces/DisposalUnit';
import { DnaVault } from './interfaces/DnaVault';
import { EngravedMessage } from './interfaces/EngravedMessage';
import { Gps } from './interfaces/Gps';
import { Holodeck } from './interfaces/Holodeck';
import { ImplantChair } from './interfaces/ImplantChair';
import { KeycardAuth } from './interfaces/KeycardAuth';
import { LanguageMenu } from './interfaces/LanguageMenu';
import { MechBayPowerConsole } from './interfaces/MechBayPowerConsole';
import { MedicalKiosk } from './interfaces/MedicalKiosk';
import { Mint } from './interfaces/Mint';
import { NtosMain } from './interfaces/NtosMain';
import { NtosNetDownloader } from './interfaces/NtosNetDownloader';
import { NtosSupermatterMonitor } from './interfaces/NtosSupermatterMonitor';
import { NtosWrapper } from './interfaces/NtosWrapper';
import { NuclearBomb } from './interfaces/NuclearBomb';
import { OperatingComputer } from './interfaces/OperatingComputer';
import { OreRedemptionMachine } from './interfaces/OreRedemptionMachine';
import { PersonalCrafting } from './interfaces/PersonalCrafting';
import { PortableGenerator } from './interfaces/PortableGenerator';
import { PowerMonitor } from './interfaces/PowerMonitor';
import { Radio } from './interfaces/Radio';
import { RapidPipeDispenser } from './interfaces/RapidPipeDispenser';
import { ShuttleManipulator } from './interfaces/ShuttleManipulator';
import { SmartVend } from './interfaces/SmartVend';
import { Smes } from './interfaces/Smes';
import { SolarControl } from './interfaces/SolarControl';
import { SpaceHeater } from './interfaces/SpaceHeater';
import { SpawnersMenu } from './interfaces/SpawnersMenu';
import { StationAlertConsole } from './interfaces/StationAlertConsole';
import { SuitStorageUnit } from './interfaces/SuitStorageUnit';
import { Tank } from './interfaces/Tank';
import { TankDispenser } from './interfaces/TankDispenser';
import { ThermoMachine } from './interfaces/ThermoMachine';
import { TurbineComputer } from './interfaces/TurbineComputer';
import { Uplink } from './interfaces/Uplink';
import { VaultController } from './interfaces/VaultController';
import { Wires } from './interfaces/Wires';
const ROUTES = {
achievements: {
component: () => Achievements,
scrollable: true,
},
ai_airlock: {
component: () => AiAirlock,
scrollable: false,
},
airalarm: {
component: () => AirAlarm,
scrollable: true,
},
airlock_electronics: {
component: () => AirlockElectronics,
scrollable: false,
},
apc: {
component: () => Apc,
scrollable: false,
},
atmos_alert: {
component: () => AtmosAlertConsole,
scrollable: true,
},
atmos_control: {
component: () => AtmosControlConsole,
scrollable: true,
},
atmos_filter: {
component: () => AtmosFilter,
scrollable: false,
},
atmos_mixer: {
component: () => AtmosMixer,
scrollable: false,
},
atmos_pump: {
component: () => AtmosPump,
scrollable: false,
},
borgopanel: {
component: () => BorgPanel,
scrollable: true,
},
brig_timer: {
component: () => BrigTimer,
scrollable: false,
},
bsa: {
component: () => BluespaceArtillery,
scrollable: false,
},
canister: {
component: () => Canister,
scrollable: false,
},
cargo: {
component: () => Cargo,
scrollable: true,
},
cargo_express: {
component: () => CargoExpress,
scrollable: true,
},
cellular_emporium: {
component: () => CellularEmporium,
scrollable: true,
},
centcom_podlauncher: {
component: () => CentcomPodLauncher,
scrollable: false,
},
acclimator: {
component: () => ChemAcclimator,
scrollable: false,
},
chem_dispenser: {
component: () => ChemDispenser,
scrollable: true,
},
chemical_filter: {
component: () => ChemFilter,
scrollable: true,
},
chem_heater: {
component: () => ChemHeater,
scrollable: true,
},
chem_master: {
component: () => ChemMaster,
scrollable: true,
},
chem_press: {
component: () => ChemPress,
scrollable: false,
},
chem_splitter: {
component: () => ChemSplitter,
scrollable: false,
},
chem_synthesizer: {
component: () => ChemDebugSynthesizer,
scrollable: false,
},
synthesizer: {
component: () => ChemSynthesizer,
scrollable: false,
},
codex_gigas: {
component: () => CodexGigas,
scrollable: false,
},
computer_fabricator: {
component: () => ComputerFabricator,
scrollable: false,
},
crayon: {
component: () => Crayon,
scrollable: true,
},
crew: {
component: () => CrewConsole,
scrollable: true,
},
cryo: {
component: () => Cryo,
scrollable: false,
},
disposal_unit: {
component: () => DisposalUnit,
scrollable: false,
},
dna_vault: {
component: () => DnaVault,
scrollable: false,
},
engraved_message: {
component: () => EngravedMessage,
scrollable: false,
},
gps: {
component: () => Gps,
scrollable: true,
},
holodeck: {
component: () => Holodeck,
scrollable: true,
},
implantchair: {
component: () => ImplantChair,
scrollable: false,
},
keycard_auth: {
component: () => KeycardAuth,
scrollable: false,
},
language_menu: {
component: () => LanguageMenu,
scrollable: true,
},
mech_bay_power_console: {
component: () => MechBayPowerConsole,
scrollable: false,
},
medical_kiosk: {
component: () => MedicalKiosk,
scrollable: false,
},
mint: {
component: () => Mint,
scrollable: false,
},
ntos_main: {
component: () => NtosMain,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_net_downloader: {
component: () => NtosNetDownloader,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_power_monitor: {
component: () => PowerMonitor,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_supermatter_monitor: {
component: () => NtosSupermatterMonitor,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
nuclear_bomb: {
component: () => NuclearBomb,
scrollable: false,
theme: 'retro',
},
ore_redemption_machine: {
component: () => OreRedemptionMachine,
scrollable: true,
},
operating_computer: {
component: () => OperatingComputer,
scrollable: true,
},
personal_crafting: {
component: () => PersonalCrafting,
scrollable: true,
},
portable_generator: {
component: () => PortableGenerator,
scrollable: false,
},
power_monitor: {
component: () => PowerMonitor,
scrollable: true,
},
radio: {
component: () => Radio,
scrollable: false,
},
rpd: {
component: () => RapidPipeDispenser,
scrollable: true,
},
shuttle_manipulator: {
component: () => ShuttleManipulator,
scrollable: true,
},
smartvend: {
component: () => SmartVend,
scrollable: true,
},
smes: {
component: () => Smes,
scrollable: false,
},
solar_control: {
component: () => SolarControl,
scrollable: false,
},
space_heater: {
component: () => SpaceHeater,
scrollable: false,
},
spawners_menu: {
component: () => SpawnersMenu,
scrollable: true,
},
station_alert: {
component: () => StationAlertConsole,
scrollable: true,
},
suit_storage_unit: {
component: () => SuitStorageUnit,
scrollable: false,
},
tanks: {
component: () => Tank,
scrollable: false,
},
tank_dispenser: {
component: () => TankDispenser,
scrollable: false,
},
thermomachine: {
component: () => ThermoMachine,
scrollable: false,
},
turbine_computer: {
component: () => TurbineComputer,
scrollable: false,
},
uplink: {
component: () => Uplink,
scrollable: true,
theme: 'syndicate',
},
vault_controller: {
component: () => VaultController,
scrollable: false,
},
wires: {
component: () => Wires,
scrollable: false,
},
};
export const getRoute = state => {
if (process.env.NODE_ENV !== 'production') {
// Show a kitchen sink
if (state.showKitchenSink) {
const { KitchenSink } = require('./interfaces/KitchenSink');
return {
component: () => KitchenSink,
scrollable: true,
};
}
}
// Refer to the routing table
return ROUTES[state.config && state.config.interface];
};