mirror of
https://github.com/Gurkengewuerz/nitro.git
synced 2024-06-03 03:35:34 +02:00
72 lines
2.0 KiB
TypeScript
72 lines
2.0 KiB
TypeScript
import { AdvancedMap, IObjectData, ItemDataStructure, StringDataType } from '@nitro/renderer';
|
|
import { GetSessionDataManager } from '../nitro';
|
|
import { FurniCategory } from './FurniCategory';
|
|
import { FurnitureItem } from './FurnitureItem';
|
|
import { createGroupItem } from './FurnitureUtilities';
|
|
import { GroupItem } from './GroupItem';
|
|
|
|
const isExternalImage = (spriteId: number) => GetSessionDataManager().getWallItemData(spriteId)?.isExternalImage || false;
|
|
|
|
export const parseTradeItems = (items: ItemDataStructure[]) =>
|
|
{
|
|
const existingItems = new AdvancedMap<string, GroupItem>();
|
|
const totalItems = items.length;
|
|
|
|
if(totalItems)
|
|
{
|
|
for(const item of items)
|
|
{
|
|
const spriteId = item.spriteId;
|
|
const category = item.category;
|
|
|
|
let name = (item.furniType + spriteId);
|
|
|
|
if(!item.isGroupable || isExternalImage(spriteId))
|
|
{
|
|
name = ('itemid' + item.itemId);
|
|
}
|
|
|
|
if(item.category === FurniCategory.POSTER)
|
|
{
|
|
name = (item.itemId + 'poster' + item.stuffData.getLegacyString());
|
|
}
|
|
|
|
else if(item.category === FurniCategory.GUILD_FURNI)
|
|
{
|
|
name = '';
|
|
}
|
|
|
|
let groupItem = ((item.isGroupable && !isExternalImage(item.spriteId)) ? existingItems.getValue(name) : null);
|
|
|
|
if(!groupItem)
|
|
{
|
|
groupItem = createGroupItem(spriteId, category, item.stuffData);
|
|
|
|
existingItems.add(name, groupItem);
|
|
}
|
|
|
|
groupItem.push(new FurnitureItem(item));
|
|
}
|
|
}
|
|
|
|
return existingItems;
|
|
}
|
|
|
|
export const getGuildFurniType = (spriteId: number, stuffData: IObjectData) =>
|
|
{
|
|
let type = spriteId.toString();
|
|
|
|
if(!(stuffData instanceof StringDataType)) return type;
|
|
|
|
let i = 1;
|
|
|
|
while(i < 5)
|
|
{
|
|
type = (type + (',' + stuffData.getValue(i)));
|
|
|
|
i++;
|
|
}
|
|
|
|
return type;
|
|
}
|