Exemplo n.º 1
0
        private PartChange GetPartChange(uint partIdx, uint?newGfxObjId = null)
        {
            if (PartChanges == null)
            {
                PartChanges = new Dictionary <uint, PartChange>();
            }

            if (!PartChanges.TryGetValue(partIdx, out var partChange))
            {
                if (newGfxObjId == null)
                {
                    var setup = DatManager.PortalDat.ReadFromDat <SetupModel>(SetupId);

                    if (partIdx >= setup.Parts.Count)
                    {
                        return(null);
                    }

                    newGfxObjId = setup.Parts[(int)partIdx];
                }

                partChange = new PartChange(newGfxObjId.Value);
                PartChanges.Add(partIdx, partChange);
            }
            return(partChange);
        }
Exemplo n.º 2
0
        public void Add(uint clothingTableID, PaletteTemplate paletteTemplate = PaletteTemplate.Undef, float shade = 0.0f)
        {
            var clothingTable = DatManager.PortalDat.ReadFromDat <ClothingTable>(clothingTableID);

            if (!clothingTable.ClothingBaseEffects.TryGetValue(SetupId, out var baseEffect))
            {
                return;
            }

            // palette changes
            if (clothingTable.ClothingSubPalEffects.TryGetValue((uint)paletteTemplate, out var palEffect))
            {
                if (PaletteChanges == null)
                {
                    PaletteChanges = new PaletteChanges(palEffect.CloSubPalettes, shade);
                }
                else
                {
                    PaletteChanges.Add(palEffect.CloSubPalettes, shade);
                }
            }

            foreach (var objEffect in baseEffect.CloObjectEffects)
            {
                if (PartChanges == null)
                {
                    PartChanges = new Dictionary <uint, PartChange>();
                }

                // gfxobj change
                if (!PartChanges.TryGetValue(objEffect.Index, out var partChange))
                {
                    partChange = new PartChange(objEffect.ModelId);
                    PartChanges.Add(objEffect.Index, partChange);
                }
                else
                {
                    partChange.NewGfxObjId = objEffect.ModelId;
                }

                // texture changes
                foreach (var texEffect in objEffect.CloTextureEffects)
                {
                    if (partChange.TextureChanges == null)
                    {
                        partChange.TextureChanges = new Dictionary <uint, uint>();
                    }

                    partChange.TextureChanges[texEffect.OldTexture] = texEffect.NewTexture;
                }
            }
        }