Пример #1
0
        public static Pattern GetRandomClothingPattern(Sim sim)
        {
            ResourceKey reskeyPattern;
            SewingSkill sewingSkill = sim.SkillManager.AddElement(SewingSkill.kSewingSkillGUID) as SewingSkill;

            do
            {
                reskeyPattern = RandomUtil.GetRandomObjectFromList(ObjectLoader.mStoredClothingPattern);

                if (!SewingSkill.HasAlreadyDiscoveredThis(sim.mSimDescription.mSimDescriptionId, reskeyPattern))
                {
                    break;
                }
            }while (true);

            if (reskeyPattern != ResourceKey.kInvalidResourceKey)
            {
                PatternInfo mPatternInfoInit = new PatternInfo();
                mPatternInfoInit.resKeyPattern = reskeyPattern;
                ObjectLoader.sewableSetting sSetting = ObjectLoader.dictSettings[reskeyPattern];
                mPatternInfoInit.fabricsNeeded          = sSetting.typeFabric;
                mPatternInfoInit.IsMagic                = sSetting.isMagicProject;
                mPatternInfoInit.amountOfFabricToRemove = sSetting.amountRemoveFabric;
                mPatternInfoInit.isClothing             = sSetting.isClothing;
                mPatternInfoInit.mClothingName          = sSetting.clothingName;
                mPatternInfoInit.mWasPatternGifted      = false;

                if (mPatternInfoInit.isClothing)
                {
                    mPatternInfoInit.mSimOutfit = new CASPart(mPatternInfoInit.resKeyPattern);
                }

                ResourceKey reskey1 = new ResourceKey(0x19D4F5930F26B2D8, 0x319E4F1D, 0x00000000);
                Pattern.PatternObjectInitParams initData = new Pattern.PatternObjectInitParams(mPatternInfoInit.fabricsNeeded, mPatternInfoInit.IsMagic, mPatternInfoInit.amountOfFabricToRemove, mPatternInfoInit.mSkilllevel, mPatternInfoInit.resKeyPattern, mPatternInfoInit.isClothing, mPatternInfoInit.mSimOutfit, mPatternInfoInit.mClothingName, mPatternInfoInit.mWasPatternGifted);
                Pattern pattern = (Pattern)GlobalFunctions.CreateObjectOutOfWorld(reskey1, null, initData);

                mPatternInfoInit.Name = mPatternInfoInit.mClothingName;
                pattern.NameComponent.SetName(mPatternInfoInit.mClothingName);

                pattern.mPatternInfo = mPatternInfoInit;
                sim.Inventory.TryToAdd(pattern);
                sewingSkill.AddPatternCount(1);

                return(pattern);
            }
            return(null);
        }
