Пример #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 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);
            }
        }