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

            using var ofd = new OpenFileDialog
                  {
                      Filter = "New Horizons Villager (*.nhv)|*.nhv|" +
                               "New Horizons Villager (*.nhv2)|*.nhv2|" +
                               "All files (*.*)|*.*",
                      FileName = $"{name}.{Villagers[VillagerIndex].Extension}",
                  };
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var path         = ofd.FileName;
            var expectLength = SAV.Offsets.VillagerSize;
            var fi           = new FileInfo(path);

            if (!VillagerConverter.IsCompatible((int)fi.Length, expectLength))
            {
                WinFormsUtil.Error(string.Format(MessageStrings.MsgDataSizeMismatchImport, fi.Length, expectLength), path);
                return;
            }

            var data = File.ReadAllBytes(ofd.FileName);

            data = VillagerConverter.GetCompatible(data, expectLength);
            if (data.Length != expectLength)
            {
                WinFormsUtil.Error(string.Format(MessageStrings.MsgDataSizeMismatchImport, fi.Length, expectLength), path);
                return;
            }

            var v       = SAV.Offsets.ReadVillager(data);
            var player0 = Origin;

            if (!v.IsOriginatedFrom(player0))
            {
                string msg    = string.Format(MessageStrings.MsgDataDidNotOriginateFromHost_0, player0.PlayerName);
                var    result = WinFormsUtil.Prompt(MessageBoxButtons.YesNoCancel, msg, MessageStrings.MsgAskUpdateValues);
                if (result == DialogResult.Cancel)
                {
                    return;
                }
                if (result == DialogResult.Yes)
                {
                    v.ChangeOrigins(player0, v.Write());
                }
            }

            LoadVillager(Villagers[VillagerIndex] = v);
        }
示例#2
0
        static void ConvertVillagers(string inPath, string outPath)
        {
            if (!Directory.Exists(outPath))
            {
                Directory.CreateDirectory(outPath);
            }

            DirectoryInfo di = new DirectoryInfo(inPath);

            FileInfo[] files = di.GetFiles();

            foreach (var file in files)
            {
                if (file.Name.EndsWith("V.bytes"))
                {
                    var       villager = File.ReadAllBytes(file.FullName);
                    Villager1 v1       = new Villager1(villager);
                    Villager2 v2       = new Villager2(VillagerConverter.Convert12(villager));
                    File.WriteAllBytes(Path.Combine(outPath, file.Name), v2.Data);
                }
            }
        }
    private void sendLegacyVillagerData(byte[] data)
    {
        var v2 = VillagerConverter.Convert12(data);

        sendVillagerData(v2);
    }