コード例 #1
0
ファイル: RLVManager.cs プロジェクト: IMA-DZ/RadegastV2
        protected string GetWornIndicator(InventoryNode node)
        {
            var currentOutfit      = client.Appearance.GetWearables();
            var currentAttachments = client.Network.CurrentSim.ObjectsPrimitives.FindAll(p => p.ParentID == client.Self.LocalID);
            int myItemsCount       = 0;
            int myItemsWornCount   = 0;

            foreach (var n in node.Nodes.Values)
            {
                if (CurrentOutfitFolder.CanBeWorn(n.Data) && !n.Data.Name.StartsWith("."))
                {
                    myItemsCount++;
                    if ((n.Data is InventoryWearable && CurrentOutfitFolder.IsWorn(currentOutfit, (InventoryItem)n.Data)) ||
                        CurrentOutfitFolder.IsAttached(currentAttachments, (InventoryItem)n.Data))
                    {
                        myItemsWornCount++;
                    }
                }
            }

            List <InventoryItem> allItems = new List <InventoryItem>();

            foreach (var n in node.Nodes.Values)
            {
                if (n.Data is InventoryFolder && !n.Data.Name.StartsWith("."))
                {
                    AllSubfolderWearables(n, ref allItems);
                }
            }

            int allItemsCount     = 0;
            int allItemsWornCount = 0;

            foreach (var n in allItems)
            {
                if (CurrentOutfitFolder.CanBeWorn(n) && !n.Name.StartsWith("."))
                {
                    allItemsCount++;
                    if ((n is InventoryWearable && CurrentOutfitFolder.IsWorn(currentOutfit, n)) ||
                        CurrentOutfitFolder.IsAttached(currentAttachments, n))
                    {
                        allItemsWornCount++;
                    }
                }
            }

            return(WornIndicator(myItemsCount, myItemsWornCount) + WornIndicator(allItemsCount, allItemsWornCount));
        }