public static void GameLoop_Saving(object sender, SavingEventArgs e) { FamiliarSaveData fsd = new FamiliarSaveData(); foreach (GameLocation l in Game1.locations) { for (int i = l.characters.Count - 1; i >= 0; i--) { if (l.characters[i] is Familiar) { if (l.characters[i] is DustSpriteFamiliar) { fsd.dustSpriteFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is DinoFamiliar) { fsd.dinoFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is BatFamiliar) { fsd.batFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is JunimoFamiliar) { fsd.junimoFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is ButterflyFamiliar) { fsd.butterflyFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } l.characters.RemoveAt(i); } } } Helper.Data.WriteSaveData("familiars", fsd); }
public static void GameLoop_Saving(object sender, SavingEventArgs e) { FamiliarSaveData fsd = new FamiliarSaveData(); foreach (GameLocation l in Game1.locations) { for (int i = l.characters.Count - 1; i >= 0; i--) { if (l.characters[i] is Familiar) { if (l.characters[i] is DustSpriteFamiliar) { fsd.dustSpriteFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is DinoFamiliar) { fsd.dinoFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is BatFamiliar) { fsd.batFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is JunimoFamiliar) { fsd.junimoFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } else if (l.characters[i] is ButterflyFamiliar) { fsd.butterflyFamiliars.Add((l.characters[i] as Familiar).SaveData(l)); } Monitor.Log($"removing {l.characters[i].GetType()} from {l.Name}"); l.characters.RemoveAt(i); } } } foreach (Building b in Game1.getFarm().buildings) { if (b.indoors == null || b.indoors.Value == null || b.indoors.Value.characters == null || b.indoors.Value.Name != "Slime Hutch") { continue; } for (int i = b.indoors.Value.characters.Count - 1; i >= 0; i--) { NPC npc = b.indoors.Value.characters[i]; if (npc is Familiar) { if (npc is DustSpriteFamiliar) { fsd.dustSpriteFamiliars.Add((npc as Familiar).SaveData(b.indoors.Value)); } else if (npc is DinoFamiliar) { fsd.dinoFamiliars.Add((npc as Familiar).SaveData(b.indoors.Value)); } else if (npc is BatFamiliar) { fsd.batFamiliars.Add((npc as Familiar).SaveData(b.indoors.Value)); } else if (npc is JunimoFamiliar) { fsd.junimoFamiliars.Add((npc as Familiar).SaveData(b.indoors.Value)); } else if (npc is ButterflyFamiliar) { fsd.butterflyFamiliars.Add((npc as Familiar).SaveData(b.indoors.Value)); } Monitor.Log($"removing {npc.GetType()} from {b.indoors.Value.Name}"); b.indoors.Value.characters.RemoveAt(i); } } } Helper.Data.WriteSaveData("familiars", fsd); }
internal static void LoadFamiliars() { FamiliarSaveData fsd = Helper.Data.ReadSaveData <FamiliarSaveData>("familiars") ?? new FamiliarSaveData(); foreach (FamiliarData f in fsd.dustSpriteFamiliars) { Monitor.Log($"Got saved Dust Familiar at {f.currentLocation}"); GameLocation l = null; if (Game1.getLocationFromName(f.currentLocation) != null) { l = Game1.getLocationFromName(f.currentLocation); } else { l = Game1.getFarm().buildings.FirstOrDefault(b => b.buildingType == "Slime Hutch")?.indoors.Value; } if (l == null) { continue; } Monitor.Log($"Returning saved Dust Familiar to {l.Name}"); DustSpriteFamiliar d = new DustSpriteFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } foreach (FamiliarData f in fsd.dinoFamiliars) { Monitor.Log($"Got saved Dino Familiar at {f.currentLocation}"); GameLocation l = null; if (Game1.getLocationFromName(f.currentLocation) != null) { l = Game1.getLocationFromName(f.currentLocation); } else { l = Game1.getFarm().buildings.FirstOrDefault(b => b.buildingType == "Slime Hutch")?.indoors.Value; } if (l == null) { continue; } Monitor.Log($"Returning saved Dino Familiar to {l.Name}"); DinoFamiliar d = new DinoFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } foreach (FamiliarData f in fsd.batFamiliars) { Monitor.Log($"Got saved Bat Familiar at {f.currentLocation}"); GameLocation l = null; if (Game1.getLocationFromName(f.currentLocation) != null) { l = Game1.getLocationFromName(f.currentLocation); } else { l = Game1.getFarm().buildings.FirstOrDefault(b => b.buildingType == "Slime Hutch")?.indoors.Value; } if (l == null) { continue; } Monitor.Log($"Returning saved Bat Familiar to {l.Name}"); BatFamiliar d = new BatFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } foreach (FamiliarData f in fsd.junimoFamiliars) { Monitor.Log($"Got saved Junimo Familiar at {f.currentLocation}"); GameLocation l = null; if (Game1.getLocationFromName(f.currentLocation) != null) { l = Game1.getLocationFromName(f.currentLocation); } else { l = Game1.getFarm().buildings.FirstOrDefault(b => b.buildingType == "Slime Hutch")?.indoors.Value; } if (l == null) { continue; } Monitor.Log($"Returning saved Junimo Familiar to {l.Name}"); JunimoFamiliar d = new JunimoFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; if (f.color != null && f.color.A == 255) { d.color.Value = f.color; } else { d.color.Value = FamiliarsUtils.GetJunimoColor(); } d.SetScale(); d.currentLocation = l; l.characters.Add(d); } foreach (FamiliarData f in fsd.butterflyFamiliars) { Monitor.Log($"Got saved Butterfly Familiar at {f.currentLocation}"); GameLocation l = null; if (Game1.getLocationFromName(f.currentLocation) != null) { l = Game1.getLocationFromName(f.currentLocation); } else { l = Game1.getFarm().buildings.FirstOrDefault(b => b.buildingType == "Slime Hutch")?.indoors.Value; } if (l == null) { continue; } Monitor.Log($"Returning saved Butterfly Familiar to {l.Name}"); ButterflyFamiliar d = new ButterflyFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.baseFrame = f.baseFrame; d.SetScale(); d.currentLocation = l; d.baseFrame = f.baseFrame; d.reloadSprite(); l.characters.Add(d); } }
internal static void LoadFamiliars() { FamiliarSaveData fsd = Helper.Data.ReadSaveData <FamiliarSaveData>("familiars") ?? new FamiliarSaveData(); foreach (FamiliarData f in fsd.dustSpriteFamiliars) { GameLocation l = Game1.getLocationFromName(f.currentLocation); if (l != null) { Monitor.Log($"Returning saved Dust Familiar to {l.Name}"); DustSpriteFamiliar d = new DustSpriteFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } } foreach (FamiliarData f in fsd.dinoFamiliars) { GameLocation l = Game1.getLocationFromName(f.currentLocation); if (l != null) { Monitor.Log($"Returning saved Dino Familiar to {l.Name}"); DinoFamiliar d = new DinoFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } } foreach (FamiliarData f in fsd.batFamiliars) { GameLocation l = Game1.getLocationFromName(f.currentLocation); if (l != null) { Monitor.Log($"Returning saved Bat Familiar to {l.Name}"); BatFamiliar d = new BatFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } } foreach (FamiliarData f in fsd.junimoFamiliars) { GameLocation l = Game1.getLocationFromName(f.currentLocation); if (l != null) { Monitor.Log($"Returning saved Junimo Familiar to {l.Name}"); JunimoFamiliar d = new JunimoFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } } foreach (FamiliarData f in fsd.butterflyFamiliars) { GameLocation l = Game1.getLocationFromName(f.currentLocation); if (l != null) { Monitor.Log($"Returning saved Butterfly Familiar to {l.Name}"); ButterflyFamiliar d = new ButterflyFamiliar(f.position, f.ownerId); d.followingOwner = f.followingOwner; d.daysOld.Value = f.daysOld; d.exp.Value = f.exp; d.mainColor = f.mainColor; d.redColor = f.redColor; d.greenColor = f.greenColor; d.blueColor = f.blueColor; d.baseFrame = f.baseFrame; d.SetScale(); d.currentLocation = l; l.characters.Add(d); } } }