Exemple #1
0
 public static void Convert(CustomFarm farm, CustomFarmVer1 oldFarm)
 {
     foreach (overrideMap om in oldFarm.overrideMaps)
     {
         farm.Overrides.Add(new MapFile(om.FileName, om.Location, om.type));
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="contentPack"></param>
        /// <param name="farm"></param>
        /// <returns></returns>
        private bool ProcessContentPack(IContentPack contentPack, out CustomFarm farm)
        {
            Dictionary <string, object> Extra;
            bool results;

            if (contentPack.Manifest.ExtraFields != null && contentPack.Manifest.ExtraFields.ContainsKey("ContentPackType"))
            {
                Extra = (Dictionary <string, object>)ObjectToDictionaryHelper.ToDictionary(contentPack.Manifest.ExtraFields["ContentPackType"]);
                if (Extra.ContainsKey("Farm") && bool.Parse(Extra["Farm"].ToString()))
                {
                    farm    = contentPack.ReadJsonFile <CustomFarm>("farmType.json");
                    results = true;
                }
                else
                {
                    farm    = null;
                    results = false;
                }
            }
            else
            {
                farm    = contentPack.ReadJsonFile <CustomFarm>("farmType.json");
                results = true;
            }
            return(results);
        }
Exemple #3
0
 public static void Convert(CustomFarm farm, CustomFarmVer1 oldFarm)
 {
     foreach (additionalMap am in oldFarm.additionalMaps)
     {
         farm.AdditionalMaps.Add(new MapFile(am.FileName, am.mapType, am.Location));
     }
 }
        public static void Convert(CustomFarm farm, CustomFarmVer2p0 oldFarm)
        {
            farm.ID   = oldFarm.ID;
            farm.Name = oldFarm.Name;

            string[] description = oldFarm.Description.Split('_');
            if (description.Length == 0)
            {
                farm.DescriptionName    = "MissingName";
                farm.DescriptionDetails = "MissingDetails";
            }
            else if (description.Length == 1)
            {
                farm.DescriptionName    = "MissingName";
                farm.DescriptionDetails = description[0];
            }
            else
            {
                farm.DescriptionName    = description[0];
                farm.DescriptionDetails = description[1];
            }

            farm.Folder  = oldFarm.Folder;
            farm.Icon    = oldFarm.Icon;
            farm.Version = 2.1f;

            farm.StartingGreenHouse = oldFarm.StartingGreenHouse;

            farm.CabinCapacity = oldFarm.CabinCapacity;
            farm.AllowClose    = oldFarm.AllowClose;
            farm.AllowSeperate = oldFarm.AllowSeperate;

            farm.FarmMap        = oldFarm.FarmMap;
            farm.AdditionalMaps = oldFarm.AdditionalMaps;

            farm.FarmHouse     = oldFarm.FarmHouse;
            farm.GreenHouse    = oldFarm.GreenHouse;
            farm.FarmCave      = oldFarm.FarmCave;
            farm.ShippingBin   = oldFarm.ShippingBin;
            farm.MailBox       = oldFarm.MailBox;
            farm.GrandpaShrine = oldFarm.GrandpaShrine;
            farm.RabbitShrine  = oldFarm.RabbitShrine;
            farm.PetWaterBowl  = oldFarm.PetWaterBowl;

            farm.Neighbors = oldFarm.Neighbors;

            farm.Overrides = oldFarm.Overrides;

            farm.ResourceClumps       = oldFarm.ResourceClumps;
            farm.Foraging             = oldFarm.Foraging;
            farm.Ores                 = oldFarm.Ores;
            farm.SpawnMonstersAtNight = oldFarm.SpawnMonstersAtNight;

            farm.FurnitureList            = oldFarm.FurnitureList;
            farm.ObjectList               = oldFarm.ObjectList;
            farm.FurnitureLayoutFromCanon = oldFarm.FurnitureLayoutFromCanon;
            return;
        }
        public static void Convert(CustomFarm farm, CustomFarmVer1 oldFarm)
        {
            LargeDebris largeDebris = new LargeDebris();

            largeDebris.ResourceList = new List <Spawn>();

            foreach (resourceSpawns rs in oldFarm.Resource)
            {
                Spawn item = new Spawn();
                if (rs.itemId == 0)
                {
                    if (rs.itemName == "Stump")
                    {
                        item.ItemId = 600;
                    }
                    else if (rs.itemName == "Log")
                    {
                        item.ItemId = 602;
                    }
                    else if (rs.itemName == "Boulder")
                    {
                        item.ItemId = 672;
                    }
                    else
                    {
                        continue;
                    }
                }
                else if (rs.itemId == 600 || rs.itemId == 602 || rs.itemId == 672)
                {
                    item.ItemId = rs.itemId;
                }
                else
                {
                    continue;
                }

                item.Seasons          = rs.SeasonsToSpawn;
                item.Boundary         = rs.SpawnType;
                item.AreaBinding      = rs.area;
                item.TileBinding      = rs.TileIndex;
                item.Chance           = rs.chance;
                item.RainModifier     = new Modifier(rs.rainAddition, rs.rainMultipler);
                item.NewMonthModifier = new Modifier(rs.newMonthAddition, rs.newMonthMultipler);
                item.NewYearModifier  = new Modifier(rs.newYearAddition, rs.newYearMultipler);
                item.AmountMin        = rs.minimumAmount;
                item.AmountMax        = rs.maximumAmount;
                item.CooldownMin      = rs.minCooldown;
                item.CooldownMax      = rs.maxCooldown;
                item.DaysLeft         = rs.daysTilNextSpawn;

                largeDebris.ResourceList.Add(item);
            }
            farm.ResourceClumps = largeDebris;
        }
 /// <summary>
 /// Checks each field containing a <see cref="Structure"/> type. Implements the default (canon) values if
 /// the field is omitted.
 /// </summary>
 /// <param name="farm">A MTN Custom Farm</param>
 public void Validate(CustomFarm farm)
 {
     farm.FarmHouse     = (farm.FarmHouse == null) ? new Structure(new Placement(3712f / 64f, 520f / 64f), new Interaction(64, 15)) : farm.FarmHouse;
     farm.GreenHouse    = (farm.GreenHouse == null) ? new Structure(new Placement(1600f / 64f, 384f / 64f), new Interaction(28, 17)) : farm.GreenHouse;
     farm.FarmCave      = (farm.FarmCave == null) ? new Structure(new Placement(), new Interaction(34, 7)) : farm.FarmCave;
     farm.ShippingBin   = (farm.ShippingBin == null) ? new Structure(new Placement(), new Interaction(71, 13)) : farm.ShippingBin;
     farm.MailBox       = (farm.MailBox == null) ? new Structure(new Placement(), new Interaction(68, 16)) : farm.MailBox;
     farm.GrandpaShrine = (farm.GrandpaShrine == null) ? new Structure(new Placement(), new Interaction(9, 7)) : farm.GrandpaShrine;
     farm.RabbitShrine  = (farm.RabbitShrine == null) ? new Structure(new Placement(), new Interaction(48, 7)) : farm.RabbitShrine;
     farm.PetWaterBowl  = (farm.PetWaterBowl == null) ? new Structure(new Placement(), new Interaction(54, 7)) : farm.PetWaterBowl;
 }
        /// <summary>
        /// Converts a content pack with a farmType.json 2.0 to the latest.
        /// </summary>
        /// <param name="contentPack">A SMAPI Content Pack</param>
        /// <param name="monitor">SMAPI's IMonitor, to print useful information.</param>
        /// <returns>Converted CustomFarm</returns>
        private CustomFarm PopulateVerison2dot0(IContentPack contentPack, IMonitor monitor)
        {
            CustomFarmVer2p0 oldVersion;
            CustomFarm       convertedFarm;

            monitor.Log("\t - Content Pack is using FarmType 2.0. Using Backwards Compatibility.");
            oldVersion    = contentPack.ReadJsonFile <CustomFarmVer2p0>("farmType.json");
            convertedFarm = new CustomFarm();
            CustomFarmVer2p0.Convert(convertedFarm, oldVersion);
            return(convertedFarm);
        }
        /// <summary>
        /// Converts a content pack with a farmType.json 1.0 (MTN1) to the latest.
        /// </summary>
        /// <param name="contentPack">A SMAPI Content Pack</param>
        /// <param name="monitor">SMAPI's IMonitor, to print useful information.</param>
        /// <returns>Converted CustomFarm</returns>
        private CustomFarm PopulateVersion1dot0(IContentPack contentPack, IMonitor monitor)
        {
            CustomFarmVer1 oldVersion;
            CustomFarm     convertedFarm;

            monitor.Log("\t - Content Pack is for FarmType 1.0 (MTN1). Using Backwards Compatibility.");
            oldVersion    = contentPack.ReadJsonFile <CustomFarmVer1>("farmType.json");
            convertedFarm = new CustomFarm();
            CustomFarmVer1.Convert(convertedFarm, oldVersion);
            return(convertedFarm);
        }
Exemple #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="customFarm"></param>
 public void LinkToFarm(CustomFarm customFarm)
 {
     if (customFarm.StartingGreenHouse == null)
     {
         return;
     }
     for (int i = 0; i < GreenHouseList.Count; i++)
     {
         if (GreenHouseList[i].Name == customFarm.StartingGreenHouse)
         {
             customFarm.CustomGreenhouse = GreenHouseList[i];
         }
     }
 }
Exemple #10
0
        public static void Convert(CustomFarm farm, CustomFarmVer1 oldFarm)
        {
            farm.ID          = oldFarm.ID;
            farm.Name        = oldFarm.Name;
            farm.Description = oldFarm.Description;
            farm.Folder      = oldFarm.Folder;
            farm.Icon        = oldFarm.Icon;
            farm.Version     = oldFarm.version;

            farm.CabinCapacity = oldFarm.cabinCapacity;
            farm.AllowClose    = oldFarm.allowClose;
            farm.AllowSeperate = oldFarm.allowSeperate;

            farm.FarmMap = new MapFile(oldFarm.farmMapFile, "Farm", "Farm", oldFarm.farmMapType);

            farm.AdditionalMaps = new List <MapFile>();
            additionalMap.Convert(farm, oldFarm);

            farm.FarmHouse = new Structure();
            StructureInfo.Convert(farm.FarmHouse, oldFarm.farmHouse);
            farm.GreenHouse = new Structure();
            StructureInfo.Convert(farm.GreenHouse, oldFarm.greenHouse);
            farm.FarmCave = new Structure();
            StructureInfo.Convert(farm.FarmCave, oldFarm.farmCave);
            farm.ShippingBin = new Structure();
            StructureInfo.Convert(farm.ShippingBin, oldFarm.shippingBin);
            farm.MailBox = new Structure();
            StructureInfo.Convert(farm.MailBox, oldFarm.mailBox);
            farm.GrandpaShrine = new Structure();
            StructureInfo.Convert(farm.GrandpaShrine, oldFarm.grandpaShrine);
            farm.RabbitShrine = new Structure();
            StructureInfo.Convert(farm.RabbitShrine, oldFarm.rabbitStatue);
            farm.PetWaterBowl = new Structure();
            StructureInfo.Convert(farm.PetWaterBowl, oldFarm.petWaterBowl);

            farm.Neighbors = new List <Neighbor>();
            farm.Neighbors = oldFarm.neighboringMaps;

            farm.Overrides = new List <MapFile>();
            overrideMap.Convert(farm, oldFarm);

            resourceSpawns.Convert(farm, oldFarm);
            //forageSpawns.Convert(farm, oldFarm);

            farm.SpawnMonstersAtNight = oldFarm.spawnMonstersAtNight;

            farm.FurnitureList            = oldFarm.furnitureList;
            farm.FurnitureLayoutFromCanon = oldFarm.furnitureLayoutFromCanon;
            farm.ObjectList = oldFarm.objectList;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="contentPack"></param>
        /// <param name="farm"></param>
        private void LoadIcon(IModHelper helper, IContentPack contentPack, CustomFarm farm)
        {
            string IconFile;

            IconFile = Path.Combine(contentPack.DirectoryPath, "icon.png");
            if (File.Exists(IconFile))
            {
                farm.IconSource = contentPack.LoadAsset <Texture2D>("icon.png");
            }
            else
            {
                farm.IconSource = helper.Content.Load <Texture2D>(Path.Combine("Resource", "missingIcon.png"));
            }
        }
        ///////////////
        ///////////////
        /// Methods ///
        ///////////////
        ///////////////

        /// <summary>
        ///
        /// </summary>
        /// <param name="contentPack"></param>
        /// <param name="monitor"></param>
        /// <returns></returns>
        public void Populate(IModHelper helper, IContentPack contentPack, IMonitor monitor)
        {
            CustomFarm FarmData = new CustomFarm();

            if (ProcessContentPack(contentPack, out FarmData))
            {
                monitor.Log($"\t + Contains a custom farm.", LogLevel.Trace);
                if (FarmData.Version < 2.1)
                {
                    FarmData = BackwardsCompatibility(contentPack, monitor, FarmData.Version);
                }
                LoadIcon(helper, contentPack, FarmData);
                Validate(FarmData);
                FarmData.ContentPack = contentPack;
                FarmList.Add(FarmData);
            }
        }
Exemple #13
0
        public void LoadCustomFarmByMtnData()
        {
            MtnFarmData farmData;

            MethodInfo keyReader = helper.Data.GetType().GetMethod("GetSaveFileKey", BindingFlags.NonPublic | BindingFlags.Instance);
            string     key       = (string)keyReader.Invoke(helper.Data, new object[] { "MtnFarmData" });

            if (SaveGame.loaded.CustomData.TryGetValue(key, out string value))
            {
                farmData = JsonConvert.DeserializeObject <MtnFarmData>(SaveGame.loaded.CustomData[key]);
            }
            else
            {
                CustomFarm farm = FarmList.Find(x => x.ID == Game1.whichFarm);
                farmData = new MtnFarmData {
                    FarmTypeName = farm.Name
                };
                helper.Data.WriteSaveData("MtnFarmData", farmData);
            }

            Canon = FarmManager.Load(farmData);
        }