Пример #2
0
        public static void DiscoverAllPatterns(Sim actor)
        {
            List <ResourceKey> allPatternsList = new List <ResourceKey>();

            allPatternsList.AddRange(ObjectLoader.EasySewablesList);
            allPatternsList.AddRange(ObjectLoader.MediumSewablesList);
            allPatternsList.AddRange(ObjectLoader.HardSewablesList);
            allPatternsList.AddRange(ObjectLoader.HarderSewablesList);
            allPatternsList.AddRange(ObjectLoader.MagicHarderSewablesList);

            Pattern.PatternInfo mPatternInfoInit = new Pattern.PatternInfo();
            int skillLevel = actor.SkillManager.GetSkillLevel(SewingSkill.kSewingSkillGUID);

            for (int i = 0; i < ObjectLoader.sewableSettings.Count; i++)
            {
                //					if(ObjectLoader.sewableSettings[i].key == getPattern)
                //                  {
                try
                {
                    mPatternInfoInit.resKeyPattern          = ObjectLoader.sewableSettings[i].key;
                    mPatternInfoInit.fabricsNeeded          = ObjectLoader.sewableSettings[i].typeFabric;
                    mPatternInfoInit.IsMagic                = ObjectLoader.sewableSettings[i].isMagicProject;
                    mPatternInfoInit.amountOfFabricToRemove = ObjectLoader.sewableSettings[i].amountRemoveFabric;
                    mPatternInfoInit.mSkilllevel            = 0;
                    mPatternInfoInit.isClothing             = ObjectLoader.sewableSettings[i].isClothing;
                    mPatternInfoInit.mClothingName          = ObjectLoader.sewableSettings[i].clothingName;
                    mPatternInfoInit.mWasPatternGifted      = false;

                    if (mPatternInfoInit.isClothing)
                    {
                        mPatternInfoInit.mSimOutfit = new CASPart(mPatternInfoInit.resKeyPattern);
                    }

                    // Move on if the reskey is invalid.
                    if (mPatternInfoInit.resKeyPattern == ResourceKey.kInvalidResourceKey)
                    {
                        continue;
                    }

                    // Pattern OBJD key.
                    ResourceKey reskey1 = new ResourceKey(0x19D4F5930F26B2D8, 0x319E4F1D, 0x00000000);
                    Pattern.PatternObjectInitParams initData = new Pattern.PatternObjectInitParams(mPatternInfoInit.fabricsNeeded, mPatternInfoInit.IsMagic, mPatternInfoInit.amountOfFabricToRemove, mPatternInfoInit.mSkilllevel, mPatternInfoInit.resKeyPattern, mPatternInfoInit.isClothing, mPatternInfoInit.mSimOutfit, mPatternInfoInit.mClothingName, mPatternInfoInit.mWasPatternGifted);
                    Pattern pattern = (Pattern)GlobalFunctions.CreateObjectOutOfWorld(reskey1, null, initData);

                    //Move on if the pattern resulted into a failure Object
                    if (pattern.GetType() == typeof(FailureObject))
                    {
                        continue;
                    }

                    if (pattern != null && !mPatternInfoInit.isClothing)
                    {
                        IGameObject getname = (GameObject)GlobalFunctions.CreateObjectOutOfWorld(mPatternInfoInit.resKeyPattern, null, initData);
                        if (getname != null)
                        {
                            // Currently uses the pattern object's name. We need to concatinate the sewable's name here as well. Since EA never made a function to get the name direction from the resource key, we need to do this.
                            mPatternInfoInit.Name = pattern.GetLocalizedName() + ":" + getname.GetLocalizedName();
                            pattern.NameComponent.SetName(pattern.GetLocalizedName() + ": " + getname.GetLocalizedName());
                            // Now we finally got the name and can destroy the object.
                            getname.Destroy();
                        }
                        pattern.mPatternInfo = mPatternInfoInit;
                        actor.Inventory.TryToAdd(pattern);
                    }
                    else if (pattern != null && mPatternInfoInit.isClothing)
                    {
                        mPatternInfoInit.Name = mPatternInfoInit.mClothingName;
                        pattern.NameComponent.SetName(mPatternInfoInit.mClothingName);

                        pattern.mPatternInfo = mPatternInfoInit;
                        actor.Inventory.TryToAdd(pattern);
                    }
                    else
                    {
                        GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n The pattern doesn't exist! Did you delete things from the sewing table .package? Else, contact Lyralei.");
                    }
                    SewingSkill.AddItemsToDiscoveredList(actor.mSimDescription.mSimDescriptionId, mPatternInfoInit.resKeyPattern);
                }
                catch (Exception ex2)
                {
                    GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n REPORT THIS TO LYRALEI: " + ex2.ToString());
                }
                //}
            }
        }
