mirror of
https://github.com/duckietm/Nitro-Cool-UI.git
synced 2025-06-21 22:36:58 +00:00
Started: Hotelview / Toolbar has been migrated
This commit is contained in:
parent
e5035356f1
commit
12f0416d4c
12
README.md
12
README.md
@ -1,7 +1,5 @@
|
|||||||
# Nitro React v2.1
|
# Nitro React v2.1
|
||||||
|
|
||||||
Credits: Thanks to wassehk on discord for this release!
|
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- [Git](https://git-scm.com/)
|
- [Git](https://git-scm.com/)
|
||||||
@ -13,7 +11,7 @@ Credits: Thanks to wassehk on discord for this release!
|
|||||||
|
|
||||||
- First you should open terminal and navigate to the folder where you want to clone Nitro
|
- First you should open terminal and navigate to the folder where you want to clone Nitro
|
||||||
- Clone Nitro
|
- Clone Nitro
|
||||||
- `git clone https://github.com/duckietm/Nitro-Cool-UI.git`
|
- `git clone https://git.krews.org/nitro/nitro-react.git`
|
||||||
- Install the dependencies
|
- Install the dependencies
|
||||||
- `yarn install`
|
- `yarn install`
|
||||||
- This may take some time, please be patient
|
- This may take some time, please be patient
|
||||||
@ -27,14 +25,10 @@ Credits: Thanks to wassehk on discord for this release!
|
|||||||
- Update `camera.url, thumbnails.url, url.prefix, habbopages.url`
|
- Update `camera.url, thumbnails.url, url.prefix, habbopages.url`
|
||||||
- You can override any variable by passing it to `NitroConfig` in the index.html
|
- You can override any variable by passing it to `NitroConfig` in the index.html
|
||||||
|
|
||||||
- Make the following changes
|
|
||||||
- ExternalTesxts.json
|
|
||||||
`"room.mute.button.text": "Hide chat",`
|
|
||||||
`"room.unmute.button.text": "Unhide chat",`
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
- To use Nitro you need `.nitro` assets generated, see [nitro-converter](https://git.krews.org/nitro/nitro-converter) for instructions
|
- To use Nitro you need `.nitro` assets generated, see [nitro-converter](https://git.krews.org/nitro/nitro-converter) for instructions
|
||||||
|
- See [Morningstar Websockets](https://git.krews.org/nitro/ms-websockets) for instructions on configuring websockets on your server
|
||||||
|
|
||||||
### Development
|
### Development
|
||||||
|
|
||||||
@ -49,7 +43,7 @@ yarn start
|
|||||||
To build a production version of Nitro just run the following command
|
To build a production version of Nitro just run the following command
|
||||||
|
|
||||||
```
|
```
|
||||||
yarn build
|
yarn build:prod
|
||||||
```
|
```
|
||||||
|
|
||||||
- A `dist` folder will be generated, these are the files that must be uploaded to your webserver
|
- A `dist` folder will be generated, these are the files that must be uploaded to your webserver
|
||||||
|
@ -22,8 +22,9 @@
|
|||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<div id="root" class="w-100 h-100"></div>
|
<div id="root" class="w-100 h-100"></div>
|
||||||
<script>
|
<script>
|
||||||
const NitroConfig = {
|
window.NitroConfig = {
|
||||||
"config.urls": [ '/renderer-config.json', '/ui-config.json' ],
|
"config.urls": [ '/renderer-config.json', '/ui-config.json' ],
|
||||||
|
"socket.url": (new URLSearchParams(window.location.search).get('socket.url') || null),
|
||||||
"sso.ticket": (new URLSearchParams(window.location.search).get('sso') || null),
|
"sso.ticket": (new URLSearchParams(window.location.search).get('sso') || null),
|
||||||
"forward.type": (new URLSearchParams(window.location.search).get('room') ? 2 : -1),
|
"forward.type": (new URLSearchParams(window.location.search).get('room') ? 2 : -1),
|
||||||
"forward.id": (new URLSearchParams(window.location.search).get('room') || 0),
|
"forward.id": (new URLSearchParams(window.location.search).get('room') || 0),
|
||||||
|
48
package.json
48
package.json
@ -1,47 +1,39 @@
|
|||||||
{
|
{
|
||||||
"name": "nitro-react",
|
"name": "nitro-react",
|
||||||
"version": "2.1.1",
|
"version": "2.2",
|
||||||
"homepage": ".",
|
"homepage": ".",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "vite --base=/client/ --host",
|
"start": "vite",
|
||||||
"build": "vite build --base=/client/",
|
"build": "vite build",
|
||||||
"preview": "vite preview --base=/client/ --host",
|
|
||||||
"build:prod": "npx browserslist@latest --update-db && yarn build",
|
"build:prod": "npx browserslist@latest --update-db && yarn build",
|
||||||
"eslint": "eslint src --ext .ts,.tsx"
|
"eslint": "eslint src --ext .ts,.tsx"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emoji-mart/data": "^1.1.2",
|
"@tanstack/react-virtual": "3.2.0",
|
||||||
"@emoji-mart/react": "^1.1.1",
|
|
||||||
"@nitrots/nitro-renderer": "file:submodules/renderer",
|
|
||||||
"@tanstack/react-virtual": "^3.0.0-beta.60",
|
|
||||||
"dompurify": "^3.0.11",
|
|
||||||
"emoji-mart": "^5.5.2",
|
|
||||||
"emoji-toolkit": "8.0.0",
|
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-bootstrap": "^2.7.2",
|
"react-bootstrap": "^2.2.2",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-icons": "^5.0.1",
|
"react-icons": "^5.0.1",
|
||||||
"react-slider": "^2.0.0",
|
"react-slider": "^2.0.6",
|
||||||
"react-youtube": "^7.13.1",
|
"react-youtube": "^7.13.1",
|
||||||
"typescript": "^4.3.5",
|
"use-between": "^1.3.5"
|
||||||
"use-between": "^1.3.4",
|
|
||||||
"yarn": "^1.22.19"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.15.3",
|
"@types/node": "^20.11.30",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.2.67",
|
||||||
"@types/react-dom": "^18.0.11",
|
"@types/react-dom": "^18.2.22",
|
||||||
"@types/react-slider": "^1.3.1",
|
"@types/react-slider": "^1.3.6",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.55.0",
|
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
||||||
"@typescript-eslint/parser": "^5.55.0",
|
"@typescript-eslint/parser": "^7.3.1",
|
||||||
"@vitejs/plugin-react": "^4.2.1",
|
"@vitejs/plugin-react": "^4.2.1",
|
||||||
"eslint": "^8.36.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.29.1",
|
||||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||||
"eslint-plugin-react": "^7.32.2",
|
"eslint-plugin-react": "^7.34.1",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"sass": "1.64.2",
|
"sass": "^1.72.0",
|
||||||
"vite": "^5.0.11"
|
"typescript": "^5.4.2",
|
||||||
|
"vite": "^5.1.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
{
|
{
|
||||||
"socket.url": "wss://ws.website.com:2096",
|
"socket.url": "ws://localhost:2096",
|
||||||
"asset.url": "https://website.com",
|
"asset.url": "http://localhost/gamedata",
|
||||||
"image.library.url": "https://website.com/c_images/",
|
"image.library.url": "http://localhost/gamedata/c_images/",
|
||||||
"hof.furni.url": "https://website.com/dcr/hof_furni",
|
"hof.furni.url": "http://localhost/gamedata",
|
||||||
"images.url": "${asset.url}/images",
|
"images.url": "${asset.url}/images",
|
||||||
"gamedata.url": "${asset.url}/gamedata",
|
"gamedata.url": "${asset.url}",
|
||||||
"sounds.url": "${asset.url}/sounds/%sample%.mp3",
|
"sounds.url": "${asset.url}/sounds/%sample%.mp3",
|
||||||
"external.texts.url": [ "${gamedata.url}/ExternalTexts.json", "${gamedata.url}/UITexts.json" ],
|
"external.texts.url": [ "${gamedata.url}/config/ExternalTexts.json", "${gamedata.url}/config/UITexts.json" ],
|
||||||
"external.samples.url": "${hof.furni.url}/mp3/sound_machine_sample_%sample%.mp3",
|
"external.samples.url": "${gamedata.url}/mp3/sound_machine_sample_%sample%.mp3",
|
||||||
"furnidata.url": "${gamedata.url}/FurnitureData.json",
|
"furnidata.url": "${gamedata.url}/config/FurnitureData.json",
|
||||||
"productdata.url": "${gamedata.url}/ProductData.json",
|
"productdata.url": "${gamedata.url}/config/ProductData.json",
|
||||||
"avatar.actions.url": "${gamedata.url}/HabboAvatarActions.json",
|
"avatar.actions.url": "${gamedata.url}/config/HabboAvatarActions.json",
|
||||||
"avatar.figuredata.url": "${gamedata.url}/FigureData.json",
|
"avatar.figuredata.url": "${gamedata.url}/config/FigureData.json",
|
||||||
"avatar.figuremap.url": "${gamedata.url}/FigureMap.json",
|
"avatar.figuremap.url": "${gamedata.url}/config/FigureMap.json",
|
||||||
"avatar.effectmap.url": "${gamedata.url}/EffectMap.json",
|
"avatar.effectmap.url": "${gamedata.url}/config/EffectMap.json",
|
||||||
"avatar.asset.url": "${asset.url}/bundled/figure/%libname%.nitro",
|
"avatar.asset.url": "${asset.url}/clothes/%libname%.nitro",
|
||||||
"avatar.asset.effect.url": "${asset.url}/bundled/effect/%libname%.nitro",
|
"avatar.asset.effect.url": "${asset.url}/effect/%libname%.nitro",
|
||||||
"furni.asset.url": "${asset.url}/bundled/furniture/%libname%.nitro",
|
"furni.asset.url": "${asset.url}/furniture/%libname%.nitro",
|
||||||
"furni.asset.icon.url": "${hof.furni.url}/icons/%libname%%param%_icon.png",
|
"furni.asset.icon.url": "${gamedata.url}/icons/%libname%%param%_icon.png",
|
||||||
"pet.asset.url": "${asset.url}/bundled/pet/%libname%.nitro",
|
"pet.asset.url": "${asset.url}//pet/%libname%.nitro",
|
||||||
"generic.asset.url": "${asset.url}/bundled/generic/%libname%.nitro",
|
"generic.asset.url": "${asset.url}/bundled/generic/%libname%.nitro",
|
||||||
"badge.asset.url": "${image.library.url}album1584/%badgename%.gif",
|
"badge.asset.url": "${image.library.url}album1584/%badgename%.gif",
|
||||||
"furni.rotation.bounce.steps": 20,
|
"furni.rotation.bounce.steps": 20,
|
||||||
@ -88,7 +88,7 @@
|
|||||||
"bearbaby",
|
"bearbaby",
|
||||||
"terrierbaby",
|
"terrierbaby",
|
||||||
"gnome",
|
"gnome",
|
||||||
"leprechaun",
|
"gnome",
|
||||||
"kittenbaby",
|
"kittenbaby",
|
||||||
"puppybaby",
|
"puppybaby",
|
||||||
"pigletbaby",
|
"pigletbaby",
|
||||||
@ -97,7 +97,9 @@
|
|||||||
"pterosaur",
|
"pterosaur",
|
||||||
"velociraptor",
|
"velociraptor",
|
||||||
"cow",
|
"cow",
|
||||||
"dragondog"
|
"LeetPen",
|
||||||
|
"bbwibb",
|
||||||
|
"elephants"
|
||||||
],
|
],
|
||||||
"preload.assets.urls": [
|
"preload.assets.urls": [
|
||||||
"${asset.url}/bundled/generic/avatar_additions.nitro",
|
"${asset.url}/bundled/generic/avatar_additions.nitro",
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"image.library.notifications.url": "${image.library.url}notifications/%image%.png",
|
"image.library.notifications.url": "${image.library.url}notifications/%image%.png",
|
||||||
"achievements.images.url": "${image.library.url}Quests/%image%.png",
|
"achievements.images.url": "${image.library.url}Quests/%image%.png",
|
||||||
"camera.url": "https://camera.url",
|
"camera.url": "http://localhost/camera/photo",
|
||||||
"thumbnails.url": "https://camera.url/thumbnail/%thumbnail%.png",
|
"thumbnails.url": "/camera/photo/thumb/%thumbnail%.png",
|
||||||
"url.prefix": "https://website.com",
|
"url.prefix": "",
|
||||||
"habbopages.url": "${url.prefix}/",
|
"habbopages.url": "${url.prefix}/",
|
||||||
"group.homepage.url": "${url.prefix}/groups/%groupid%/id",
|
"group.homepage.url": "${url.prefix}/groups/%groupid%/id",
|
||||||
"guide.help.alpha.groupid": 0,
|
"guide.help.alpha.groupid": 0,
|
||||||
@ -26,8 +26,6 @@
|
|||||||
"game.center.enabled": false,
|
"game.center.enabled": false,
|
||||||
"guides.enabled": true,
|
"guides.enabled": true,
|
||||||
"toolbar.hide.quests": true,
|
"toolbar.hide.quests": true,
|
||||||
"api.sound.upload": "/chatvoice/upload.php",
|
|
||||||
"youtube.publish.disabled": false,
|
|
||||||
"navigator.room.models": [
|
"navigator.room.models": [
|
||||||
{ "clubLevel": 0, "tileSize": 104, "name": "a" },
|
{ "clubLevel": 0, "tileSize": 104, "name": "a" },
|
||||||
{ "clubLevel": 0, "tileSize": 94, "name": "b" },
|
{ "clubLevel": 0, "tileSize": 94, "name": "b" },
|
||||||
@ -130,13 +128,11 @@
|
|||||||
},
|
},
|
||||||
"currency.display.number.short": false,
|
"currency.display.number.short": false,
|
||||||
"currency.asset.icon.url": "${images.url}/wallet/%type%.png",
|
"currency.asset.icon.url": "${images.url}/wallet/%type%.png",
|
||||||
"currency.seasonal.color": "bronze",
|
|
||||||
"catalog.asset.url": "${image.library.url}catalogue",
|
"catalog.asset.url": "${image.library.url}catalogue",
|
||||||
"catalog.asset.image.url": "${catalog.asset.url}/%name%.gif",
|
"catalog.asset.image.url": "${catalog.asset.url}/%name%.gif",
|
||||||
"catalog.asset.icon.url": "${catalog.asset.url}/icon_%name%.png",
|
"catalog.asset.icon.url": "${catalog.asset.url}/icon_%name%.png",
|
||||||
"catalog.tab.icons": false,
|
"catalog.tab.icons": false,
|
||||||
"catalog.headers": false,
|
"catalog.headers": false,
|
||||||
"catalog.gifts.show.my.face": true,
|
|
||||||
"chat.input.maxlength": 100,
|
"chat.input.maxlength": 100,
|
||||||
"chat.styles.disabled": [],
|
"chat.styles.disabled": [],
|
||||||
"chat.styles": [
|
"chat.styles": [
|
17
src/App.scss
17
src/App.scss
@ -21,14 +21,14 @@ $toolbar-height: 55px;
|
|||||||
$achievement-width: 375px;
|
$achievement-width: 375px;
|
||||||
$achievement-height: 405px;
|
$achievement-height: 405px;
|
||||||
|
|
||||||
$avatar-editor-width: 520px;
|
$avatar-editor-width: 620px;
|
||||||
$avatar-editor-height: 553px;
|
$avatar-editor-height: 374px;
|
||||||
|
|
||||||
$catalog-width: 650px;
|
$catalog-width: 630px;
|
||||||
$catalog-height: 480px;
|
$catalog-height: 400px;
|
||||||
|
|
||||||
$inventory-width: 528px;
|
$inventory-width: 528px;
|
||||||
$inventory-height: 370px;
|
$inventory-height: 320px;
|
||||||
|
|
||||||
$navigator-width: 420px;
|
$navigator-width: 420px;
|
||||||
$navigator-height: 440px;
|
$navigator-height: 440px;
|
||||||
@ -60,11 +60,8 @@ $help-height: 290px;
|
|||||||
$nitropedia-width: 400px;
|
$nitropedia-width: 400px;
|
||||||
$nitropedia-height: 400px;
|
$nitropedia-height: 400px;
|
||||||
|
|
||||||
$nitrobubblehidden-width: 400px;
|
$messenger-width: 500px;
|
||||||
$nitrobubblehidden-height: 400px;
|
$messenger-height: 370px;
|
||||||
|
|
||||||
$messenger-width: 580px;
|
|
||||||
$messenger-height: 455px;
|
|
||||||
|
|
||||||
$marketplace-post-offer-width: 430px;
|
$marketplace-post-offer-width: 430px;
|
||||||
$marketplace-post-offer-height: 250px;
|
$marketplace-post-offer-height: 250px;
|
||||||
|
195
src/App.tsx
195
src/App.tsx
@ -1,140 +1,101 @@
|
|||||||
import { ConfigurationEvent, GetAssetManager, HabboWebTools, LegacyExternalInterface, Nitro, NitroCommunicationDemoEvent, NitroConfiguration, NitroEvent, NitroLocalizationEvent, NitroVersion, RoomEngineEvent } from '@nitrots/nitro-renderer';
|
import { GetAssetManager, GetAvatarRenderManager, GetCommunication, GetConfiguration, GetLocalizationManager, GetRoomCameraWidgetManager, GetRoomEngine, GetRoomSessionManager, GetSessionDataManager, GetSoundManager, GetStage, GetTexturePool, GetTicker, HabboWebTools, LegacyExternalInterface, LoadGameUrlEvent, NitroLogger, NitroVersion, PrepareRenderer } from '@nitrots/nitro-renderer';
|
||||||
import { FC, useCallback, useEffect, useState } from 'react';
|
import { FC, useEffect, useState } from 'react';
|
||||||
import { GetCommunication, GetConfiguration, GetNitroInstance, GetUIVersion } from './api';
|
import { GetUIVersion } from './api';
|
||||||
import { Base, TransitionAnimation, TransitionAnimationTypes } from './common';
|
import { Base } from './common';
|
||||||
import { LoadingView } from './components/loading/LoadingView';
|
import { LoadingView } from './components/loading/LoadingView';
|
||||||
import { MainView } from './components/main/MainView';
|
import { MainView } from './components/main/MainView';
|
||||||
import { useConfigurationEvent, useLocalizationEvent, useMainEvent, useRoomEngineEvent } from './hooks';
|
import { useMessageEvent } from './hooks';
|
||||||
|
|
||||||
NitroVersion.UI_VERSION = GetUIVersion();
|
NitroVersion.UI_VERSION = GetUIVersion();
|
||||||
|
|
||||||
export const App: FC<{}> = props =>
|
export const App: FC<{}> = props =>
|
||||||
{
|
{
|
||||||
const [ isReady, setIsReady ] = useState(false);
|
const [ isReady, setIsReady ] = useState(false);
|
||||||
const [ isError, setIsError ] = useState(false);
|
|
||||||
const [ message, setMessage ] = useState('Getting Ready');
|
|
||||||
const [ percent, setPercent ] = useState(0);
|
|
||||||
const [ imageRendering, setImageRendering ] = useState<boolean>(true);
|
|
||||||
|
|
||||||
if(!GetNitroInstance())
|
useMessageEvent<LoadGameUrlEvent>(LoadGameUrlEvent, event =>
|
||||||
{
|
{
|
||||||
//@ts-ignore
|
const parser = event.getParser();
|
||||||
if(!NitroConfig) throw new Error('NitroConfig is not defined!');
|
|
||||||
|
|
||||||
Nitro.bootstrap();
|
if(!parser) return;
|
||||||
}
|
|
||||||
|
|
||||||
const handler = useCallback(async (event: NitroEvent) =>
|
LegacyExternalInterface.callGame('showGame', parser.url);
|
||||||
{
|
});
|
||||||
switch(event.type)
|
|
||||||
{
|
|
||||||
case ConfigurationEvent.LOADED:
|
|
||||||
GetNitroInstance().localization.init();
|
|
||||||
setPercent(prevValue => (prevValue + 20));
|
|
||||||
return;
|
|
||||||
case ConfigurationEvent.FAILED:
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('Configuration Failed');
|
|
||||||
return;
|
|
||||||
case Nitro.WEBGL_UNAVAILABLE:
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('WebGL Required');
|
|
||||||
return;
|
|
||||||
case Nitro.WEBGL_CONTEXT_LOST:
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('WebGL Context Lost - Reloading');
|
|
||||||
|
|
||||||
setTimeout(() => window.location.reload(), 1500);
|
|
||||||
return;
|
|
||||||
case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING:
|
|
||||||
setPercent(prevValue => (prevValue + 20));
|
|
||||||
return;
|
|
||||||
case NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED:
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('Handshake Failed');
|
|
||||||
return;
|
|
||||||
case NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED:
|
|
||||||
setPercent(prevValue => (prevValue + 20));
|
|
||||||
|
|
||||||
GetNitroInstance().init();
|
|
||||||
|
|
||||||
if(LegacyExternalInterface.available) LegacyExternalInterface.call('legacyTrack', 'authentication', 'authok', []);
|
|
||||||
return;
|
|
||||||
case NitroCommunicationDemoEvent.CONNECTION_ERROR:
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('Connection Error');
|
|
||||||
return;
|
|
||||||
case NitroCommunicationDemoEvent.CONNECTION_CLOSED:
|
|
||||||
//if(GetNitroInstance().roomEngine) GetNitroInstance().roomEngine.dispose();
|
|
||||||
//setIsError(true);
|
|
||||||
setMessage('Connection Error');
|
|
||||||
|
|
||||||
HabboWebTools.send(-1, 'client.init.handshake.fail');
|
|
||||||
return;
|
|
||||||
case RoomEngineEvent.ENGINE_INITIALIZED:
|
|
||||||
setPercent(prevValue => (prevValue + 20));
|
|
||||||
|
|
||||||
setTimeout(() => setIsReady(true), 300);
|
|
||||||
return;
|
|
||||||
case NitroLocalizationEvent.LOADED: {
|
|
||||||
const assetUrls = GetConfiguration<string[]>('preload.assets.urls');
|
|
||||||
const urls: string[] = [];
|
|
||||||
|
|
||||||
if(assetUrls && assetUrls.length) for(const url of assetUrls) urls.push(NitroConfiguration.interpolate(url));
|
|
||||||
|
|
||||||
const status = await GetAssetManager().downloadAssets(urls);
|
|
||||||
|
|
||||||
if(status)
|
|
||||||
{
|
|
||||||
GetCommunication().init();
|
|
||||||
|
|
||||||
setPercent(prevValue => (prevValue + 20))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
setIsError(true);
|
|
||||||
setMessage('Assets Failed');
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
useMainEvent(Nitro.WEBGL_UNAVAILABLE, handler);
|
|
||||||
useMainEvent(Nitro.WEBGL_CONTEXT_LOST, handler);
|
|
||||||
useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKING, handler);
|
|
||||||
useMainEvent(NitroCommunicationDemoEvent.CONNECTION_HANDSHAKE_FAILED, handler);
|
|
||||||
useMainEvent(NitroCommunicationDemoEvent.CONNECTION_AUTHENTICATED, handler);
|
|
||||||
useMainEvent(NitroCommunicationDemoEvent.CONNECTION_ERROR, handler);
|
|
||||||
useMainEvent(NitroCommunicationDemoEvent.CONNECTION_CLOSED, handler);
|
|
||||||
useRoomEngineEvent(RoomEngineEvent.ENGINE_INITIALIZED, handler);
|
|
||||||
useLocalizationEvent(NitroLocalizationEvent.LOADED, handler);
|
|
||||||
useConfigurationEvent(ConfigurationEvent.LOADED, handler);
|
|
||||||
useConfigurationEvent(ConfigurationEvent.FAILED, handler);
|
|
||||||
|
|
||||||
useEffect(() =>
|
useEffect(() =>
|
||||||
{
|
{
|
||||||
GetNitroInstance().core.configuration.init();
|
const prepare = async (width: number, height: number) =>
|
||||||
|
|
||||||
const resize = (event: UIEvent) => setImageRendering(!(window.devicePixelRatio % 1));
|
|
||||||
|
|
||||||
window.addEventListener('resize', resize);
|
|
||||||
|
|
||||||
resize(null);
|
|
||||||
|
|
||||||
return () =>
|
|
||||||
{
|
{
|
||||||
window.removeEventListener('resize', resize);
|
try
|
||||||
|
{
|
||||||
|
if(!window.NitroConfig) throw new Error('NitroConfig is not defined!');
|
||||||
|
|
||||||
|
const renderer = await PrepareRenderer({
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
autoDensity: true,
|
||||||
|
backgroundAlpha: 0,
|
||||||
|
preference: 'webgl',
|
||||||
|
resolution: window.devicePixelRatio
|
||||||
|
});
|
||||||
|
|
||||||
|
await GetConfiguration().init();
|
||||||
|
|
||||||
|
GetTicker().maxFPS = GetConfiguration().getValue<number>('system.fps.max', 24);
|
||||||
|
NitroLogger.LOG_DEBUG = GetConfiguration().getValue<boolean>('system.log.debug', true);
|
||||||
|
NitroLogger.LOG_WARN = GetConfiguration().getValue<boolean>('system.log.warn', false);
|
||||||
|
NitroLogger.LOG_ERROR = GetConfiguration().getValue<boolean>('system.log.error', false);
|
||||||
|
NitroLogger.LOG_EVENTS = GetConfiguration().getValue<boolean>('system.log.events', false);
|
||||||
|
NitroLogger.LOG_PACKETS = GetConfiguration().getValue<boolean>('system.log.packets', false);
|
||||||
|
|
||||||
|
const assetUrls = GetConfiguration().getValue<string[]>('preload.assets.urls').map(url => GetConfiguration().interpolate(url)) ?? [];
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
[
|
||||||
|
GetAssetManager().downloadAssets(assetUrls),
|
||||||
|
GetLocalizationManager().init(),
|
||||||
|
GetAvatarRenderManager().init(),
|
||||||
|
GetSoundManager().init(),
|
||||||
|
GetSessionDataManager().init(),
|
||||||
|
GetRoomSessionManager().init(),
|
||||||
|
GetRoomCameraWidgetManager().init()
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
await GetRoomEngine().init();
|
||||||
|
await GetCommunication().init();
|
||||||
|
|
||||||
|
// new GameMessageHandler();
|
||||||
|
|
||||||
|
if(LegacyExternalInterface.available) LegacyExternalInterface.call('legacyTrack', 'authentication', 'authok', []);
|
||||||
|
|
||||||
|
HabboWebTools.sendHeartBeat();
|
||||||
|
|
||||||
|
setInterval(() => HabboWebTools.sendHeartBeat(), 10000);
|
||||||
|
|
||||||
|
GetTicker().add(ticker => GetRoomEngine().update(ticker));
|
||||||
|
GetTicker().add(ticker => renderer.render(GetStage()));
|
||||||
|
GetTicker().add(ticker => GetTexturePool().run());
|
||||||
|
|
||||||
|
setIsReady(true);
|
||||||
|
|
||||||
|
// handle socket close
|
||||||
|
//canvas.addEventListener('webglcontextlost', () => instance.events.dispatchEvent(new NitroEvent(Nitro.WEBGL_CONTEXT_LOST)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
catch(err)
|
||||||
|
{
|
||||||
|
NitroLogger.error(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare(window.innerWidth, window.innerHeight);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Base fit overflow="hidden" className={ imageRendering && 'image-rendering-pixelated' }>
|
<Base fit overflow="hidden" className={ !(window.devicePixelRatio % 1) && 'image-rendering-pixelated' }>
|
||||||
{ (!isReady || isError) &&
|
{ !isReady &&
|
||||||
<LoadingView isError={ isError } message={ message } percent={ percent } /> }
|
<LoadingView /> }
|
||||||
<TransitionAnimation type={ TransitionAnimationTypes.FADE_IN } inProp={ (isReady) }>
|
{ isReady && <MainView /> }
|
||||||
<MainView />
|
|
||||||
</TransitionAnimation>
|
|
||||||
<Base id="draggable-windows-container" />
|
<Base id="draggable-windows-container" />
|
||||||
</Base>
|
</Base>
|
||||||
);
|
);
|
||||||
|
@ -1 +1 @@
|
|||||||
export const GetUIVersion = () => '2.1.1';
|
export const GetUIVersion = () => '2.2.0';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { AchievementData } from '@nitrots/nitro-renderer';
|
import { AchievementData, GetLocalizationManager } from '@nitrots/nitro-renderer';
|
||||||
import { GetConfiguration, GetLocalization } from '../nitro';
|
import { GetConfigurationValue } from '../nitro';
|
||||||
import { IAchievementCategory } from './IAchievementCategory';
|
import { IAchievementCategory } from './IAchievementCategory';
|
||||||
|
|
||||||
export class AchievementUtilities
|
export class AchievementUtilities
|
||||||
@ -10,14 +10,14 @@ export class AchievementUtilities
|
|||||||
|
|
||||||
let badgeId = achievement.badgeId;
|
let badgeId = achievement.badgeId;
|
||||||
|
|
||||||
if(!achievement.finalLevel) badgeId = GetLocalization().getPreviousLevelBadgeId(badgeId);
|
if(!achievement.finalLevel) badgeId = GetLocalizationManager().getPreviousLevelBadgeId(badgeId);
|
||||||
|
|
||||||
return badgeId;
|
return badgeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getAchievementCategoryImageUrl(category: IAchievementCategory, progress: number = null, icon: boolean = false): string
|
public static getAchievementCategoryImageUrl(category: IAchievementCategory, progress: number = null, icon: boolean = false): string
|
||||||
{
|
{
|
||||||
const imageUrl = GetConfiguration<string>('achievements.images.url');
|
const imageUrl = GetConfigurationValue<string>('achievements.images.url');
|
||||||
|
|
||||||
let imageName = icon ? 'achicon_' : 'achcategory_';
|
let imageName = icon ? 'achicon_' : 'achcategory_';
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ export class AchievementUtilities
|
|||||||
{
|
{
|
||||||
if(!achievement) return false;
|
if(!achievement) return false;
|
||||||
|
|
||||||
const ignored = GetConfiguration<string[]>('achievements.unseen.ignored');
|
const ignored = GetConfigurationValue<string[]>('achievements.unseen.ignored');
|
||||||
const value = achievement.badgeId.replace(/[0-9]/g, '');
|
const value = achievement.badgeId.replace(/[0-9]/g, '');
|
||||||
const index = ignored.indexOf(value);
|
const index = ignored.indexOf(value);
|
||||||
|
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { AvatarFigurePartType, IAvatarImageListener, IAvatarRenderManager, IFigurePart, IFigurePartSet, IGraphicAsset, IPartColor, NitroAlphaFilter, NitroContainer, NitroSprite, TextureUtils } from '@nitrots/nitro-renderer';
|
import { AvatarFigurePartType, GetAvatarRenderManager, IAvatarImageListener, IAvatarRenderManager, IFigurePart, IFigurePartSet, IGraphicAsset, IPartColor, NitroAlphaFilter, NitroContainer, NitroSprite, TextureUtils } from '@nitrots/nitro-renderer';
|
||||||
import { GetAvatarRenderManager } from '../nitro';
|
|
||||||
import { FigureData } from './FigureData';
|
import { FigureData } from './FigureData';
|
||||||
|
|
||||||
export class AvatarEditorGridPartItem implements IAvatarImageListener
|
export class AvatarEditorGridPartItem implements IAvatarImageListener
|
||||||
{
|
{
|
||||||
private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter(0.2);
|
private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter({ alpha: 0.2 });
|
||||||
private static THUMB_DIRECTIONS: number[] = [ 2, 6, 0, 4, 3, 1 ];
|
private static THUMB_DIRECTIONS: number[] = [ 2, 6, 0, 4, 3, 1 ];
|
||||||
private static DRAW_ORDER: string[] = [
|
private static DRAW_ORDER: string[] = [
|
||||||
AvatarFigurePartType.LEFT_HAND_ITEM,
|
AvatarFigurePartType.LEFT_HAND_ITEM,
|
||||||
@ -189,7 +188,7 @@ export class AvatarEditorGridPartItem implements IAvatarImageListener
|
|||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateThumbVisualization(): void
|
private async updateThumbVisualization(): Promise<void>
|
||||||
{
|
{
|
||||||
if(!this._isInitalized) return;
|
if(!this._isInitalized) return;
|
||||||
|
|
||||||
@ -212,7 +211,7 @@ export class AvatarEditorGridPartItem implements IAvatarImageListener
|
|||||||
|
|
||||||
if(this._isDisabled) this.setAlpha(container, 0.2);
|
if(this._isDisabled) this.setAlpha(container, 0.2);
|
||||||
|
|
||||||
this._imageUrl = TextureUtils.generateImageUrl(container);
|
this._imageUrl = await TextureUtils.generateImageUrl(container);
|
||||||
|
|
||||||
if(this.notify) this.notify();
|
if(this.notify) this.notify();
|
||||||
}
|
}
|
||||||
|
189
src/api/avatar/AvatarEditorThumbnailsHelper.ts
Normal file
189
src/api/avatar/AvatarEditorThumbnailsHelper.ts
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
import { AvatarFigurePartType, AvatarScaleType, AvatarSetType, GetAssetManager, GetAvatarRenderManager, IFigurePart, IGraphicAsset, IPartColor, NitroAlphaFilter, NitroContainer, NitroSprite, TextureUtils } from '@nitrots/nitro-renderer';
|
||||||
|
import { FigureData } from './FigureData';
|
||||||
|
import { IAvatarEditorCategoryPartItem } from './IAvatarEditorCategoryPartItem';
|
||||||
|
|
||||||
|
export class AvatarEditorThumbnailsHelper
|
||||||
|
{
|
||||||
|
private static THUMBNAIL_CACHE: Map<string, string> = new Map();
|
||||||
|
private static THUMB_DIRECTIONS: number[] = [ 2, 6, 0, 4, 3, 1 ];
|
||||||
|
private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter({ alpha: 0.2 });
|
||||||
|
private static DRAW_ORDER: string[] = [
|
||||||
|
AvatarFigurePartType.LEFT_HAND_ITEM,
|
||||||
|
AvatarFigurePartType.LEFT_HAND,
|
||||||
|
AvatarFigurePartType.LEFT_SLEEVE,
|
||||||
|
AvatarFigurePartType.LEFT_COAT_SLEEVE,
|
||||||
|
AvatarFigurePartType.BODY,
|
||||||
|
AvatarFigurePartType.SHOES,
|
||||||
|
AvatarFigurePartType.LEGS,
|
||||||
|
AvatarFigurePartType.CHEST,
|
||||||
|
AvatarFigurePartType.CHEST_ACCESSORY,
|
||||||
|
AvatarFigurePartType.COAT_CHEST,
|
||||||
|
AvatarFigurePartType.CHEST_PRINT,
|
||||||
|
AvatarFigurePartType.WAIST_ACCESSORY,
|
||||||
|
AvatarFigurePartType.RIGHT_HAND,
|
||||||
|
AvatarFigurePartType.RIGHT_SLEEVE,
|
||||||
|
AvatarFigurePartType.RIGHT_COAT_SLEEVE,
|
||||||
|
AvatarFigurePartType.HEAD,
|
||||||
|
AvatarFigurePartType.FACE,
|
||||||
|
AvatarFigurePartType.EYES,
|
||||||
|
AvatarFigurePartType.HAIR,
|
||||||
|
AvatarFigurePartType.HAIR_BIG,
|
||||||
|
AvatarFigurePartType.FACE_ACCESSORY,
|
||||||
|
AvatarFigurePartType.EYE_ACCESSORY,
|
||||||
|
AvatarFigurePartType.HEAD_ACCESSORY,
|
||||||
|
AvatarFigurePartType.HEAD_ACCESSORY_EXTRA,
|
||||||
|
AvatarFigurePartType.RIGHT_HAND_ITEM,
|
||||||
|
];
|
||||||
|
|
||||||
|
private static getThumbnailKey(setType: string, part: IAvatarEditorCategoryPartItem): string
|
||||||
|
{
|
||||||
|
return `${ setType }-${ part.partSet.id }`;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static clearCache(): void
|
||||||
|
{
|
||||||
|
this.THUMBNAIL_CACHE.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async build(setType: string, part: IAvatarEditorCategoryPartItem, useColors: boolean, partColors: IPartColor[], isDisabled: boolean = false): Promise<string>
|
||||||
|
{
|
||||||
|
if(!setType || !setType.length || !part || !part.partSet || !part.partSet.parts || !part.partSet.parts.length) return null;
|
||||||
|
|
||||||
|
const thumbnailKey = this.getThumbnailKey(setType, part);
|
||||||
|
const cached = this.THUMBNAIL_CACHE.get(thumbnailKey);
|
||||||
|
|
||||||
|
if(cached) return cached;
|
||||||
|
|
||||||
|
const buildContainer = (part: IAvatarEditorCategoryPartItem, useColors: boolean, partColors: IPartColor[], isDisabled: boolean = false) =>
|
||||||
|
{
|
||||||
|
const container = new NitroContainer();
|
||||||
|
const parts = part.partSet.parts.concat().sort(this.sortByDrawOrder);
|
||||||
|
|
||||||
|
for(const part of parts)
|
||||||
|
{
|
||||||
|
if(!part) continue;
|
||||||
|
|
||||||
|
let asset: IGraphicAsset = null;
|
||||||
|
let direction = 0;
|
||||||
|
let hasAsset = false;
|
||||||
|
|
||||||
|
while(!hasAsset && (direction < AvatarEditorThumbnailsHelper.THUMB_DIRECTIONS.length))
|
||||||
|
{
|
||||||
|
const assetName = `${ FigureData.SCALE }_${ FigureData.STD }_${ part.type }_${ part.id }_${ AvatarEditorThumbnailsHelper.THUMB_DIRECTIONS[direction] }_${ FigureData.DEFAULT_FRAME }`;
|
||||||
|
|
||||||
|
asset = GetAssetManager().getAsset(assetName);
|
||||||
|
|
||||||
|
if(asset && asset.texture)
|
||||||
|
{
|
||||||
|
hasAsset = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
direction++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!hasAsset) continue;
|
||||||
|
|
||||||
|
const x = asset.offsetX;
|
||||||
|
const y = asset.offsetY;
|
||||||
|
|
||||||
|
const sprite = new NitroSprite(asset.texture);
|
||||||
|
|
||||||
|
sprite.position.set(x, y);
|
||||||
|
|
||||||
|
if(useColors && (part.colorLayerIndex > 0) && partColors && partColors.length)
|
||||||
|
{
|
||||||
|
const color = partColors[(part.colorLayerIndex - 1)];
|
||||||
|
|
||||||
|
if(color) sprite.tint = color.rgb;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isDisabled) container.filters = [ AvatarEditorThumbnailsHelper.ALPHA_FILTER ];
|
||||||
|
|
||||||
|
container.addChild(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise(async (resolve, reject) =>
|
||||||
|
{
|
||||||
|
const resetFigure = async (figure: string) =>
|
||||||
|
{
|
||||||
|
const container = buildContainer(part, useColors, partColors, isDisabled);
|
||||||
|
const imageUrl = await TextureUtils.generateImageUrl(container);
|
||||||
|
|
||||||
|
AvatarEditorThumbnailsHelper.THUMBNAIL_CACHE.set(thumbnailKey, imageUrl);
|
||||||
|
|
||||||
|
resolve(imageUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
const figureContainer = GetAvatarRenderManager().createFigureContainer(`${ setType }-${ part.partSet.id }`);
|
||||||
|
|
||||||
|
if(!GetAvatarRenderManager().isFigureContainerReady(figureContainer))
|
||||||
|
{
|
||||||
|
GetAvatarRenderManager().downloadAvatarFigure(figureContainer, {
|
||||||
|
resetFigure,
|
||||||
|
dispose: null,
|
||||||
|
disposed: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
resetFigure(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async buildForFace(figureString: string, isDisabled: boolean = false): Promise<string>
|
||||||
|
{
|
||||||
|
if(!figureString || !figureString.length) return null;
|
||||||
|
|
||||||
|
const thumbnailKey = figureString;
|
||||||
|
const cached = this.THUMBNAIL_CACHE.get(thumbnailKey);
|
||||||
|
|
||||||
|
if(cached) return cached;
|
||||||
|
|
||||||
|
return new Promise(async (resolve, reject) =>
|
||||||
|
{
|
||||||
|
const resetFigure = async (figure: string) =>
|
||||||
|
{
|
||||||
|
const avatarImage = GetAvatarRenderManager().createAvatarImage(figure, AvatarScaleType.LARGE, null, { resetFigure, dispose: null, disposed: false });
|
||||||
|
const texture = avatarImage.processAsTexture(AvatarSetType.HEAD, false);
|
||||||
|
const sprite = new NitroSprite(texture);
|
||||||
|
|
||||||
|
if(isDisabled) sprite.filters = [ AvatarEditorThumbnailsHelper.ALPHA_FILTER ];
|
||||||
|
|
||||||
|
const imageUrl = await TextureUtils.generateImageUrl({
|
||||||
|
target: sprite
|
||||||
|
});
|
||||||
|
|
||||||
|
sprite.destroy();
|
||||||
|
avatarImage.dispose();
|
||||||
|
|
||||||
|
if(!avatarImage.isPlaceholder()) AvatarEditorThumbnailsHelper.THUMBNAIL_CACHE.set(thumbnailKey, imageUrl);
|
||||||
|
|
||||||
|
resolve(imageUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
resetFigure(figureString);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static sortByDrawOrder(a: IFigurePart, b: IFigurePart): number
|
||||||
|
{
|
||||||
|
const indexA = AvatarEditorThumbnailsHelper.DRAW_ORDER.indexOf(a.type);
|
||||||
|
const indexB = AvatarEditorThumbnailsHelper.DRAW_ORDER.indexOf(b.type);
|
||||||
|
|
||||||
|
if(indexA < indexB) return -1;
|
||||||
|
|
||||||
|
if(indexA > indexB) return 1;
|
||||||
|
|
||||||
|
if(a.index < b.index) return -1;
|
||||||
|
|
||||||
|
if(a.index > b.index) return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
import { IPartColor } from '@nitrots/nitro-renderer';
|
import { GetAvatarRenderManager, IPartColor } from '@nitrots/nitro-renderer';
|
||||||
import { GetAvatarPalette, GetAvatarRenderManager, GetAvatarSetType, GetClubMemberLevel, GetConfiguration } from '../nitro';
|
import { GetClubMemberLevel, GetConfigurationValue } from '../nitro';
|
||||||
import { AvatarEditorGridColorItem } from './AvatarEditorGridColorItem';
|
import { AvatarEditorGridColorItem } from './AvatarEditorGridColorItem';
|
||||||
import { AvatarEditorGridPartItem } from './AvatarEditorGridPartItem';
|
import { AvatarEditorGridPartItem } from './AvatarEditorGridPartItem';
|
||||||
import { CategoryBaseModel } from './CategoryBaseModel';
|
import { CategoryBaseModel } from './CategoryBaseModel';
|
||||||
@ -56,11 +56,11 @@ export class AvatarEditorUtilities
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
const setType = GetAvatarSetType(name);
|
const setType = GetAvatarRenderManager().structureData.getSetType(name);
|
||||||
|
|
||||||
if(!setType) return null;
|
if(!setType) return null;
|
||||||
|
|
||||||
const palette = GetAvatarPalette(setType.paletteID);
|
const palette = GetAvatarRenderManager().structureData.getPalette(setType.paletteID);
|
||||||
|
|
||||||
if(!palette) return null;
|
if(!palette) return null;
|
||||||
|
|
||||||
@ -247,11 +247,11 @@ export class AvatarEditorUtilities
|
|||||||
|
|
||||||
public static avatarSetFirstSelectableColor(name: string): number
|
public static avatarSetFirstSelectableColor(name: string): number
|
||||||
{
|
{
|
||||||
const setType = GetAvatarSetType(name);
|
const setType = GetAvatarRenderManager().structureData.getSetType(name);
|
||||||
|
|
||||||
if(!setType) return -1;
|
if(!setType) return -1;
|
||||||
|
|
||||||
const palette = GetAvatarPalette(setType.paletteID);
|
const palette = GetAvatarRenderManager().structureData.getPalette(setType.paletteID);
|
||||||
|
|
||||||
if(!palette) return -1;
|
if(!palette) return -1;
|
||||||
|
|
||||||
@ -267,11 +267,11 @@ export class AvatarEditorUtilities
|
|||||||
|
|
||||||
public static get clubItemsFirst(): boolean
|
public static get clubItemsFirst(): boolean
|
||||||
{
|
{
|
||||||
return GetConfiguration<boolean>('avatareditor.show.clubitems.first', true);
|
return GetConfigurationValue<boolean>('avatareditor.show.clubitems.first', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static get clubItemsDimmed(): boolean
|
public static get clubItemsDimmed(): boolean
|
||||||
{
|
{
|
||||||
return GetConfiguration<boolean>('avatareditor.show.clubitems.dimmed', true);
|
return GetConfigurationValue<boolean>('avatareditor.show.clubitems.dimmed', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { AvatarEditorFigureCategory, AvatarScaleType, AvatarSetType } from '@nitrots/nitro-renderer';
|
import { AvatarEditorFigureCategory, AvatarScaleType, AvatarSetType, GetAvatarRenderManager } from '@nitrots/nitro-renderer';
|
||||||
import { GetAvatarRenderManager } from '../nitro';
|
|
||||||
import { AvatarEditorUtilities } from './AvatarEditorUtilities';
|
import { AvatarEditorUtilities } from './AvatarEditorUtilities';
|
||||||
import { CategoryBaseModel } from './CategoryBaseModel';
|
import { CategoryBaseModel } from './CategoryBaseModel';
|
||||||
import { FigureData } from './FigureData';
|
import { FigureData } from './FigureData';
|
||||||
@ -48,7 +47,7 @@ export class BodyModel extends CategoryBaseModel
|
|||||||
const figureString = AvatarEditorUtilities.CURRENT_FIGURE.getFigureStringWithFace(part.id);
|
const figureString = AvatarEditorUtilities.CURRENT_FIGURE.getFigureStringWithFace(part.id);
|
||||||
const avatarImage = GetAvatarRenderManager().createAvatarImage(figureString, AvatarScaleType.LARGE, null, { resetFigure, dispose: null, disposed: false });
|
const avatarImage = GetAvatarRenderManager().createAvatarImage(figureString, AvatarScaleType.LARGE, null, { resetFigure, dispose: null, disposed: false });
|
||||||
|
|
||||||
const sprite = avatarImage.getImageAsSprite(AvatarSetType.HEAD);
|
const sprite = avatarImage.processAsContainer(AvatarSetType.HEAD);
|
||||||
|
|
||||||
if(sprite)
|
if(sprite)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { AvatarFigureContainer, IFigurePartSet, IPalette, IPartColor, SetType } from '@nitrots/nitro-renderer';
|
import { AvatarFigureContainer, GetAvatarRenderManager, IFigurePartSet, IPalette, IPartColor, SetType } from '@nitrots/nitro-renderer';
|
||||||
import { GetAvatarRenderManager } from '../nitro';
|
|
||||||
import { Randomizer } from '../utils';
|
import { Randomizer } from '../utils';
|
||||||
import { FigureData } from './FigureData';
|
import { FigureData } from './FigureData';
|
||||||
|
|
||||||
|
9
src/api/avatar/IAvatarEditorCategory.ts
Normal file
9
src/api/avatar/IAvatarEditorCategory.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import { IPartColor } from '@nitrots/nitro-renderer';
|
||||||
|
import { IAvatarEditorCategoryPartItem } from './IAvatarEditorCategoryPartItem';
|
||||||
|
|
||||||
|
export interface IAvatarEditorCategory
|
||||||
|
{
|
||||||
|
setType: string;
|
||||||
|
partItems: IAvatarEditorCategoryPartItem[];
|
||||||
|
colorItems: IPartColor[][];
|
||||||
|
}
|
10
src/api/avatar/IAvatarEditorCategoryPartItem.ts
Normal file
10
src/api/avatar/IAvatarEditorCategoryPartItem.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { IFigurePartSet } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
|
export interface IAvatarEditorCategoryPartItem
|
||||||
|
{
|
||||||
|
id?: number;
|
||||||
|
partSet?: IFigurePartSet;
|
||||||
|
usesColor?: boolean;
|
||||||
|
maxPaletteCount?: number;
|
||||||
|
isClear?: boolean;
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
export * from './AvatarEditorAction';
|
export * from './AvatarEditorAction';
|
||||||
export * from './AvatarEditorGridColorItem';
|
export * from './AvatarEditorGridColorItem';
|
||||||
export * from './AvatarEditorGridPartItem';
|
export * from './AvatarEditorGridPartItem';
|
||||||
|
export * from './AvatarEditorThumbnailsHelper';
|
||||||
export * from './AvatarEditorUtilities';
|
export * from './AvatarEditorUtilities';
|
||||||
export * from './BodyModel';
|
export * from './BodyModel';
|
||||||
export * from './CategoryBaseModel';
|
export * from './CategoryBaseModel';
|
||||||
@ -8,6 +9,8 @@ export * from './CategoryData';
|
|||||||
export * from './FigureData';
|
export * from './FigureData';
|
||||||
export * from './FigureGenerator';
|
export * from './FigureGenerator';
|
||||||
export * from './HeadModel';
|
export * from './HeadModel';
|
||||||
|
export * from './IAvatarEditorCategory';
|
||||||
export * from './IAvatarEditorCategoryModel';
|
export * from './IAvatarEditorCategoryModel';
|
||||||
|
export * from './IAvatarEditorCategoryPartItem';
|
||||||
export * from './LegModel';
|
export * from './LegModel';
|
||||||
export * from './TorsoModel';
|
export * from './TorsoModel';
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { SellablePetPaletteData } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, SellablePetPaletteData } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine } from '../nitro';
|
|
||||||
import { ICatalogNode } from './ICatalogNode';
|
import { ICatalogNode } from './ICatalogNode';
|
||||||
|
|
||||||
export const GetPixelEffectIcon = (id: number) =>
|
export const GetPixelEffectIcon = (id: number) =>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GetProductOfferComposer, IFurnitureData } from '@nitrots/nitro-renderer';
|
import { GetProductOfferComposer, IFurnitureData } from '@nitrots/nitro-renderer';
|
||||||
import { GetProductDataForLocalization, SendMessageComposer } from '..';
|
import { GetProductDataForLocalization, SendMessageComposer } from '../nitro';
|
||||||
import { ICatalogPage } from './ICatalogPage';
|
import { ICatalogPage } from './ICatalogPage';
|
||||||
import { IProduct } from './IProduct';
|
import { IProduct } from './IProduct';
|
||||||
import { IPurchasableOffer } from './IPurchasableOffer';
|
import { IPurchasableOffer } from './IPurchasableOffer';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from '../nitro';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
import { ProductTypeEnum } from './ProductTypeEnum';
|
import { ProductTypeEnum } from './ProductTypeEnum';
|
||||||
|
|
||||||
export const GetImageIconUrlForProduct = (productType: string, productClassId: number, extraData: string = null) =>
|
export const GetImageIconUrlForProduct = (productType: string, productClassId: number, extraData: string = null) =>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetConfiguration } from '../nitro';
|
import { GetConfigurationValue } from '../nitro';
|
||||||
import { IPageLocalization } from './IPageLocalization';
|
import { IPageLocalization } from './IPageLocalization';
|
||||||
|
|
||||||
export class PageLocalization implements IPageLocalization
|
export class PageLocalization implements IPageLocalization
|
||||||
@ -27,7 +27,7 @@ export class PageLocalization implements IPageLocalization
|
|||||||
|
|
||||||
if(!imageName || !imageName.length) return null;
|
if(!imageName || !imageName.length) return null;
|
||||||
|
|
||||||
let assetUrl = GetConfiguration<string>('catalog.asset.image.url');
|
let assetUrl = GetConfigurationValue<string>('catalog.asset.image.url');
|
||||||
|
|
||||||
assetUrl = assetUrl.replace('%name%', imageName);
|
assetUrl = assetUrl.replace('%name%', imageName);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { IFurnitureData, IObjectData, IProductData } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, IFurnitureData, IObjectData, IProductData } from '@nitrots/nitro-renderer';
|
||||||
import { GetConfiguration, GetRoomEngine, GetSessionDataManager } from '../nitro';
|
import { GetConfigurationValue } from '../nitro';
|
||||||
import { GetPixelEffectIcon, GetSubscriptionProductIcon } from './CatalogUtilities';
|
import { GetPixelEffectIcon, GetSubscriptionProductIcon } from './CatalogUtilities';
|
||||||
import { IProduct } from './IProduct';
|
import { IProduct } from './IProduct';
|
||||||
import { IPurchasableOffer } from './IPurchasableOffer';
|
import { IPurchasableOffer } from './IPurchasableOffer';
|
||||||
@ -65,7 +65,7 @@ export class Product implements IProduct
|
|||||||
|
|
||||||
if(iconName !== '')
|
if(iconName !== '')
|
||||||
{
|
{
|
||||||
const assetUrl = GetConfiguration<string>('catalog.asset.url');
|
const assetUrl = GetConfigurationValue<string>('catalog.asset.url');
|
||||||
|
|
||||||
return `${ assetUrl }/${ iconName }.png`;
|
return `${ assetUrl }/${ iconName }.png`;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { NitroEvent } from '@nitrots/nitro-renderer';
|
import { GetEventDispatcher, NitroEvent } from '@nitrots/nitro-renderer';
|
||||||
import { GetNitroInstance } from '../nitro';
|
|
||||||
import { DispatchEvent } from './DispatchEvent';
|
import { DispatchEvent } from './DispatchEvent';
|
||||||
|
|
||||||
export const DispatchMainEvent = (event: NitroEvent) => DispatchEvent(GetNitroInstance().events, event);
|
export const DispatchMainEvent = (event: NitroEvent) => DispatchEvent(GetEventDispatcher(), event);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { CreateLinkEvent } from '..';
|
import { CreateLinkEvent } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function OpenMessengerChat(friendId: number = 0): void
|
export function OpenMessengerChat(friendId: number = 0): void
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GroupInformationComposer } from '@nitrots/nitro-renderer';
|
import { GroupInformationComposer } from '@nitrots/nitro-renderer';
|
||||||
import { SendMessageComposer } from '..';
|
import { SendMessageComposer } from '../nitro';
|
||||||
|
|
||||||
export function GetGroupInformation(groupId: number): void
|
export function GetGroupInformation(groupId: number): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { CreateLinkEvent } from '..';
|
import { CreateLinkEvent } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function GetGroupManager(groupId: number): void
|
export function GetGroupManager(groupId: number): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { CreateLinkEvent } from '..';
|
import { CreateLinkEvent } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function GetGroupMembers(groupId: number, levelId?: number): void
|
export function GetGroupMembers(groupId: number, levelId?: number): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
export class GroupBadgePart
|
export class GroupBadgePart
|
||||||
{
|
{
|
||||||
public static BASE: string = 'b';
|
public static BASE: string = 'b';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GroupFavoriteComposer, GroupUnfavoriteComposer, HabboGroupEntryData } from '@nitrots/nitro-renderer';
|
import { GroupFavoriteComposer, GroupUnfavoriteComposer, HabboGroupEntryData } from '@nitrots/nitro-renderer';
|
||||||
import { SendMessageComposer } from '..';
|
import { SendMessageComposer } from '../nitro';
|
||||||
|
|
||||||
export const ToggleFavoriteGroup = (group: HabboGroupEntryData) =>
|
export const ToggleFavoriteGroup = (group: HabboGroupEntryData) =>
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GroupJoinComposer } from '@nitrots/nitro-renderer';
|
import { GroupJoinComposer } from '@nitrots/nitro-renderer';
|
||||||
import { SendMessageComposer } from '..';
|
import { SendMessageComposer } from '../nitro';
|
||||||
|
|
||||||
export const TryJoinGroup = (groupId: number) => SendMessageComposer(new GroupJoinComposer(groupId));
|
export const TryJoinGroup = (groupId: number) => SendMessageComposer(new GroupJoinComposer(groupId));
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
export * from './GetRendererVersion';
|
||||||
|
export * from './GetUIVersion';
|
||||||
export * from './achievements';
|
export * from './achievements';
|
||||||
export * from './avatar';
|
export * from './avatar';
|
||||||
export * from './camera';
|
export * from './camera';
|
||||||
@ -6,8 +8,6 @@ export * from './catalog';
|
|||||||
export * from './chat-history';
|
export * from './chat-history';
|
||||||
export * from './events';
|
export * from './events';
|
||||||
export * from './friends';
|
export * from './friends';
|
||||||
export * from './GetRendererVersion';
|
|
||||||
export * from './GetUIVersion';
|
|
||||||
export * from './groups';
|
export * from './groups';
|
||||||
export * from './guide-tool';
|
export * from './guide-tool';
|
||||||
export * from './hc-center';
|
export * from './hc-center';
|
||||||
@ -16,14 +16,13 @@ export * from './inventory';
|
|||||||
export * from './mod-tools';
|
export * from './mod-tools';
|
||||||
export * from './navigator';
|
export * from './navigator';
|
||||||
export * from './nitro';
|
export * from './nitro';
|
||||||
export * from './nitro/avatar';
|
|
||||||
export * from './nitro/camera';
|
|
||||||
export * from './nitro/core';
|
|
||||||
export * from './nitro/room';
|
export * from './nitro/room';
|
||||||
export * from './nitro/session';
|
export * from './nitro/session';
|
||||||
export * from './notification';
|
export * from './notification';
|
||||||
export * from './purse';
|
export * from './purse';
|
||||||
export * from './room';
|
export * from './room';
|
||||||
|
export * from './room/events';
|
||||||
|
export * from './room/widgets';
|
||||||
export * from './user';
|
export * from './user';
|
||||||
export * from './utils';
|
export * from './utils';
|
||||||
export * from './wired';
|
export * from './wired';
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { FurnitureListItemParser, IObjectData } from '@nitrots/nitro-renderer';
|
import { FurnitureListItemParser, GetRoomEngine, IObjectData } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine } from '../nitro';
|
|
||||||
import { FurniCategory } from './FurniCategory';
|
import { FurniCategory } from './FurniCategory';
|
||||||
import { FurnitureItem } from './FurnitureItem';
|
import { FurnitureItem } from './FurnitureItem';
|
||||||
import { GroupItem } from './GroupItem';
|
import { GroupItem } from './GroupItem';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { FurniturePlacePaintComposer, RoomObjectCategory, RoomObjectPlacementSource, RoomObjectType } from '@nitrots/nitro-renderer';
|
import { CreateLinkEvent, FurniturePlacePaintComposer, GetRoomEngine, GetRoomSessionManager, RoomObjectCategory, RoomObjectPlacementSource, RoomObjectType } from '@nitrots/nitro-renderer';
|
||||||
import { CreateLinkEvent, GetRoomEngine, GetRoomSessionManager, SendMessageComposer } from '../nitro';
|
import { SendMessageComposer } from '../nitro';
|
||||||
import { FurniCategory } from './FurniCategory';
|
import { FurniCategory } from './FurniCategory';
|
||||||
import { GroupItem } from './GroupItem';
|
import { GroupItem } from './GroupItem';
|
||||||
import { IBotItem } from './IBotItem';
|
import { IBotItem } from './IBotItem';
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { PetData } from '@nitrots/nitro-renderer';
|
import { CreateLinkEvent, PetData } from '@nitrots/nitro-renderer';
|
||||||
import { CreateLinkEvent } from '../nitro';
|
|
||||||
import { cancelRoomObjectPlacement, getPlacingItemId } from './InventoryUtilities';
|
|
||||||
import { IPetItem } from './IPetItem';
|
import { IPetItem } from './IPetItem';
|
||||||
|
import { cancelRoomObjectPlacement, getPlacingItemId } from './InventoryUtilities';
|
||||||
import { UnseenItemCategory } from './UnseenItemCategory';
|
import { UnseenItemCategory } from './UnseenItemCategory';
|
||||||
|
|
||||||
export const getAllPetIds = (petItems: IPetItem[]) => petItems.map(item => item.petData.id);
|
export const getAllPetIds = (petItems: IPetItem[]) => petItems.map(item => item.petData.id);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { AdvancedMap, IObjectData, ItemDataStructure, StringDataType } from '@nitrots/nitro-renderer';
|
import { AdvancedMap, GetSessionDataManager, IObjectData, ItemDataStructure, StringDataType } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from '../nitro';
|
|
||||||
import { FurniCategory } from './FurniCategory';
|
import { FurniCategory } from './FurniCategory';
|
||||||
import { FurnitureItem } from './FurnitureItem';
|
import { FurnitureItem } from './FurnitureItem';
|
||||||
import { createGroupItem } from './FurnitureUtilities';
|
import { createGroupItem } from './FurnitureUtilities';
|
||||||
|
@ -4,9 +4,9 @@ export * from './FurnitureUtilities';
|
|||||||
export * from './GroupItem';
|
export * from './GroupItem';
|
||||||
export * from './IBotItem';
|
export * from './IBotItem';
|
||||||
export * from './IFurnitureItem';
|
export * from './IFurnitureItem';
|
||||||
export * from './InventoryUtilities';
|
|
||||||
export * from './IPetItem';
|
export * from './IPetItem';
|
||||||
export * from './IUnseenItemTracker';
|
export * from './IUnseenItemTracker';
|
||||||
|
export * from './InventoryUtilities';
|
||||||
export * from './PetUtilities';
|
export * from './PetUtilities';
|
||||||
export * from './TradeState';
|
export * from './TradeState';
|
||||||
export * from './TradeUserData';
|
export * from './TradeUserData';
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import { ILinkEventTracker } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from './GetNitroInstance';
|
|
||||||
|
|
||||||
export function AddEventLinkTracker(tracker: ILinkEventTracker): void
|
|
||||||
{
|
|
||||||
GetNitroInstance().addLinkEventTracker(tracker);
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
import { GetNitroInstance } from './GetNitroInstance';
|
|
||||||
|
|
||||||
export function CreateLinkEvent(link: string): void
|
|
||||||
{
|
|
||||||
link = (link.startsWith('event:') ? link.substring(6) : link);
|
|
||||||
|
|
||||||
GetNitroInstance().createLinkEvent(link);
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { INitroCommunicationManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from './GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetCommunication(): INitroCommunicationManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance()?.communication;
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
import { NitroConfiguration } from '@nitrots/nitro-renderer';
|
|
||||||
|
|
||||||
export function GetConfiguration<T>(key: string, value: T = null): T
|
|
||||||
{
|
|
||||||
return NitroConfiguration.getValue(key, value);
|
|
||||||
}
|
|
6
src/api/nitro/GetConfigurationValue.ts
Normal file
6
src/api/nitro/GetConfigurationValue.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { GetConfiguration } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
|
export function GetConfigurationValue<T>(key: string, value: T = null): T
|
||||||
|
{
|
||||||
|
return GetConfiguration().getValue(key, value);
|
||||||
|
}
|
@ -1,7 +0,0 @@
|
|||||||
import { IConnection } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetCommunication } from './GetCommunication';
|
|
||||||
|
|
||||||
export function GetConnection(): IConnection
|
|
||||||
{
|
|
||||||
return GetCommunication()?.connection;
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { INitroLocalizationManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from './GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetLocalization(): INitroLocalizationManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance().localization;
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
import { INitro, Nitro } from '@nitrots/nitro-renderer';
|
|
||||||
|
|
||||||
export function GetNitroInstance(): INitro
|
|
||||||
{
|
|
||||||
return Nitro.instance;
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
import { HabboWebTools } from '@nitrots/nitro-renderer';
|
import { CreateLinkEvent, HabboWebTools } from '@nitrots/nitro-renderer';
|
||||||
import { CreateLinkEvent } from './CreateLinkEvent';
|
|
||||||
|
|
||||||
export const OpenUrl = (url: string) =>
|
export const OpenUrl = (url: string) =>
|
||||||
{
|
{
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import { ILinkEventTracker } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from './GetNitroInstance';
|
|
||||||
|
|
||||||
export function RemoveLinkEventTracker(tracker: ILinkEventTracker): void
|
|
||||||
{
|
|
||||||
GetNitroInstance().removeLinkEventTracker(tracker);
|
|
||||||
}
|
|
@ -1,4 +1,3 @@
|
|||||||
import { IMessageComposer } from '@nitrots/nitro-renderer';
|
import { GetCommunication, IMessageComposer } from '@nitrots/nitro-renderer';
|
||||||
import { GetConnection } from './GetConnection';
|
|
||||||
|
|
||||||
export const SendMessageComposer = (event: IMessageComposer<unknown[]>) => GetConnection().send(event);
|
export const SendMessageComposer = (event: IMessageComposer<unknown[]>) => GetCommunication().connection.send(event);
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import { IPalette } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetAvatarRenderManager } from './GetAvatarRenderManager';
|
|
||||||
|
|
||||||
export function GetAvatarPalette(paletteId: number): IPalette
|
|
||||||
{
|
|
||||||
return GetAvatarRenderManager().structureData.getPalette(paletteId);
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { IAvatarRenderManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '../GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetAvatarRenderManager(): IAvatarRenderManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance().avatar;
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { ISetType } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetAvatarRenderManager } from './GetAvatarRenderManager';
|
|
||||||
|
|
||||||
export function GetAvatarSetType(setType: string): ISetType
|
|
||||||
{
|
|
||||||
return GetAvatarRenderManager().structureData.getSetType(setType);
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
export * from './GetAvatarPalette';
|
|
||||||
export * from './GetAvatarRenderManager';
|
|
||||||
export * from './GetAvatarSetType';
|
|
@ -1,7 +0,0 @@
|
|||||||
import { IRoomCameraWidgetManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '../GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetRoomCameraWidgetManager(): IRoomCameraWidgetManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance().cameraManager;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export * from './GetRoomCameraWidgetManager';
|
|
@ -1,7 +0,0 @@
|
|||||||
import { IConfigurationManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroCore } from './GetNitroCore';
|
|
||||||
|
|
||||||
export function GetConfigurationManager(): IConfigurationManager
|
|
||||||
{
|
|
||||||
return GetNitroCore().configuration;
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { INitroCore } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '..';
|
|
||||||
|
|
||||||
export function GetNitroCore(): INitroCore
|
|
||||||
{
|
|
||||||
return GetNitroInstance().core;
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
export * from './GetConfigurationManager';
|
|
||||||
export * from './GetNitroCore';
|
|
@ -1,15 +1,5 @@
|
|||||||
export * from './AddLinkEventTracker';
|
export * from './GetConfigurationValue';
|
||||||
export * from './avatar';
|
|
||||||
export * from './camera';
|
|
||||||
export * from './core';
|
|
||||||
export * from './CreateLinkEvent';
|
|
||||||
export * from './GetCommunication';
|
|
||||||
export * from './GetConfiguration';
|
|
||||||
export * from './GetConnection';
|
|
||||||
export * from './GetLocalization';
|
|
||||||
export * from './GetNitroInstance';
|
|
||||||
export * from './OpenUrl';
|
export * from './OpenUrl';
|
||||||
export * from './RemoveLinkEventTracker';
|
|
||||||
export * from './room';
|
|
||||||
export * from './SendMessageComposer';
|
export * from './SendMessageComposer';
|
||||||
|
export * from './room';
|
||||||
export * from './session';
|
export * from './session';
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { MouseEventType } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, MouseEventType } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine } from './GetRoomEngine';
|
|
||||||
|
|
||||||
let didMouseMove = false;
|
let didMouseMove = false;
|
||||||
let lastClick = 0;
|
let lastClick = 0;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { MouseEventType, TouchEventType } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, MouseEventType, TouchEventType } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine } from './GetRoomEngine';
|
|
||||||
|
|
||||||
let didMouseMove = false;
|
let didMouseMove = false;
|
||||||
let lastClick = 0;
|
let lastClick = 0;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { IRoomObjectController, RoomObjectCategory } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, IRoomObjectController, RoomObjectCategory } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomSession, GetSessionDataManager } from '../session';
|
import { GetRoomSession } from '../session';
|
||||||
import { GetRoomEngine } from './GetRoomEngine';
|
|
||||||
|
|
||||||
export function GetOwnRoomObject(): IRoomObjectController
|
export function GetOwnRoomObject(): IRoomObjectController
|
||||||
{
|
{
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import { IRoomEngine } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '../GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetRoomEngine(): IRoomEngine
|
|
||||||
{
|
|
||||||
return GetNitroInstance().roomEngine;
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from './GetRoomEngine';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export const GetRoomObjectBounds = (roomId: number, objectId: number, category: number, canvasId = 1) =>
|
export const GetRoomObjectBounds = (roomId: number, objectId: number, category: number, canvasId = 1) =>
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from './GetRoomEngine';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export const GetRoomObjectScreenLocation = (roomId: number, objectId: number, category: number, canvasId = 1) =>
|
export const GetRoomObjectScreenLocation = (roomId: number, objectId: number, category: number, canvasId = 1) =>
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from './GetRoomEngine';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export const InitializeRoomInstanceRenderingCanvas = (width: number, height: number, canvasId: number = 1) =>
|
export const InitializeRoomInstanceRenderingCanvas = (width: number, height: number, canvasId: number = 1) =>
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { RoomEngineObjectEvent, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, RoomEngineObjectEvent, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from '../..';
|
|
||||||
import { GetRoomEngine } from './GetRoomEngine';
|
|
||||||
|
|
||||||
export function IsFurnitureSelectionDisabled(event: RoomEngineObjectEvent): boolean
|
export function IsFurnitureSelectionDisabled(event: RoomEngineObjectEvent): boolean
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from './GetRoomEngine';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function ProcessRoomObjectOperation(objectId: number, category: number, operation: string): void
|
export function ProcessRoomObjectOperation(objectId: number, category: number, operation: string): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomEngine } from './GetRoomEngine';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function SetActiveRoomId(roomId: number): void
|
export function SetActiveRoomId(roomId: number): void
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
export * from './DispatchMouseEvent';
|
export * from './DispatchMouseEvent';
|
||||||
export * from './DispatchTouchEvent';
|
export * from './DispatchTouchEvent';
|
||||||
export * from './GetOwnRoomObject';
|
export * from './GetOwnRoomObject';
|
||||||
export * from './GetRoomEngine';
|
|
||||||
export * from './GetRoomObjectBounds';
|
export * from './GetRoomObjectBounds';
|
||||||
export * from './GetRoomObjectScreenLocation';
|
export * from './GetRoomObjectScreenLocation';
|
||||||
export * from './InitializeRoomInstanceRenderingCanvas';
|
export * from './InitializeRoomInstanceRenderingCanvas';
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { IRoomSession, RoomControllerLevel } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, IRoomSession, RoomControllerLevel } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from '../..';
|
|
||||||
import { GetRoomEngine } from '../room/GetRoomEngine';
|
|
||||||
import { IsOwnerOfFurniture } from './IsOwnerOfFurniture';
|
import { IsOwnerOfFurniture } from './IsOwnerOfFurniture';
|
||||||
|
|
||||||
export function CanManipulateFurniture(roomSession: IRoomSession, objectId: number, category: number): boolean
|
export function CanManipulateFurniture(roomSession: IRoomSession, objectId: number, category: number): boolean
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GetRoomSessionManager } from './GetRoomSessionManager';
|
import { GetRoomSessionManager } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function CreateRoomSession(roomId: number, password: string = null): void
|
export function CreateRoomSession(roomId: number, password: string = null): void
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
||||||
import { GetConfiguration } from '..';
|
import { GetConfigurationValue } from '../GetConfigurationValue';
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function GetClubMemberLevel(): number
|
export function GetClubMemberLevel(): number
|
||||||
{
|
{
|
||||||
if(GetConfiguration<boolean>('hc.disabled', false)) return HabboClubLevelEnum.VIP;
|
if(GetConfigurationValue<boolean>('hc.disabled', false)) return HabboClubLevelEnum.VIP;
|
||||||
|
|
||||||
return GetSessionDataManager().clubLevel;
|
return GetSessionDataManager().clubLevel;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { IFurnitureData } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, IFurnitureData } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from '.';
|
|
||||||
import { ProductTypeEnum } from '../../catalog';
|
import { ProductTypeEnum } from '../../catalog';
|
||||||
|
|
||||||
export function GetFurnitureData(furniClassId: number, productType: string): IFurnitureData
|
export function GetFurnitureData(furniClassId: number, productType: string): IFurnitureData
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { CatalogPageMessageProductData, FurnitureType, IFurnitureData } from '@nitrots/nitro-renderer';
|
import { CatalogPageMessageProductData, FurnitureType, GetSessionDataManager, IFurnitureData } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function GetFurnitureDataForProductOffer(offer: CatalogPageMessageProductData): IFurnitureData
|
export function GetFurnitureDataForProductOffer(offer: CatalogPageMessageProductData): IFurnitureData
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { IFurnitureData, RoomObjectCategory, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, IFurnitureData, RoomObjectCategory, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine } from '../room';
|
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function GetFurnitureDataForRoomObject(roomId: number, objectId: number, category: number): IFurnitureData
|
export function GetFurnitureDataForRoomObject(roomId: number, objectId: number, category: number): IFurnitureData
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { IProductData } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, IProductData } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function GetProductDataForLocalization(localizationId: string): IProductData
|
export function GetProductDataForLocalization(localizationId: string): IProductData
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
import { IRoomSession } from '@nitrots/nitro-renderer';
|
import { GetRoomSessionManager } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomSessionManager } from './GetRoomSessionManager';
|
|
||||||
|
|
||||||
export function GetRoomSession(): IRoomSession
|
export const GetRoomSession = () => GetRoomSessionManager().getSession(-1);
|
||||||
{
|
|
||||||
return GetRoomSessionManager().getSession(-1);
|
|
||||||
}
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import { IRoomSessionManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '../GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetRoomSessionManager(): IRoomSessionManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance().roomSessionManager;
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { ISessionDataManager } from '@nitrots/nitro-renderer';
|
|
||||||
import { GetNitroInstance } from '../GetNitroInstance';
|
|
||||||
|
|
||||||
export function GetSessionDataManager(): ISessionDataManager
|
|
||||||
{
|
|
||||||
return GetNitroInstance().sessionDataManager;
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
import { DesktopViewComposer } from '@nitrots/nitro-renderer';
|
import { DesktopViewComposer } from '@nitrots/nitro-renderer';
|
||||||
import { SendMessageComposer } from '..';
|
import { SendMessageComposer } from '../SendMessageComposer';
|
||||||
|
|
||||||
export function GoToDesktop(): void
|
export function GoToDesktop(): void
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function HasHabboClub(): boolean
|
export function HasHabboClub(): boolean
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, HabboClubLevelEnum } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from './GetSessionDataManager';
|
|
||||||
|
|
||||||
export function HasHabboVip(): boolean
|
export function HasHabboVip(): boolean
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { RoomObjectCategory, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, RoomObjectCategory, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomSession } from '.';
|
import { GetRoomSession } from './GetRoomSession';
|
||||||
import { GetRoomEngine } from '..';
|
|
||||||
import { GetSessionDataManager } from '../../../api';
|
|
||||||
|
|
||||||
export function IsOwnerOfFloorFurniture(id: number): boolean
|
export function IsOwnerOfFloorFurniture(id: number): boolean
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { IRoomObject, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
import { GetSessionDataManager, IRoomObject, RoomObjectVariable } from '@nitrots/nitro-renderer';
|
||||||
import { GetSessionDataManager } from '../../../api';
|
|
||||||
|
|
||||||
export function IsOwnerOfFurniture(roomObject: IRoomObject): boolean
|
export function IsOwnerOfFurniture(roomObject: IRoomObject): boolean
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { IRoomSession } from '@nitrots/nitro-renderer';
|
import { GetRoomSessionManager, IRoomSession } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomSessionManager } from './GetRoomSessionManager';
|
|
||||||
|
|
||||||
export function StartRoomSession(session: IRoomSession): void
|
export function StartRoomSession(session: IRoomSession): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import { GetRoomSession, GetRoomSessionManager, GoToDesktop } from '.';
|
import { GetRoomSessionManager } from '@nitrots/nitro-renderer';
|
||||||
|
import { GetRoomSession } from './GetRoomSession';
|
||||||
|
import { GoToDesktop } from './GoToDesktop';
|
||||||
|
|
||||||
export const VisitDesktop = () =>
|
export const VisitDesktop = () =>
|
||||||
{
|
{
|
||||||
|
@ -9,8 +9,6 @@ export * from './GetFurnitureDataForRoomObject';
|
|||||||
export * from './GetOwnPosture';
|
export * from './GetOwnPosture';
|
||||||
export * from './GetProductDataForLocalization';
|
export * from './GetProductDataForLocalization';
|
||||||
export * from './GetRoomSession';
|
export * from './GetRoomSession';
|
||||||
export * from './GetRoomSessionManager';
|
|
||||||
export * from './GetSessionDataManager';
|
|
||||||
export * from './GoToDesktop';
|
export * from './GoToDesktop';
|
||||||
export * from './HasHabboClub';
|
export * from './HasHabboClub';
|
||||||
export * from './HasHabboVip';
|
export * from './HasHabboVip';
|
||||||
|
@ -9,7 +9,6 @@ export class AvatarInfoFurni implements IAvatarInfo
|
|||||||
public category: number = 0;
|
public category: number = 0;
|
||||||
public name: string = '';
|
public name: string = '';
|
||||||
public description: string = '';
|
public description: string = '';
|
||||||
public image: HTMLImageElement = null;
|
|
||||||
public isWallItem: boolean = false;
|
public isWallItem: boolean = false;
|
||||||
public isStickie: boolean = false;
|
public isStickie: boolean = false;
|
||||||
public isRoomOwner: boolean = false;
|
public isRoomOwner: boolean = false;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GetTickerTime, IFurnitureData, IRoomModerationSettings, IRoomPetData, IRoomUserData, ObjectDataFactory, PetFigureData, PetType, RoomControllerLevel, RoomModerationSettings, RoomObjectCategory, RoomObjectType, RoomObjectVariable, RoomTradingLevelEnum, RoomWidgetEnumItemExtradataParameter, Vector3d } from '@nitrots/nitro-renderer';
|
import { GetRoomEngine, GetSessionDataManager, GetTickerTime, IFurnitureData, IRoomModerationSettings, IRoomPetData, IRoomUserData, ObjectDataFactory, PetFigureData, PetType, RoomControllerLevel, RoomModerationSettings, RoomObjectCategory, RoomObjectType, RoomObjectVariable, RoomTradingLevelEnum, RoomWidgetEnumItemExtradataParameter } from '@nitrots/nitro-renderer';
|
||||||
import { GetRoomEngine, GetRoomSession, GetSessionDataManager, IsOwnerOfFurniture } from '../../nitro';
|
import { GetRoomSession, IsOwnerOfFurniture } from '../../nitro';
|
||||||
import { LocalizeText } from '../../utils';
|
import { LocalizeText } from '../../utils';
|
||||||
import { AvatarInfoFurni } from './AvatarInfoFurni';
|
import { AvatarInfoFurni } from './AvatarInfoFurni';
|
||||||
import { AvatarInfoName } from './AvatarInfoName';
|
import { AvatarInfoName } from './AvatarInfoName';
|
||||||
@ -72,24 +72,20 @@ export class AvatarInfoUtilities
|
|||||||
public static getFurniInfo(objectId: number, category: number): AvatarInfoFurni
|
public static getFurniInfo(objectId: number, category: number): AvatarInfoFurni
|
||||||
{
|
{
|
||||||
const roomSession = GetRoomSession();
|
const roomSession = GetRoomSession();
|
||||||
|
const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category);
|
||||||
|
|
||||||
|
if(!roomObject) return null;
|
||||||
|
|
||||||
const furniInfo = new AvatarInfoFurni(AvatarInfoFurni.FURNI);
|
const furniInfo = new AvatarInfoFurni(AvatarInfoFurni.FURNI);
|
||||||
|
|
||||||
furniInfo.id = objectId;
|
furniInfo.id = objectId;
|
||||||
furniInfo.category = category;
|
furniInfo.category = category;
|
||||||
|
|
||||||
const roomObject = GetRoomEngine().getRoomObject(roomSession.roomId, objectId, category);
|
|
||||||
|
|
||||||
if(!roomObject) return;
|
|
||||||
|
|
||||||
const model = roomObject.model;
|
const model = roomObject.model;
|
||||||
|
|
||||||
if(model.getValue<string>(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM))
|
if(model.getValue<string>(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM)) furniInfo.extraParam = model.getValue<string>(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM);
|
||||||
{
|
|
||||||
furniInfo.extraParam = model.getValue<string>(RoomWidgetEnumItemExtradataParameter.INFOSTAND_EXTRA_PARAM);
|
|
||||||
}
|
|
||||||
|
|
||||||
const dataFormat = model.getValue<number>(RoomObjectVariable.FURNITURE_DATA_FORMAT);
|
const objectData = ObjectDataFactory.getData(model.getValue<number>(RoomObjectVariable.FURNITURE_DATA_FORMAT));
|
||||||
const objectData = ObjectDataFactory.getData(dataFormat);
|
|
||||||
|
|
||||||
objectData.initializeFromRoomObjectModel(model);
|
objectData.initializeFromRoomObjectModel(model);
|
||||||
|
|
||||||
@ -141,14 +137,14 @@ export class AvatarInfoUtilities
|
|||||||
|
|
||||||
furniInfo.expiration = ((expiryTime < 0) ? expiryTime : Math.max(0, (expiryTime - ((GetTickerTime() - expiryTimestamp) / 1000))));
|
furniInfo.expiration = ((expiryTime < 0) ? expiryTime : Math.max(0, (expiryTime - ((GetTickerTime() - expiryTimestamp) / 1000))));
|
||||||
|
|
||||||
let roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 64, null);
|
/* let roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 64, null);
|
||||||
|
|
||||||
if(!roomObjectImage.data || (roomObjectImage.data.width > 140) || (roomObjectImage.data.height > 200))
|
if(!roomObjectImage.data || (roomObjectImage.data.width > 140) || (roomObjectImage.data.height > 200))
|
||||||
{
|
{
|
||||||
roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 1, null);
|
roomObjectImage = GetRoomEngine().getRoomObjectImage(roomSession.roomId, objectId, category, new Vector3d(180), 1, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
furniInfo.image = roomObjectImage.getImage();
|
furniInfo.image = roomObjectImage.getImage(); */
|
||||||
furniInfo.isWallItem = (category === RoomObjectCategory.WALL);
|
furniInfo.isWallItem = (category === RoomObjectCategory.WALL);
|
||||||
furniInfo.isRoomOwner = roomSession.isRoomOwner;
|
furniInfo.isRoomOwner = roomSession.isRoomOwner;
|
||||||
furniInfo.roomControllerLevel = roomSession.controllerLevel;
|
furniInfo.roomControllerLevel = roomSession.controllerLevel;
|
||||||
@ -159,11 +155,7 @@ export class AvatarInfoUtilities
|
|||||||
|
|
||||||
const guildId = model.getValue<number>(RoomObjectVariable.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID);
|
const guildId = model.getValue<number>(RoomObjectVariable.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID);
|
||||||
|
|
||||||
if(guildId !== 0)
|
if(guildId !== 0) furniInfo.groupId = guildId;
|
||||||
{
|
|
||||||
furniInfo.groupId = guildId;
|
|
||||||
//this.container.connection.send(new GroupInformationComposer(guildId, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(IsOwnerOfFurniture(roomObject)) furniInfo.isOwner = true;
|
if(IsOwnerOfFurniture(roomObject)) furniInfo.isOwner = true;
|
||||||
|
|
||||||
@ -174,11 +166,7 @@ export class AvatarInfoUtilities
|
|||||||
{
|
{
|
||||||
const roomSession = GetRoomSession();
|
const roomSession = GetRoomSession();
|
||||||
|
|
||||||
let userInfoType = AvatarInfoUser.OWN_USER;
|
const userInfo = new AvatarInfoUser((userData.webID === GetSessionDataManager().userId) ? AvatarInfoUser.OWN_USER : AvatarInfoUser.PEER);
|
||||||
|
|
||||||
if(userData.webID !== GetSessionDataManager().userId) userInfoType = AvatarInfoUser.PEER;
|
|
||||||
|
|
||||||
const userInfo = new AvatarInfoUser(userInfoType);
|
|
||||||
|
|
||||||
userInfo.isSpectatorMode = roomSession.isSpectator;
|
userInfo.isSpectatorMode = roomSession.isSpectator;
|
||||||
userInfo.name = userData.name;
|
userInfo.name = userData.name;
|
||||||
@ -192,7 +180,7 @@ export class AvatarInfoUtilities
|
|||||||
|
|
||||||
if(roomObject) userInfo.carryItem = (roomObject.model.getValue<number>(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0);
|
if(roomObject) userInfo.carryItem = (roomObject.model.getValue<number>(RoomObjectVariable.FIGURE_CARRY_OBJECT) || 0);
|
||||||
|
|
||||||
if(userInfoType === AvatarInfoUser.OWN_USER) userInfo.allowNameChange = GetSessionDataManager().canChangeName;
|
if(userInfo.type === AvatarInfoUser.OWN_USER) userInfo.allowNameChange = GetSessionDataManager().canChangeName;
|
||||||
|
|
||||||
userInfo.amIOwner = roomSession.isRoomOwner;
|
userInfo.amIOwner = roomSession.isRoomOwner;
|
||||||
userInfo.isGuildRoom = roomSession.isGuildRoom;
|
userInfo.isGuildRoom = roomSession.isGuildRoom;
|
||||||
@ -200,14 +188,11 @@ export class AvatarInfoUtilities
|
|||||||
userInfo.amIAnyRoomController = GetSessionDataManager().isModerator;
|
userInfo.amIAnyRoomController = GetSessionDataManager().isModerator;
|
||||||
userInfo.isAmbassador = GetSessionDataManager().isAmbassador;
|
userInfo.isAmbassador = GetSessionDataManager().isAmbassador;
|
||||||
|
|
||||||
if(userInfoType === AvatarInfoUser.PEER)
|
if(userInfo.type === AvatarInfoUser.PEER)
|
||||||
{
|
{
|
||||||
if(roomObject)
|
if(roomObject)
|
||||||
{
|
{
|
||||||
const flatControl = roomObject.model.getValue<number>(RoomObjectVariable.FIGURE_FLAT_CONTROL);
|
userInfo.targetRoomControllerLevel = roomObject.model.getValue<number>(RoomObjectVariable.FIGURE_FLAT_CONTROL);
|
||||||
|
|
||||||
if(flatControl !== null) userInfo.targetRoomControllerLevel = flatControl;
|
|
||||||
|
|
||||||
userInfo.canBeMuted = this.canBeMuted(userInfo);
|
userInfo.canBeMuted = this.canBeMuted(userInfo);
|
||||||
userInfo.canBeKicked = this.canBeKicked(userInfo);
|
userInfo.canBeKicked = this.canBeKicked(userInfo);
|
||||||
userInfo.canBeBanned = this.canBeBanned(userInfo);
|
userInfo.canBeBanned = this.canBeBanned(userInfo);
|
||||||
@ -234,7 +219,7 @@ export class AvatarInfoUtilities
|
|||||||
userInfo.canTrade = (roomController || targetController);
|
userInfo.canTrade = (roomController || targetController);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RoomTradingLevelEnum.NO_TRADING:
|
case RoomTradingLevelEnum.FREE_TRADING:
|
||||||
userInfo.canTrade = true;
|
userInfo.canTrade = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import { INitroPoint } from '@nitrots/nitro-renderer';
|
|
||||||
|
|
||||||
export class ChatBubbleMessage
|
export class ChatBubbleMessage
|
||||||
{
|
{
|
||||||
public static BUBBLE_COUNTER: number = 0;
|
public static BUBBLE_COUNTER: number = 0;
|
||||||
@ -20,17 +18,14 @@ export class ChatBubbleMessage
|
|||||||
public text: string = '',
|
public text: string = '',
|
||||||
public formattedText: string = '',
|
public formattedText: string = '',
|
||||||
public username: string = '',
|
public username: string = '',
|
||||||
public location: INitroPoint = null,
|
public location: { x: number, y: number } = null,
|
||||||
public type: number = 0,
|
public type: number = 0,
|
||||||
public styleId: number = 0,
|
public styleId: number = 0,
|
||||||
public imageUrl: string = null,
|
public imageUrl: string = null,
|
||||||
public color: string = null,
|
public color: string = null
|
||||||
public chatColours: string = ""
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.id = ++ChatBubbleMessage.BUBBLE_COUNTER;
|
this.id = ++ChatBubbleMessage.BUBBLE_COUNTER;
|
||||||
this.color = color;
|
|
||||||
this.chatColours = chatColours;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public get top(): number
|
public get top(): number
|
||||||
|
69
src/api/room/widgets/ChatBubbleUtilities.ts
Normal file
69
src/api/room/widgets/ChatBubbleUtilities.ts
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import { AvatarFigurePartType, AvatarScaleType, AvatarSetType, GetAvatarRenderManager, GetRoomEngine, PetFigureData, TextureUtils, Vector3d } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
|
export class ChatBubbleUtilities
|
||||||
|
{
|
||||||
|
public static AVATAR_COLOR_CACHE: Map<string, number> = new Map();
|
||||||
|
public static AVATAR_IMAGE_CACHE: Map<string, string> = new Map();
|
||||||
|
public static PET_IMAGE_CACHE: Map<string, string> = new Map();
|
||||||
|
|
||||||
|
private static placeHolderImageUrl: string = '';
|
||||||
|
|
||||||
|
public static async setFigureImage(figure: string): Promise<string>
|
||||||
|
{
|
||||||
|
const avatarImage = GetAvatarRenderManager().createAvatarImage(figure, AvatarScaleType.LARGE, null, {
|
||||||
|
resetFigure: figure => this.setFigureImage(figure),
|
||||||
|
dispose: () =>
|
||||||
|
{},
|
||||||
|
disposed: false
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!avatarImage) return null;
|
||||||
|
|
||||||
|
const isPlaceholder = avatarImage.isPlaceholder();
|
||||||
|
|
||||||
|
if(isPlaceholder && this.placeHolderImageUrl?.length) return this.placeHolderImageUrl;
|
||||||
|
|
||||||
|
figure = avatarImage.getFigure().getFigureString();
|
||||||
|
|
||||||
|
const imageUrl = avatarImage.processAsImageUrl(AvatarSetType.HEAD);
|
||||||
|
const color = avatarImage.getPartColor(AvatarFigurePartType.CHEST);
|
||||||
|
|
||||||
|
if(isPlaceholder) this.placeHolderImageUrl = imageUrl;
|
||||||
|
|
||||||
|
this.AVATAR_COLOR_CACHE.set(figure, ((color && color.rgb) || 16777215));
|
||||||
|
this.AVATAR_IMAGE_CACHE.set(figure, imageUrl);
|
||||||
|
|
||||||
|
avatarImage.dispose();
|
||||||
|
|
||||||
|
return imageUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async getUserImage(figure: string): Promise<string>
|
||||||
|
{
|
||||||
|
let existing = this.AVATAR_IMAGE_CACHE.get(figure);
|
||||||
|
|
||||||
|
if(!existing) existing = await this.setFigureImage(figure);
|
||||||
|
|
||||||
|
return existing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async getPetImage(figure: string, direction: number, _arg_3: boolean, scale: number = 64, posture: string = null)
|
||||||
|
{
|
||||||
|
let existing = this.PET_IMAGE_CACHE.get((figure + posture));
|
||||||
|
|
||||||
|
if(existing) return existing;
|
||||||
|
|
||||||
|
const figureData = new PetFigureData(figure);
|
||||||
|
const typeId = figureData.typeId;
|
||||||
|
const image = GetRoomEngine().getRoomObjectPetImage(typeId, figureData.paletteId, figureData.color, new Vector3d((direction * 45)), scale, null, false, 0, figureData.customParts, posture);
|
||||||
|
|
||||||
|
if(image)
|
||||||
|
{
|
||||||
|
existing = await TextureUtils.generateImageUrl(image.data);
|
||||||
|
|
||||||
|
this.PET_IMAGE_CACHE.set((figure + posture), existing);
|
||||||
|
}
|
||||||
|
|
||||||
|
return existing;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
import { GetRoomEngine, GetRoomSession } from '../../nitro';
|
import { GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
|
import { GetRoomSession } from '../../nitro';
|
||||||
|
|
||||||
export class FurnitureDimmerUtilities
|
export class FurnitureDimmerUtilities
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { AvatarFigurePartType, IAvatarFigureContainer } from '@nitrots/nitro-renderer';
|
import { AvatarFigurePartType, GetAvatarRenderManager, IAvatarFigureContainer } from '@nitrots/nitro-renderer';
|
||||||
import { GetAvatarRenderManager } from '../../nitro';
|
|
||||||
|
|
||||||
export class MannequinUtilities
|
export class MannequinUtilities
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,7 @@ export * from './AvatarInfoUser';
|
|||||||
export * from './AvatarInfoUtilities';
|
export * from './AvatarInfoUtilities';
|
||||||
export * from './BotSkillsEnum';
|
export * from './BotSkillsEnum';
|
||||||
export * from './ChatBubbleMessage';
|
export * from './ChatBubbleMessage';
|
||||||
|
export * from './ChatBubbleUtilities';
|
||||||
export * from './ChatMessageTypeEnum';
|
export * from './ChatMessageTypeEnum';
|
||||||
export * from './DimmerFurnitureWidgetPresetItem';
|
export * from './DimmerFurnitureWidgetPresetItem';
|
||||||
export * from './DoChatsOverlap';
|
export * from './DoChatsOverlap';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { UserProfileComposer } from '@nitrots/nitro-renderer';
|
import { UserProfileComposer } from '@nitrots/nitro-renderer';
|
||||||
import { SendMessageComposer } from '..';
|
import { SendMessageComposer } from '../nitro';
|
||||||
|
|
||||||
export function GetUserProfile(userId: number): void
|
export function GetUserProfile(userId: number): void
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Nitro } from '../Nitro';
|
import { LocalizeText } from './LocalizeText';
|
||||||
|
|
||||||
export class FriendlyTime
|
export class FriendlyTime
|
||||||
{
|
{
|
||||||
@ -42,6 +42,6 @@ export class FriendlyTime
|
|||||||
|
|
||||||
public static getLocalization(key: string, amount: number): string
|
public static getLocalization(key: string, amount: number): string
|
||||||
{
|
{
|
||||||
return Nitro.instance.getLocalizationWithParameter(key, 'amount', amount.toString());
|
return LocalizeText(key, [ 'amount' ], [ amount.toString() ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
import { GetNitroInstance } from '..';
|
import { GetLocalizationManager } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export const LocalizeBadgeDescription = (key: string) =>
|
export const LocalizeBadgeDescription = (key: string) =>
|
||||||
{
|
{
|
||||||
let badgeDesc = GetNitroInstance().localization.getBadgeDesc(key);
|
let badgeDesc = GetLocalizationManager().getBadgeDesc(key);
|
||||||
|
|
||||||
if(!badgeDesc || !badgeDesc.length) badgeDesc = `badge_desc_${ key }`;
|
if(!badgeDesc || !badgeDesc.length) badgeDesc = `badge_desc_${ key }`;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { GetNitroInstance } from '..';
|
import { GetLocalizationManager } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export const LocalizeBadgeName = (key: string) =>
|
export const LocalizeBadgeName = (key: string) =>
|
||||||
{
|
{
|
||||||
let badgeName = GetNitroInstance().localization.getBadgeName(key);
|
let badgeName = GetLocalizationManager().getBadgeName(key);
|
||||||
|
|
||||||
if(!badgeName || !badgeName.length) badgeName = `badge_name_${ key }`;
|
if(!badgeName || !badgeName.length) badgeName = `badge_name_${ key }`;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { GetNitroInstance } from '..';
|
import { GetLocalizationManager } from '@nitrots/nitro-renderer';
|
||||||
|
|
||||||
export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string
|
export function LocalizeText(key: string, parameters: string[] = null, replacements: string[] = null): string
|
||||||
{
|
{
|
||||||
return GetNitroInstance().getLocalizationWithParameters(key, parameters, replacements);
|
return GetLocalizationManager().getValueWithParameters(key, parameters, replacements);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { CatalogPageMessageProductData } from '@nitrots/nitro-renderer';
|
import { CatalogPageMessageProductData, GetRoomEngine } from '@nitrots/nitro-renderer';
|
||||||
import { FurniCategory } from '../inventory';
|
import { FurniCategory } from '../inventory';
|
||||||
import { GetRoomEngine } from '../nitro';
|
|
||||||
|
|
||||||
export class ProductImageUtility
|
export class ProductImageUtility
|
||||||
{
|
{
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user