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); }
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); }
/// <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]; } } }
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); } }
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); }