nitro/apps/frontend/src/api/catalog/CatalogUtilities.ts

208 lines
4.6 KiB
TypeScript

import {SellablePetPaletteData} from "@nitro/renderer";
import {GetRoomEngine} from "../nitro";
import {ICatalogNode} from "./ICatalogNode";
export const GetPixelEffectIcon = (id: number) => {
return "";
};
export const GetSubscriptionProductIcon = (id: number) => {
return "";
};
export const GetOfferNodes = (offerNodes: Map<number, ICatalogNode[]>, offerId: number) => {
const nodes = offerNodes.get(offerId);
const allowedNodes: ICatalogNode[] = [];
if (nodes && nodes.length) {
for (const node of nodes) {
if (!node.isVisible) continue;
allowedNodes.push(node);
}
}
return allowedNodes;
};
export const FilterCatalogNode = (search: string, furniLines: string[], node: ICatalogNode, nodes: ICatalogNode[]) => {
if (node.isVisible && node.pageId > 0) {
let nodeAdded = false;
const hayStack = [node.pageName, node.localization].join(" ").toLowerCase().replace(/ /gi, "");
if (hayStack.indexOf(search) > -1) {
nodes.push(node);
nodeAdded = true;
}
if (!nodeAdded) {
for (const furniLine of furniLines) {
if (hayStack.indexOf(furniLine) >= 0) {
nodes.push(node);
break;
}
}
}
}
for (const child of node.children) FilterCatalogNode(search, furniLines, child, nodes);
};
export function GetPetIndexFromLocalization(localization: string) {
if (!localization.length) return 0;
let index = localization.length - 1;
while (index >= 0) {
if (isNaN(parseInt(localization.charAt(index)))) break;
index--;
}
if (index > 0) return parseInt(localization.substring(index + 1));
return -1;
}
export function GetPetAvailableColors(petIndex: number, palettes: SellablePetPaletteData[]): number[][] {
switch (petIndex) {
case 0:
return [
[16743226],
[16750435],
[16764339],
[0xf59500],
[16498012],
[16704690],
[0xedd400],
[16115545],
[16513201],
[8694111],
[11585939],
[14413767],
[6664599],
[9553845],
[12971486],
[8358322],
[10002885],
[13292268],
[10780600],
[12623573],
[14403561],
[12418717],
[14327229],
[15517403],
[14515069],
[15764368],
[16366271],
[0xababab],
[0xd4d4d4],
[0xffffff],
[14256481],
[14656129],
[15848130],
[14005087],
[14337152],
[15918540],
[15118118],
[15531929],
[9764857],
[11258085],
];
case 1:
return [
[16743226],
[16750435],
[16764339],
[0xf59500],
[16498012],
[16704690],
[0xedd400],
[16115545],
[16513201],
[8694111],
[11585939],
[14413767],
[6664599],
[9553845],
[12971486],
[8358322],
[10002885],
[13292268],
[10780600],
[12623573],
[14403561],
[12418717],
[14327229],
[15517403],
[14515069],
[15764368],
[16366271],
[0xababab],
[0xd4d4d4],
[0xffffff],
[14256481],
[14656129],
[15848130],
[14005087],
[14337152],
[15918540],
[15118118],
[15531929],
[9764857],
[11258085],
];
case 2:
return [
[16579283],
[15378351],
[8830016],
[15257125],
[9340985],
[8949607],
[6198292],
[8703620],
[9889626],
[8972045],
[12161285],
[13162269],
[8620113],
[12616503],
[8628101],
[0xd2ff00],
[9764857],
];
case 3:
return [[0xffffff], [0xeeeeee], [0xdddddd]];
case 4:
return [[0xffffff], [16053490], [15464440], [16248792], [15396319], [15007487]];
case 5:
return [[0xffffff], [0xeeeeee], [0xdddddd]];
case 6:
return [[0xffffff], [0xeeeeee], [0xdddddd], [16767177], [16770205], [16751331]];
case 7:
return [[0xcccccc], [0xaeaeae], [16751331], [10149119], [16763290], [16743786]];
default: {
const colors: number[][] = [];
for (const palette of palettes) {
const petColorResult = GetRoomEngine().getPetColorResult(petIndex, palette.paletteId);
if (!petColorResult) continue;
if (petColorResult.primaryColor === petColorResult.secondaryColor) {
colors.push([petColorResult.primaryColor]);
} else {
colors.push([petColorResult.primaryColor, petColorResult.secondaryColor]);
}
}
return colors;
}
}
}