public void SetValue(Localized_Text.Language language, long value) { switch (language) { case Localized_Text.Language.English: English = value; break; case Localized_Text.Language.French: French = value; break; case Localized_Text.Language.German: German = value; break; case Localized_Text.Language.Italian: Italian = value; break; case Localized_Text.Language.Spanish: Spanish = value; break; case Localized_Text.Language.Unknown: Universal = value; break; default: Universal = value; break; } }
public void Load(string path, Localized_Text.Language language) { using (var reader = new BinaryReader(System.IO.File.OpenRead(path))) { Load(reader, reader.BaseStream.Length, language); } }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = (uint)reader.ReadUInt64(); for (uint i = 0; i < count; i++) { var id = reader.ReadInt32(); var series = (Duel_Series)reader.ReadInt32(); var keyOffset = reader.ReadInt64(); var valueOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + keyOffset; var key = reader.ReadNullTerminatedString(keyEncoding); reader.BaseStream.Position = fileStartPos + valueOffset; var value = reader.ReadNullTerminatedString(valueEncoding); reader.BaseStream.Position = tempOffset; if (!Items.TryGetValue(id, out var item)) { item = new Item(id, series); Items.Add(item.Id, item); } item.Key.SetText(language, key); item.Value.SetText(language, value); } }
private void LanguageToolStripMenuItem_Click(object Sender, EventArgs Args) { foreach (ToolStripMenuItem Lang in languageToolStripMenuItem.DropDownItems) { Lang.Checked = false; } ((ToolStripMenuItem)Sender).Checked = true; switch (((ToolStripMenuItem)Sender).Text) { case "English": Language = Localized_Text.Language.English; break; case "French": Language = Localized_Text.Language.French; break; case "German": Language = Localized_Text.Language.German; break; case "Italian": Language = Localized_Text.Language.Italian; break; case "Spanish": Language = Localized_Text.Language.Spanish; break; default: Language = Localized_Text.Language.Unknown; break; } }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkItemSize = 28; // Size of each item in the first chunk var fileStartPos = writer.BaseStream.Position; writer.Write((ulong)Items.Count); var offsetsOffset = writer.BaseStream.Position; writer.Write(new byte[Items.Count * firstChunkItemSize]); var index = 0; foreach (var item in Items.Values) { var keyLen = GetStringSize(item.Key.GetText(language), keyEncoding); var valueLen = GetStringSize(item.Value.GetText(language), valueEncoding); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = offsetsOffset + index * firstChunkItemSize; writer.Write(item.Id); writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + keyLen); writer.WriteOffset(fileStartPos, tempOffset + keyLen + valueLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(item.Key.GetText(language), keyEncoding); writer.WriteNullTerminatedString(item.Value.GetText(language), valueEncoding); writer.WriteNullTerminatedString(item.Value2.GetText(language), value2Encoding); index++; } }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = Endian.ConvertUInt32(reader.ReadUInt32()); for (var i = 0; i < count; i++) { var offset = Endian.ConvertUInt32(reader.ReadUInt32()); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + offset; var text = Strings.Count > i ? Strings[i] : null; if (text == null) { text = new Localized_Text(); Strings.Add(text); } text.SetText(language, reader.ReadNullTerminatedString(encoding)); reader.BaseStream.Position = tempOffset; } }
public void Save(string path, Localized_Text.Language language) { using (var writer = new BinaryWriter(System.IO.File.Create(path))) { Save(writer, language); } }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkItemSize = 88; var fileStartPos = writer.BaseStream.Position; writer.Write((ulong)Items.Count); var offsetsOffset = writer.BaseStream.Position; writer.Write(new byte[Items.Count * firstChunkItemSize]); var index = 0; foreach (var item in Items.Values) { var codeNameLen = GetStringSize(item.CodeName.GetText(language), encoding1); var playerAlternateSkinLen = GetStringSize(item.PlayerAlternateSkin.GetText(language), encoding1); var opponentAlternateSkinLen = GetStringSize(item.OpponentAlternateSkin.GetText(language), encoding1); var nameLen = GetStringSize(item.Name.GetText(language), encoding2); var descriptionLen = GetStringSize(item.Description.GetText(language), encoding2); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = offsetsOffset + index * firstChunkItemSize; writer.Write(item.Id); writer.Write((int)item.Series); writer.Write(item.DisplayIndex); writer.Write(item.PlayerCharId); writer.Write(item.OpponentCharId); writer.Write(item.PlayerDeckId); writer.Write(item.OpponentDeckId); writer.Write(item.ArenaId); writer.Write(item.Unk8); writer.Write(item.DlcId); writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen + playerAlternateSkinLen); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen + playerAlternateSkinLen + opponentAlternateSkinLen); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen + playerAlternateSkinLen + opponentAlternateSkinLen + nameLen); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen + playerAlternateSkinLen + opponentAlternateSkinLen + nameLen + descriptionLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(item.CodeName.GetText(language), encoding1); writer.WriteNullTerminatedString(item.PlayerAlternateSkin.GetText(language), encoding1); writer.WriteNullTerminatedString(item.OpponentAlternateSkin.GetText(language), encoding1); writer.WriteNullTerminatedString(item.Name.GetText(language), encoding2); writer.WriteNullTerminatedString(item.Description.GetText(language), encoding2); writer.WriteNullTerminatedString(item.Tip.GetText(language), encoding2); index++; } }
public bool Load(Localized_Text.Language language) { if (ZibFile != null) { if (ZibFile.IsFileOnDisk) { if (!System.IO.File.Exists(ZibFile.FilePathOnDisk)) { return(false); } Load(ZibFile.FilePathOnDisk, language); return(true); } if (ZibFile.Owner?.File == null || ZibFile.Offset <= 0 || ZibFile.Length <= 0) { return(false); } ZibFile.Owner.File.Archive.Reader.BaseStream.Position = ZibFile.Owner.File.ArchiveOffset + ZibFile.Offset; Load(ZibFile.Owner.File.Archive.Reader, ZibFile.Length, language); return(true); } if (File == null) { return(false); } if (File.IsFileOnDisk) { if (!System.IO.File.Exists(File.FilePathOnDisk)) { return(false); } Load(File.FilePathOnDisk, language); return(true); } if (!File.IsArchiveFile) { return(false); } File.Archive.Reader.BaseStream.Position = File.ArchiveOffset; Load(File.Archive.Reader, File.ArchiveLength); return(true); }
private static void LoadCardNamesAndDescriptions(Localized_Text.Language language, IList <Card_Info> cards, IReadOnlyDictionary <Localized_Text.Language, byte[]> indxByLanguage, IReadOnlyDictionary <Localized_Text.Language, byte[]> namesByLanguage, IReadOnlyDictionary <Localized_Text.Language, byte[]> descriptionsByLanguage) { if (language == Localized_Text.Language.Unknown) { return; } var indx = indxByLanguage[language]; var names = namesByLanguage[language]; var descriptions = descriptionsByLanguage[language]; using (var indxReader = new BinaryReader(new MemoryStream(indx))) using (var namesReader = new BinaryReader(new MemoryStream(names))) using (var descriptionsReader = new BinaryReader(new MemoryStream(descriptions))) { var namesByOffset = ReadStrings(namesReader); var descriptionsByOffset = ReadStrings(descriptionsReader); var index = 0; while (true) { var nameOffset = indxReader.ReadUInt32(); var descriptionOffset = indxReader.ReadUInt32(); if (indxReader.BaseStream.Position >= indxReader.BaseStream.Length) { break; } Card_Info card = null; if (cards.Count > index) { card = cards[index]; } else { cards.Add(card = new Card_Info(index)); } card.Name.SetText(language, namesByOffset[nameOffset]); card.Description.SetText(language, descriptionsByOffset[descriptionOffset]); index++; } } }
public ZIB_File GetLocalizedFile(Localized_Text.Language language) { if (LOTD_File.GetLanguageFromFileName(FileName) == language) { return(this); } var fileName = LOTD_File.GetFileNameWithLanguage(FileName, language); if (string.IsNullOrEmpty(fileName)) { return(null); } Owner.Files.TryGetValue(fileName, out var file); return(file); }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = (uint)reader.ReadUInt64(); for (uint i = 0; i < count; i++) { var id1 = reader.ReadInt32(); var id2 = reader.ReadInt32(); var series = (Duel_Series)reader.ReadInt32(); var signatureCardId = reader.ReadInt32(); var deckOwner = reader.ReadInt32(); var unk1 = reader.ReadInt32(); var deckFileNameOffset = reader.ReadInt64(); var deckNameOffset = reader.ReadInt64(); var deckDescriptionOffset = reader.ReadInt64(); var unkStr1Offset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + deckFileNameOffset; var deckFileName = reader.ReadNullTerminatedString(deckFileNameEncoding); reader.BaseStream.Position = fileStartPos + deckNameOffset; var deckName = reader.ReadNullTerminatedString(deckNameEncoding); reader.BaseStream.Position = fileStartPos + deckDescriptionOffset; var deckDescription = reader.ReadNullTerminatedString(deckDescriptionEncoding); reader.BaseStream.Position = fileStartPos + unkStr1Offset; var unkStr1 = reader.ReadNullTerminatedString(unkStr1Encoding); reader.BaseStream.Position = tempOffset; if (!Items.TryGetValue(id1, out var item)) { item = new Item(id1, id2, series, signatureCardId, deckOwner, unk1); Items.Add(item.Id1, item); } item.DeckFileName.SetText(language, deckFileName); item.DeckName.SetText(language, deckName); item.DeckDescription.SetText(language, deckDescription); item.UnkStr1.SetText(language, unkStr1); } }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { var fileStartPos = writer.BaseStream.Position; writer.Write(Endian.ConvertUInt32((uint)Strings.Count)); writer.Write(new byte[Strings.Count * 4]); for (var i = 0; i < Strings.Count; i++) { var writerOffset = writer.BaseStream.Position; writer.BaseStream.Position = fileStartPos + (4 + i * 4); writer.Write(Endian.ConvertUInt32((uint)(writerOffset - fileStartPos))); writer.BaseStream.Position = writerOffset; writer.WriteNullTerminatedString(Strings[i].GetText(language), encoding); } }
public long GetValue(Localized_Text.Language language) { switch (language) { case Localized_Text.Language.English: return(English); case Localized_Text.Language.French: return(French); case Localized_Text.Language.German: return(German); case Localized_Text.Language.Italian: return(Italian); case Localized_Text.Language.Spanish: return(Spanish); case Localized_Text.Language.Unknown: return(Universal); default: return(Universal); } }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = (uint)reader.ReadUInt64(); for (uint i = 0; i < count; i++) { var id = reader.ReadInt32(); var series = (Duel_Series)reader.ReadInt32(); var challengeDeckId = reader.ReadInt32(); var unk3 = reader.ReadInt32(); var dlcId = reader.ReadInt32(); var unk5 = reader.ReadInt32(); var type = reader.ReadInt64(); var keyOffset = reader.ReadInt64(); var valueOffset = reader.ReadInt64(); var descriptionOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + keyOffset; var codeName = reader.ReadNullTerminatedString(keyEncoding); reader.BaseStream.Position = fileStartPos + valueOffset; var name = reader.ReadNullTerminatedString(valueEncoding); reader.BaseStream.Position = fileStartPos + descriptionOffset; var bio = reader.ReadNullTerminatedString(valueEncoding); reader.BaseStream.Position = tempOffset; if (!Items.TryGetValue(id, out var item)) { item = new Item(id, series, challengeDeckId, unk3, dlcId, unk5, type); Items.Add(item.Id, item); } item.CodeName.SetText(language, codeName); item.Name.SetText(language, name); item.Bio.SetText(language, bio); } }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkItemSize = 56; // Size of each item in the first chunk var fileStartPos = writer.BaseStream.Position; writer.Write((ulong)Items.Count); var offsetsOffset = writer.BaseStream.Position; writer.Write(new byte[Items.Count * firstChunkItemSize]); var index = 0; foreach (var item in Items.Values) { var deckFileNameLen = GetStringSize(item.DeckFileName.GetText(language), deckFileNameEncoding); var deckNameLen = GetStringSize(item.DeckName.GetText(language), deckNameEncoding); var deckDescriptionLen = GetStringSize(item.DeckDescription.GetText(language), deckDescriptionEncoding); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = offsetsOffset + index * firstChunkItemSize; writer.Write(item.Id1); writer.Write(item.Id2); writer.Write((int)item.Series); writer.Write(item.SignatureCardId); writer.Write(item.DeckOwnerId); writer.Write(item.Unk1); writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + deckFileNameLen); writer.WriteOffset(fileStartPos, tempOffset + deckFileNameLen + deckNameLen); writer.WriteOffset(fileStartPos, tempOffset + deckFileNameLen + deckNameLen + deckDescriptionLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(item.DeckFileName.GetText(language), deckFileNameEncoding); writer.WriteNullTerminatedString(item.DeckName.GetText(language), deckNameEncoding); writer.WriteNullTerminatedString(item.DeckDescription.GetText(language), deckDescriptionEncoding); writer.WriteNullTerminatedString(item.UnkStr1.GetText(language), unkStr1Encoding); index++; } }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = (uint)reader.ReadUInt64(); for (uint i = 0; i < count; i++) { var id = reader.ReadInt32(); var series = (Duel_Series)reader.ReadInt32(); var price = reader.ReadInt32(); var type = (PackType)reader.ReadInt32(); var codeNameOffset = reader.ReadInt64(); var nameOffset = reader.ReadInt64(); var unkStrOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + codeNameOffset; var codeName = reader.ReadNullTerminatedString(encoding1); reader.BaseStream.Position = fileStartPos + nameOffset; var name = reader.ReadNullTerminatedString(encoding2); reader.BaseStream.Position = fileStartPos + unkStrOffset; var unkStr = reader.ReadNullTerminatedString(encoding2); reader.BaseStream.Position = tempOffset; if (!Items.TryGetValue(id, out var item)) { item = new Item(id, series, price, type); Items.Add(item.Id, item); } item.CodeName.SetText(language, codeName); item.Name.SetText(language, name); item.UnkStr.SetText(language, unkStr); } }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkItemSize = 56; // Size of each item in the first chunk var fileStartPos = writer.BaseStream.Position; writer.Write((ulong)Items.Count); var offsetsOffset = writer.BaseStream.Position; writer.Write(new byte[Items.Count * firstChunkItemSize]); var index = 0; foreach (var item in Items.Values) { var keyLen = GetStringSize(item.CodeName.GetText(language), keyEncoding); var valueLen = GetStringSize(item.Name.GetText(language), valueEncoding); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = offsetsOffset + index * firstChunkItemSize; writer.Write(item.Id); writer.Write((int)item.Series); writer.Write(item.ChallengeDeckId); writer.Write(item.Unk3); writer.Write(item.DlcId); writer.Write(item.Unk5); writer.Write(item.Type); writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + keyLen); writer.WriteOffset(fileStartPos, tempOffset + keyLen + valueLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(item.CodeName.GetText(language), keyEncoding); writer.WriteNullTerminatedString(item.Name.GetText(language), valueEncoding); writer.WriteNullTerminatedString(item.Bio.GetText(language), descriptionEncoding); index++; } }
/// <summary> /// Gets the description of the monster. /// </summary> /// <param name="language">What language to get for.</param> /// <param name="pendulumDescription">Should I get pendulum description?</param> /// <returns></returns> public string GetDescription(Localized_Text.Language language, bool pendulumDescription) { if (pendulumDescription && !IsPendulum) { return(string.Empty); } var text = Description.GetText(language); if (!IsPendulum) { return(text); } const string pendulumHeader = "[Pendulum Effect]"; var index = text.IndexOf(pendulumHeader, StringComparison.Ordinal); if (pendulumDescription) { return(index == -1 ? string.Empty : text.Substring(index + pendulumHeader.Length)); } return(index == -1 ? text : text.Substring(0, index)); }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkItemSize = 40; var fileStartPos = writer.BaseStream.Position; writer.Write((ulong)Items.Count); var offsetsOffset = writer.BaseStream.Position; writer.Write(new byte[Items.Count * firstChunkItemSize]); var index = 0; foreach (var item in Items.Values) { var codeNameLen = GetStringSize(item.CodeName.GetText(language), encoding1); var nameLen = GetStringSize(item.Name.GetText(language), encoding2); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = offsetsOffset + index * firstChunkItemSize; writer.Write(item.Id); writer.Write((int)item.Series); writer.Write(item.Price); writer.Write((int)item.Type); writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen); writer.WriteOffset(fileStartPos, tempOffset + codeNameLen + nameLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(item.CodeName.GetText(language), encoding1); writer.WriteNullTerminatedString(item.Name.GetText(language), encoding2); writer.WriteNullTerminatedString(item.UnkStr.GetText(language), encoding2); index++; } }
/// <summary> /// A function that should be used to find a card based on its name. /// </summary> /// <param name="language">What localization to use.</param> /// <param name="name">The card name to search for</param> /// <returns>The Card_Info of the card if found.</returns> public Card_Info FindCardByName(Localized_Text.Language language, string name) { _cardsByName[language].TryGetValue(name, out var cardInfo); return(cardInfo); }
public ZIB_File GetLocalizedZibFile(Localized_Text.Language language) { return(ZibFile?.GetLocalizedFile(language)); }
public virtual void Load(BinaryReader reader, long length, Localized_Text.Language language) { throw new NotImplementedException("Localized Files Can't Be Loaded! CHECK CODE PLEASE!"); }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var firstChunkSize = reader.ReadInt64(); var firstChunkItemCount = reader.ReadInt32(); var secondChunkItemCount = reader.ReadInt32(); for (var i = 0; i < firstChunkItemCount; i++) { var textStartIndex = reader.ReadInt32(); var textEndIndex = reader.ReadInt32(); var codeNameOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + codeNameOffset; var codeName = reader.ReadNullTerminatedString(encoding); reader.BaseStream.Position = tempOffset; Script script = null; if (Scripts.Count > i) { script = Scripts[i]; } else { Scripts.Add(script = new Script(textStartIndex, textEndIndex)); } script.CodeName.SetText(language, codeName); } reader.BaseStream.Position = fileStartPos + firstChunkSize; for (var i = 0; i < secondChunkItemCount; i++) { var characterNameOffset = reader.ReadInt64(); var characterPositionOffset = reader.ReadInt64(); var characterExpressionOffset = reader.ReadInt64(); var textOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + characterNameOffset; var characterName = reader.ReadNullTerminatedString(encoding); reader.BaseStream.Position = fileStartPos + characterPositionOffset; var characterPosition = reader.ReadNullTerminatedString(encoding); reader.BaseStream.Position = fileStartPos + characterExpressionOffset; var characterExpression = reader.ReadNullTerminatedString(encoding); reader.BaseStream.Position = fileStartPos + textOffset; var text = reader.ReadNullTerminatedString(encoding); reader.BaseStream.Position = tempOffset; ScriptText scriptText = null; if (Text.Count > i) { scriptText = Text[i]; } else { Text.Add(scriptText = new ScriptText()); } scriptText.CharacterName.SetText(language, characterName); scriptText.CharacterPosition.SetText(language, characterPosition); scriptText.CharacterExpression.SetText(language, characterExpression); scriptText.Text.SetText(language, text); } }
public virtual void Save(BinaryWriter writer, Localized_Text.Language language) { throw new NotImplementedException("Localized Files Can't Be Saved! CHECK CODE PLEASE!"); }
public LOTD_File GetLocalizedFile(Localized_Text.Language language) { return(File?.GetLocalizedFile(language)); }
public override void Save(BinaryWriter writer, Localized_Text.Language language) { const int firstChunkOffsetsItemSize = 4 + 4 + 8; const int secondChunkOffsetsItemSize = 8 * 4; var fileStartPos = writer.BaseStream.Position; writer.Write((long)0); writer.Write(Scripts.Count); writer.Write(Text.Count); var firstChunkOffsetsOffset = writer.BaseStream.Position; long firstChunkOffsetsSize = Scripts.Count * firstChunkOffsetsItemSize; writer.Write(new byte[firstChunkOffsetsSize]); for (var i = 0; i < Scripts.Count; i++) { var script = Scripts[i]; var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = firstChunkOffsetsOffset + i * firstChunkOffsetsItemSize; writer.Write(script.TextStartIndex); writer.Write(script.TextEndIndex); writer.WriteOffset(fileStartPos, tempOffset); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(script.CodeName.GetText(language), encoding); } var temp = writer.BaseStream.Position; writer.BaseStream.Position = fileStartPos; writer.Write(temp - fileStartPos); writer.BaseStream.Position = temp; var secondChunkOffsetsOffset = writer.BaseStream.Position; long secondChunkOffsetsSize = Text.Count * secondChunkOffsetsItemSize; writer.Write(new byte[secondChunkOffsetsSize]); for (var i = 0; i < Text.Count; i++) { var scriptText = Text[i]; var characterNameLen = GetStringSize(scriptText.CharacterName.GetText(language), encoding); var characterPositionLen = GetStringSize(scriptText.CharacterPosition.GetText(language), encoding); var characterExpressionLen = GetStringSize(scriptText.CharacterExpression.GetText(language), encoding); var tempOffset = writer.BaseStream.Position; writer.BaseStream.Position = secondChunkOffsetsOffset + i * secondChunkOffsetsItemSize; writer.WriteOffset(fileStartPos, tempOffset); writer.WriteOffset(fileStartPos, tempOffset + characterNameLen); writer.WriteOffset(fileStartPos, tempOffset + characterNameLen + characterPositionLen); writer.WriteOffset(fileStartPos, tempOffset + characterNameLen + characterPositionLen + characterExpressionLen); writer.BaseStream.Position = tempOffset; writer.WriteNullTerminatedString(scriptText.CharacterName.GetText(language), encoding); writer.WriteNullTerminatedString(scriptText.CharacterPosition.GetText(language), encoding); writer.WriteNullTerminatedString(scriptText.CharacterExpression.GetText(language), encoding); writer.WriteNullTerminatedString(scriptText.Text.GetText(language), encoding); } }
public override void Load(BinaryReader reader, long length, Localized_Text.Language language) { var fileStartPos = reader.BaseStream.Position; var count = (uint)reader.ReadUInt64(); for (uint i = 0; i < count; i++) { var id = reader.ReadInt32(); var series = (Duel_Series)reader.ReadInt32(); var displayIndex = reader.ReadInt32(); var playerCharId = reader.ReadInt32(); var opponentCharId = reader.ReadInt32(); var playerDeckId = reader.ReadInt32(); var opponentDeckId = reader.ReadInt32(); var arenaId = reader.ReadInt32(); var unk8 = reader.ReadInt32(); var dlcId = reader.ReadInt32(); var codeNameOffset = reader.ReadInt64(); var playerAlternateSkinOffset = reader.ReadInt64(); var opponentAlternateSkinOffset = reader.ReadInt64(); var nameOffset = reader.ReadInt64(); var descriptionOffset = reader.ReadInt64(); var tipOffset = reader.ReadInt64(); var tempOffset = reader.BaseStream.Position; reader.BaseStream.Position = fileStartPos + codeNameOffset; var codeName = reader.ReadNullTerminatedString(encoding1); reader.BaseStream.Position = fileStartPos + playerAlternateSkinOffset; var playerAlternateSkin = reader.ReadNullTerminatedString(encoding1); reader.BaseStream.Position = fileStartPos + opponentAlternateSkinOffset; var opponentAlternateSkin = reader.ReadNullTerminatedString(encoding1); reader.BaseStream.Position = fileStartPos + nameOffset; var name = reader.ReadNullTerminatedString(encoding2); reader.BaseStream.Position = fileStartPos + descriptionOffset; var description = reader.ReadNullTerminatedString(encoding2); reader.BaseStream.Position = fileStartPos + tipOffset; var tipStr = reader.ReadNullTerminatedString(encoding2); reader.BaseStream.Position = tempOffset; if (!Items.TryGetValue(id, out var item)) { item = new Item(id, series, displayIndex, playerCharId, opponentCharId, playerDeckId, opponentDeckId, arenaId, unk8, dlcId); Items.Add(item.Id, item); } item.CodeName.SetText(language, codeName); item.PlayerAlternateSkin.SetText(language, playerAlternateSkin); item.OpponentAlternateSkin.SetText(language, opponentAlternateSkin); item.Name.SetText(language, name); item.Description.SetText(language, description); item.Tip.SetText(language, tipStr); } }