diff --git a/src/App.tsx b/src/App.tsx index d74e6a17..4b2d8be5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,4 +1,4 @@ -import { GetAvatarRenderManager, GetCommunication, GetConfiguration, GetLocalizationManager, GetRoomEngine, GetRoomSessionManager, GetSessionDataManager, GetSoundManager, GetStage, GetTicker, HabboWebTools, LegacyExternalInterface, LoadGameUrlEvent, NitroLogger, NitroVersion, PrepareRenderer } from '@nitrots/nitro-renderer'; +import { GetAssetManager, GetAvatarRenderManager, GetCommunication, GetConfiguration, GetLocalizationManager, GetRoomEngine, GetRoomSessionManager, GetSessionDataManager, GetSoundManager, GetStage, GetTicker, HabboWebTools, LegacyExternalInterface, LoadGameUrlEvent, NitroLogger, NitroVersion, PrepareRenderer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { GetUIVersion } from './api'; import { Base } from './common'; @@ -11,8 +11,15 @@ NitroVersion.UI_VERSION = GetUIVersion(); export const App: FC<{}> = props => { const [ isReady, setIsReady ] = useState(false); - const [ message, setMessage ] = useState('Getting Ready'); - const [ imageRendering, setImageRendering ] = useState(true); + + useMessageEvent(LoadGameUrlEvent, event => + { + const parser = event.getParser(); + + if(!parser) return; + + LegacyExternalInterface.callGame('showGame', parser.url); + }); useEffect(() => { @@ -41,12 +48,20 @@ export const App: FC<{}> = props => NitroLogger.LOG_ERROR = GetConfiguration().getValue('system.log.error', false); NitroLogger.LOG_EVENTS = GetConfiguration().getValue('system.log.events', false); NitroLogger.LOG_PACKETS = GetConfiguration().getValue('system.log.packets', false); - - await GetLocalizationManager().init(); - await GetAvatarRenderManager().init(); - await GetSoundManager().init(); - await GetSessionDataManager().init(); - await GetRoomSessionManager().init(); + + const assetUrls = GetConfiguration().getValue('preload.assets.urls').map(url => GetConfiguration().interpolate(url)) ?? []; + + await Promise.all( + [ + GetAssetManager().downloadAssets(assetUrls), + GetLocalizationManager().init(), + GetAvatarRenderManager().init(), + GetSoundManager().init(), + GetSessionDataManager().init(), + GetRoomSessionManager().init() + ] + ); + await GetRoomEngine().init(); await GetCommunication().init(); @@ -69,34 +84,14 @@ export const App: FC<{}> = props => NitroLogger.error(err); } } - - const resize = (event: UIEvent) => setImageRendering(!(window.devicePixelRatio % 1)); - - window.addEventListener('resize', resize); - - resize(null); prepare(window.innerWidth, window.innerHeight); - - return () => - { - window.removeEventListener('resize', resize); - } }, []); - - useMessageEvent(LoadGameUrlEvent, event => - { - const parser = event.getParser(); - - if(!parser) return; - - LegacyExternalInterface.callGame('showGame', parser.url); - }); return ( - + { !isReady && - } + } { isReady && } diff --git a/src/components/loading/LoadingView.tsx b/src/components/loading/LoadingView.tsx index 84b74c44..dd8f919f 100644 --- a/src/components/loading/LoadingView.tsx +++ b/src/components/loading/LoadingView.tsx @@ -1,34 +1,19 @@ import { FC } from 'react'; -import { Base, Column, LayoutProgressBar, Text } from '../../common'; +import { Base, Column } from '../../common'; interface LoadingViewProps { - isError: boolean; - message: string; - percent: number; - showPercent?: boolean; } export const LoadingView: FC = props => { - const { isError = false, message = '', percent = 0, showPercent = true } = props; + const {} = props; return ( - { showPercent && - { isError && (message && message.length) ? - { message } - : - <> - { percent.toFixed() }% - - - } - - }