/**
         * UI Utils
         */

        private void UpdateUIState()
        {
            var selected = GetSelectedOutfit() != null;

            btnAccept.Disabled = !selected;
            btnDelete.Disabled = !selected;

            var canSetDefaults  = CanSetDefaults();
            var numOutfits      = OutfitBrowser.DataProvider != null ? OutfitBrowser.DataProvider.Count : 0;
            var selectedDefault = GetDefaultOutfitIndex();

            if (!VMPersonSuitsUtils.IsDecoration(SelectedTab))
            {
                if (numOutfits <= 1)
                {
                    //Must leave at least one outfit
                    btnDelete.Disabled = true;
                }
            }

            for (var i = 0; i < DefaultButtons.Length; i++)
            {
                var defaultButton = DefaultButtons[i];
                if (canSetDefaults)
                {
                    defaultButton.Visible  = true;
                    defaultButton.Selected = selectedDefault == i;
                    defaultButton.Disabled = i >= numOutfits;
                }
                else
                {
                    defaultButton.Visible = false;
                }
            }
        }
Beispiel #2
0
        private void DeleteOutfit(string evt, string data, VMEODClient client)
        {
            uint outfitId = 0;

            if (!uint.TryParse(data, out outfitId))
            {
                return;
            }


            GetOutfits(client.vm, outfits =>
            {
                var outfit = outfits.FirstOrDefault(x => x.outfit_id == outfitId);
                if (outfit == null)
                {
                    //You don't own this outfit!
                    return;
                }

                var isDecoration = VMPersonSuitsUtils.IsDecoration((VMPersonSuits)outfit.outfit_type);

                if (!isDecoration)
                {
                    var numInCategory = outfits.Count(x => x.outfit_type == outfit.outfit_type);
                    if (numInCategory <= 1)
                    {
                        //You must keep at least one item of clothing in clothes categories
                        return;
                    }

                    //If its the default, I need to change the default
                    ulong currentDefault = VMPersonSuitsUtils.GetValue(client.Avatar, (VMPersonSuits)outfit.outfit_type);

                    if (outfit.asset_id == currentDefault)
                    {
                        var firstOutfit = outfits.First(x => x.outfit_type == outfit.outfit_type && x.outfit_id != outfitId);
                        //Change the default outfit to the first one in the list for the category
                        client.vm.SendCommand(new VMNetSetOutfitCmd
                        {
                            UID    = client.Avatar.PersistID,
                            Scope  = (VMPersonSuits)outfit.outfit_type,
                            Outfit = firstOutfit.asset_id
                        });
                    }
                }

                client.vm.GlobalLink.DeleteOutfit(client.vm, outfit.outfit_id, VMGLOutfitOwner.AVATAR, client.Avatar.PersistID, success => {
                    BroadcastOutfits(client.vm, false);
                });
            });
        }
        void SetDefault(string evt, string data, VMEODClient client)
        {
            var split = data.Split(',');

            if (!short.TryParse(split[0], out var categoryId) ||
                !uint.TryParse(split[1], out var outfitId))
            {
                return;
            }

            if (!VMPersonSuitsUtils.IsDefaultSuit((VMPersonSuits)categoryId))
            {
                //Can only set defaults on default suit types
                return;
            }

            var category = (VMPersonSuits)categoryId;

            StoreDefaultSuit(client, category, outfitId);
        }