Пример #3
0
        public static Pattern DiscoverPattern(Sim actor)
        {
            //int skillLevel = actor.SkillManager.GetSkillLevel(SewingSkill.kSewingSkillGUID);
            ResourceKey getPattern       = GetUnregisteredpattern(actor, false);
            ResourceKey emptyRes         = new ResourceKey(0uL, 0u, 0u);
            PatternInfo mPatternInfoInit = new PatternInfo();
            SewingSkill sewingSkill      = actor.SkillManager.AddElement(SewingSkill.kSewingSkillGUID) as SewingSkill;

            try
            {
                ObjectLoader.sewableSetting sSetting = ObjectLoader.dictSettings[getPattern];

                mPatternInfoInit.resKeyPattern          = getPattern;
                mPatternInfoInit.fabricsNeeded          = sSetting.typeFabric;
                mPatternInfoInit.IsMagic                = sSetting.isMagicProject;
                mPatternInfoInit.amountOfFabricToRemove = sSetting.amountRemoveFabric;
                mPatternInfoInit.isClothing             = sSetting.isClothing;
                mPatternInfoInit.mClothingName          = sSetting.clothingName;
                mPatternInfoInit.mWasPatternGifted      = false;

                //mPatternInfoInit.mSkilllevel              = 0;

                if (mPatternInfoInit.isClothing)
                {
                    mPatternInfoInit.mSimOutfit = new CASPart(mPatternInfoInit.resKeyPattern);
                }

                // Pattern OBJD key.
                ResourceKey reskey1 = new ResourceKey(0x19D4F5930F26B2D8, 0x319E4F1D, 0x00000000);
                Pattern.PatternObjectInitParams initData = new Pattern.PatternObjectInitParams(mPatternInfoInit.fabricsNeeded, mPatternInfoInit.IsMagic, mPatternInfoInit.amountOfFabricToRemove, mPatternInfoInit.mSkilllevel, mPatternInfoInit.resKeyPattern, mPatternInfoInit.isClothing, mPatternInfoInit.mSimOutfit, mPatternInfoInit.mClothingName, mPatternInfoInit.mWasPatternGifted);
                Pattern pattern = (Pattern)GlobalFunctions.CreateObjectOutOfWorld(reskey1, null, initData);

                if (pattern.GetType() == typeof(FailureObject))
                {
                    return(null);
                }

                if (pattern != null)
                {
                    IGameObject getname = (GameObject)GlobalFunctions.CreateObjectOutOfWorld(mPatternInfoInit.resKeyPattern, null, initData);
                    if (getname != null)
                    {
                        // Currently uses the pattern object's name. We need to concatinate the sewable's name here as well. Since EA never made a function to get the name direction from the resource key, we need to do this.
                        mPatternInfoInit.Name = pattern.GetLocalizedName() + ": " + getname.GetLocalizedName();
                        pattern.NameComponent.SetName(pattern.GetLocalizedName() + ": " + getname.GetLocalizedName());

                        // Now we finally got the name and can destroy the object.
                        getname.Destroy();
                    }
                    SimDescription desc = actor.SimDescription;
                    pattern.mPatternInfo = mPatternInfoInit;
                    SewingSkill.AddItemsToDiscoveredList(desc.mSimDescriptionId, mPatternInfoInit.resKeyPattern);

                    actor.Inventory.TryToAdd(pattern);
                    sewingSkill.AddPatternCount(1);
                    return(pattern);
                }
                else if (pattern != null && mPatternInfoInit.isClothing)
                {
                    mPatternInfoInit.Name = mPatternInfoInit.mClothingName;
                    pattern.NameComponent.SetName(mPatternInfoInit.mClothingName);

                    pattern.mPatternInfo = mPatternInfoInit;
                    actor.Inventory.TryToAdd(pattern);
                    sewingSkill.AddPatternCount(1);

                    return(pattern);
                }
                else
                {
                    GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n The pattern doesn't exist! Did you delete things from the sewing table .package? Else, contact Lyralei.");
                    return(null);
                }
            }
            catch (Exception ex2)
            {
                GlobalOptionsSewingTable.print("Lyralei's Sewing table: \n \n REPORT THIS TO LYRALEI: " + ex2.ToString());
                return(null);
            }
        }