Beispiel #1
0
        private void B_LoadHouse_Click(object sender, EventArgs e)
        {
            var name = L_ExternalName.Text;

            using var ofd = new OpenFileDialog
                  {
                      Filter   = "New Horizons Villager House (*.nhvh)|*.nhvh|All files (*.*)|*.*",
                      FileName = $"{name}.nhvh",
                  };
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var       file         = ofd.FileName;
            var       fi           = new FileInfo(file);
            const int expectLength = VillagerHouse.SIZE;

            if (fi.Length != expectLength)
            {
                var msg = $"Imported villager house's data length (0x{fi.Length:X}) does not match the required length (0x{expectLength:X}).";
                WinFormsUtil.Error("Cancelling:", msg);
                return;
            }

            var data = File.ReadAllBytes(file);
            var h    = data.ToClass <VillagerHouse>();

            SAV.SetVillagerHouse(h, VillagerIndex);
        }
Beispiel #2
0
        private void B_ReplaceVillager_Click(object sender, EventArgs e)
        {
            if (!Clipboard.ContainsText())
            {
                WinFormsUtil.Error(MessageStrings.MsgVillagerReplaceNoText);
                return;
            }

            var internalName = Clipboard.GetText();

            if (!VillagerResources.IsVillagerDataKnown(internalName))
            {
                internalName = GameInfo.Strings.VillagerMap.FirstOrDefault(z => string.Equals(z.Value, internalName, StringComparison.InvariantCultureIgnoreCase)).Key;
                if (internalName == default)
                {
                    WinFormsUtil.Error(string.Format(MessageStrings.MsgVillagerReplaceUnknownName, internalName));
                    return;
                }
            }

            var index    = VillagerIndex;
            var villager = Villagers[index];

            if (villager is not Villager2 v2)
            {
                WinFormsUtil.Error(MessageStrings.MsgVillagerReplaceOutdatedSaveFormat);
                return;
            }

            var houses     = SAV.GetVillagerHouses();
            var houseIndex = Array.FindIndex(houses, z => z.NPC1 == index);
            var exist      = new VillagerInfo(v2, houses[houseIndex]);
            var replace    = VillagerSwap.GetReplacementVillager(exist, internalName);

            var nh = new VillagerHouse(replace.House);

            SAV.SetVillagerHouse(nh, houseIndex);
            var nv = new Villager2(replace.Villager);

            LoadVillager(Villagers[index] = nv);
            System.Media.SystemSounds.Asterisk.Play();
        }