From 6a854dea1a2e296599133817e8ff2d8d1fbb1831 Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Sat, 26 Apr 2025 10:30:42 -0700 Subject: [PATCH] More RIG Intros (#17601) * Add Commonwealth loader * Fix a runtime * Protean loader --- code/modules/clothing/spacesuits/rig/rig.dm | 3 +- .../clothing/spacesuits/rig/rig_tgui.dm | 22 ++- .../spacesuits/rig/suits/station_vr.dm | 3 + .../species/station/protean/protean_rig.dm | 1 + icons/hud/{ => rig}/rig_ui_slots.dmi | Bin icons/hud/rig/tentacles.mp4 | Bin 0 -> 34123 bytes .../interfaces/RIGSuit/RIGSuitHardware.tsx | 10 +- .../tgui/interfaces/RIGSuit/RIGSuitLoader.tsx | 106 +++++++---- .../RIGSuit/animated_logos/Commonwealth.tsx | 174 ++++++++++++++++++ .../interfaces/RIGSuit/animated_logos/NT.tsx | 27 +++ .../packages/tgui/interfaces/RIGSuit/types.ts | 1 + .../tgui/styles/interfaces/RIGSuit.scss | 13 ++ 12 files changed, 321 insertions(+), 39 deletions(-) rename icons/hud/{ => rig}/rig_ui_slots.dmi (100%) create mode 100644 icons/hud/rig/tentacles.mp4 create mode 100644 tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx create mode 100644 tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 5c5f4e9eb3a..dac44c9d773 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -33,6 +33,7 @@ var/interface_path = "RIGSuit" var/ai_interface_path = "RIGSuit" var/interface_title = "Hardsuit Controller" + var/interface_intro = "NT" var/wearer_move_delay //Used for AI moving. var/ai_controlled_move_delay = 10 @@ -803,7 +804,7 @@ /obj/item/rig/dropped(mob/user) . = ..(user) // So the next user will see the boot animation - tgui_shared_states.Cut() + tgui_shared_states?.Cut() for(var/piece in list("helmet","gauntlets","chest","boots")) toggle_piece(piece, user, ONLY_RETRACT) if(wearer && wearer.wearing_rig == src) diff --git a/code/modules/clothing/spacesuits/rig/rig_tgui.dm b/code/modules/clothing/spacesuits/rig/rig_tgui.dm index 8f93cb11ced..3c3e77b1321 100644 --- a/code/modules/clothing/spacesuits/rig/rig_tgui.dm +++ b/code/modules/clothing/spacesuits/rig/rig_tgui.dm @@ -1,5 +1,5 @@ // Just used to force the icon into the rsc, Byond.iconRefMap does the rest -GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig_ui_slots.dmi') +GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig/rig_ui_slots.dmi') /* * This defines the global UI for RIGSuits. @@ -120,6 +120,26 @@ GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig_ui_slots.dmi') return data +/* + * Sends data once each time the UI is opened. + */ +/obj/item/rig/tgui_static_data(mob/user) + var/list/data = ..() + + data["interface_intro"] = interface_intro + + return data + + +/datum/asset/simple/rig + assets = list( + "tentacles.mp4" = 'icons/hud/rig/tentacles.mp4', + ) + +/obj/item/rig/ui_assets(mob/user) + . = ..() + . += get_asset_datum(/datum/asset/simple/rig) + /* * tgui_act() is the TGUI equivelent of Topic(). It's responsible for all of the "actions" you can take in the UI. */ diff --git a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm index 716699990c4..375b6e46be0 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm @@ -230,6 +230,7 @@ /obj/item/rig/baymed name = "\improper Commonwealth medical hardsuit control module" desc = "A lightweight first responder hardsuit from the Commonwealth. Not suitable for combat use, but advanced myomer fibers can push the user to incredible speeds." + interface_intro = "Commonwealth" icon = 'icons/obj/rig_modules_vr.dmi' // the item default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob @@ -295,6 +296,7 @@ /obj/item/rig/bayeng name = "\improper Commonwealth engineering hardsuit control module" desc = "An advanced construction hardsuit from the Commonwealth. Built like a tank. Don't expect to be taking any tight corners while running." + interface_intro = "Commonwealth" icon = 'icons/obj/rig_modules_vr.dmi' // the item default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob @@ -361,6 +363,7 @@ /obj/item/rig/pathfinder name = "\improper Commonwealth pathfinder hardsuit control module" desc = "A Commonwealth pathfinder hardsuit is hard to come by... how'd this end up on the frontier?" + interface_intro = "Commonwealth" icon = 'icons/obj/rig_modules_vr.dmi' // the item default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index 6d38cce5ad5..c022d9f2bf0 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -8,6 +8,7 @@ unremovable = TRUE //Can not be removed. At least, not initially. default_mob_icon = null //Actually having a forced sprite for Proteans is ugly af. I'm not gonna make this a toggle icon_state = "nanomachine_rig" + interface_intro = "Protean" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) siemens_coefficient= 1 slowdown = 0 diff --git a/icons/hud/rig_ui_slots.dmi b/icons/hud/rig/rig_ui_slots.dmi similarity index 100% rename from icons/hud/rig_ui_slots.dmi rename to icons/hud/rig/rig_ui_slots.dmi diff --git a/icons/hud/rig/tentacles.mp4 b/icons/hud/rig/tentacles.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..057a6eb8dbeaa5da98fbe009b4b18e9861f4dc2b GIT binary patch literal 34123 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 literal 0 HcmV?d00001 diff --git a/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx b/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx index ec5b1960056..af433e2a041 100644 --- a/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx +++ b/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx @@ -126,7 +126,7 @@ export const RIGSuitHardware = (props) => { @@ -153,7 +153,7 @@ export const RIGSuitHardware = (props) => { @@ -174,7 +174,7 @@ export const RIGSuitHardware = (props) => { @@ -192,7 +192,7 @@ export const RIGSuitHardware = (props) => { @@ -231,7 +231,7 @@ const HardwarePiece = (props: { { - return ( - - - - - - ); -}; +import { resolveAsset } from '../../assets'; +import { useBackend } from '../../backend'; +import { CommonwealthLogo } from './animated_logos/Commonwealth'; +import { NTLogo } from './animated_logos/NT'; +import { type Data } from './types'; const LoadingText = (props: { onFinish?: () => void }) => { const onFinish = props.onFinish ? props.onFinish : () => {}; @@ -87,9 +65,9 @@ export const LoaderNT = (props: { onFinish?: () => void }) => { if (showLogo) { return ( - + - + ); @@ -98,10 +76,76 @@ export const LoaderNT = (props: { onFinish?: () => void }) => { return ; }; +export const LoaderCommonwealth = (props: { onFinish?: () => void }) => { + const [showLogo, setShowLogo] = useState(true); + + useEffect(() => { + setTimeout(() => { + setShowLogo(false); + }, 3500); + }, []); + + if (showLogo) { + return ( + + + + + + ); + } + + return ( + + + + ); +}; + +export const LoaderProtean = (props: { onFinish?: () => void }) => { + const [showLogo, setShowLogo] = useState(true); + + useEffect(() => { + setTimeout(() => { + setShowLogo(false); + }, 3500); + }, []); + + if (showLogo) { + return ( + + + + + ); + } + + return ( + + + + ); +}; + export const RIGSuitLoader = (props: { onFinish?: () => void }) => { + const { data } = useBackend(); // You can skip to the end by clicking const onFinish = props.onFinish ? props.onFinish : () => {}; + let loader = ; + + if (data.interface_intro === 'Commonwealth') { + loader = ; + } else if (data.interface_intro === 'Protean') { + loader = ; + } + return ( void }) => { onClick={() => onFinish()} style={{ cursor: 'pointer' }} > - - - + {loader} ); diff --git a/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx new file mode 100644 index 00000000000..5e340646dfd --- /dev/null +++ b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx @@ -0,0 +1,174 @@ +export const CommonwealthLogo = (props) => ( + + {/* Circles */} + + + + + + + + {/* Stars */} + + + + + {/* Lines */} + + + + {/* Left Wreath */} + + + + {/* Right Wreath */} + + + + +); diff --git a/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx new file mode 100644 index 00000000000..06346fb6c9c --- /dev/null +++ b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx @@ -0,0 +1,27 @@ +// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. +// http://creativecommons.org/licenses/by-sa/4.0/ +export const NTLogo = (props) => { + return ( + + + + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/RIGSuit/types.ts b/tgui/packages/tgui/interfaces/RIGSuit/types.ts index 0c57ffb6366..276d07754d6 100644 --- a/tgui/packages/tgui/interfaces/RIGSuit/types.ts +++ b/tgui/packages/tgui/interfaces/RIGSuit/types.ts @@ -2,6 +2,7 @@ import type { BooleanLike } from 'tgui-core/react'; export type Data = { primarysystem: string | null; + interface_intro: string; ai: BooleanLike; cooling: BooleanLike; sealed: BooleanLike; diff --git a/tgui/packages/tgui/styles/interfaces/RIGSuit.scss b/tgui/packages/tgui/styles/interfaces/RIGSuit.scss index da23abe161d..f40186622b4 100644 --- a/tgui/packages/tgui/styles/interfaces/RIGSuit.scss +++ b/tgui/packages/tgui/styles/interfaces/RIGSuit.scss @@ -49,3 +49,16 @@ 0.2s -webkit-filter linear; -webkit-user-drag: none; } + +@keyframes wipe-in-up { + from { + clip-path: inset(100% 0 0 0); + } + to { + clip-path: inset(0 0 0 0); + } +} + +.RIGSuit__Animation__WipeUp { + animation: 1s linear wipe-in-up both; +}