🆙 Added delete Furni / Pets in inventory

This commit is contained in:
duckietm
2026-02-19 13:22:37 +01:00
parent 325453db36
commit 3cf8c9b89a
11 changed files with 403 additions and 71 deletions
+65 -44
View File
@@ -1,10 +1,12 @@
import { NitroCard } from '@layout/NitroCard';
import { AddLinkEventTracker, BadgePointLimitsEvent, GetLocalizationManager, GetRoomEngine, ILinkEventTracker, IRoomSession, RemoveLinkEventTracker, RoomEngineObjectEvent, RoomEngineObjectPlacedEvent, RoomPreviewer, RoomSessionEvent } from '@nitrots/nitro-renderer';
import { FC, useEffect, useState } from 'react';
import { LocalizeText, UnseenItemCategory, isObjectMoverRequested, setObjectMoverRequested } from '../../api';
import { useInventoryTrade, useInventoryUnseenTracker, useMessageEvent, useNitroEvent } from '../../hooks';
import { GroupItem, LocalizeText, UnseenItemCategory, isObjectMoverRequested, setObjectMoverRequested } from '../../api';
import { NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView } from '../../common';
import { useInventoryBadges, useInventoryFurni, useInventoryTrade, useInventoryUnseenTracker, useMessageEvent, useNitroEvent } from '../../hooks';
import { InventoryCategoryFilterView } from './views/InventoryCategoryFilterView';
import { InventoryBadgeView } from './views/badge/InventoryBadgeView';
import { InventoryBotView } from './views/bot/InventoryBotView';
import { InventoryFurnitureDeleteView } from './views/furniture/InventoryFurnitureDeleteView';
import { InventoryFurnitureView } from './views/furniture/InventoryFurnitureView';
import { InventoryTradeView } from './views/furniture/InventoryTradeView';
import { InventoryPetView } from './views/pet/InventoryPetView';
@@ -13,8 +15,8 @@ const TAB_FURNITURE: string = 'inventory.furni';
const TAB_BOTS: string = 'inventory.bots';
const TAB_PETS: string = 'inventory.furni.tab.pets';
const TAB_BADGES: string = 'inventory.badges';
const TABS = [ TAB_FURNITURE, TAB_BOTS, TAB_PETS, TAB_BADGES ];
const UNSEEN_CATEGORIES = [ UnseenItemCategory.FURNI, UnseenItemCategory.BOT, UnseenItemCategory.PET, UnseenItemCategory.BADGE ];
const TABS = [ TAB_FURNITURE, TAB_PETS, TAB_BADGES, TAB_BOTS ];
const UNSEEN_CATEGORIES = [ UnseenItemCategory.FURNI, UnseenItemCategory.PET, UnseenItemCategory.BADGE, UnseenItemCategory.BOT ];
export const InventoryView: FC<{}> = props =>
{
@@ -22,8 +24,12 @@ export const InventoryView: FC<{}> = props =>
const [ currentTab, setCurrentTab ] = useState<string>(TABS[0]);
const [ roomSession, setRoomSession ] = useState<IRoomSession>(null);
const [ roomPreviewer, setRoomPreviewer ] = useState<RoomPreviewer>(null);
const [ filteredGroupItems, setFilteredGroupItems ] = useState<GroupItem[]>([]);
const [ filteredBadgeCodes, setFilteredBadgeCodes ] = useState<string[]>([]);
const { isTrading = false, stopTrading = null } = useInventoryTrade();
const { getCount = null, resetCategory = null } = useInventoryUnseenTracker();
const { getCount = null } = useInventoryUnseenTracker();
const { groupItems = [] } = useInventoryFurni();
const { badgeCodes = [] } = useInventoryBadges();
const onClose = () =>
{
@@ -117,44 +123,59 @@ export const InventoryView: FC<{}> = props =>
if(!isVisible) return null;
const showFilter = !isTrading && (currentTab === TAB_FURNITURE || currentTab === TAB_BADGES);
return (
<NitroCard
className="w-inventory-w h-inventory-h min-w-inventory-w min-h-inventory-h"
uniqueKey="inventory">
<NitroCard.Header
headerText={ LocalizeText('inventory.title') }
onCloseClick={ onClose } />
{ !isTrading &&
<>
<NitroCard.Tabs>
{ TABS.map((name, index) =>
{
return (
<NitroCard.TabItem
key={ index }
count={ getCount(UNSEEN_CATEGORIES[index]) }
isActive={ (currentTab === name) }
onClick={ event => setCurrentTab(name) }>
{ LocalizeText(name) }
</NitroCard.TabItem>
);
}) }
</NitroCard.Tabs>
<NitroCard.Content>
{ (currentTab === TAB_FURNITURE ) &&
<InventoryFurnitureView roomPreviewer={ roomPreviewer } roomSession={ roomSession } /> }
{ (currentTab === TAB_BOTS ) &&
<InventoryBotView roomPreviewer={ roomPreviewer } roomSession={ roomSession } /> }
{ (currentTab === TAB_PETS ) &&
<InventoryPetView roomPreviewer={ roomPreviewer } roomSession={ roomSession } /> }
{ (currentTab === TAB_BADGES ) &&
<InventoryBadgeView /> }
</NitroCard.Content>
</> }
{ isTrading &&
<NitroCard.Content>
<InventoryTradeView cancelTrade={ onClose } />
</NitroCard.Content> }
</NitroCard>
<>
<NitroCardView className="nitro-inventory" uniqueKey="inventory">
<NitroCardHeaderView
headerText={ LocalizeText('inventory.title') }
onCloseClick={ onClose } />
{ !isTrading &&
<>
<NitroCardTabsView>
{ TABS.map((name, index) =>
{
return (
<NitroCardTabsItemView
key={ index }
count={ getCount(UNSEEN_CATEGORIES[index]) }
isActive={ (currentTab === name) }
onClick={ event => setCurrentTab(name) }>
{ LocalizeText(name) }
</NitroCardTabsItemView>
);
}) }
</NitroCardTabsView>
<div className="flex flex-col overflow-hidden bg-[#DFDFDF] p-2 h-full gap-2">
{ showFilter &&
<InventoryCategoryFilterView
badgeCodes={ badgeCodes }
currentTab={ currentTab }
groupItems={ groupItems }
setBadgeCodes={ setFilteredBadgeCodes }
setGroupItems={ setFilteredGroupItems } /> }
<div className="flex-1 overflow-hidden">
{ (currentTab === TAB_FURNITURE) &&
<InventoryFurnitureView
filteredGroupItems={ filteredGroupItems }
roomPreviewer={ roomPreviewer }
roomSession={ roomSession } /> }
{ (currentTab === TAB_PETS) &&
<InventoryPetView roomPreviewer={ roomPreviewer } roomSession={ roomSession } /> }
{ (currentTab === TAB_BADGES) &&
<InventoryBadgeView filteredBadgeCodes={ filteredBadgeCodes } /> }
{ (currentTab === TAB_BOTS) &&
<InventoryBotView roomPreviewer={ roomPreviewer } roomSession={ roomSession } /> }
</div>
</div>
</> }
{ isTrading &&
<div className="flex flex-col overflow-hidden bg-[#DFDFDF] p-2 h-full">
<InventoryTradeView cancelTrade={ onClose } />
</div> }
</NitroCardView>
<InventoryFurnitureDeleteView />
</>
);
};