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