Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
                }
            }
        }