public void ApplyMailTextModify() { using (var fileStream = OpenScript(File.Open("C:/Users/mike/Desktop/SteinsGateELITE/_mail.scx", FileMode.Open))) { SC3Module module = SC3Module.Load(fileStream); var modTextFile = new StreamReader("C:/dev/sg_kor_proj/sge-script/_mail.scx.txt"); foreach (var stringHandle in module.StringTable) { var text = modTextFile.ReadLine(); //Debug.WriteLine(stringHandle.Resolve()); //Debug.WriteLine(text); if (text != null) { module.UpdateString(stringHandle.Id, SC3String.Deserialize("aa")); } } module.ApplyPendingUpdates(); using (var fileStream2 = File.Create("C:/Users/mike/Desktop/extractTest/_mail.scx")) { fileStream.Seek(0, SeekOrigin.Begin); fileStream.CopyTo(fileStream2); } modTextFile.Close(); } }
public void EncodeLatinText() { string text = "fuckety f**k"; var sc3String = SC3String.Deserialize(text); var bytes = sc3String.Encode(SC3Game.SteinsGateHD); string s = SC3String.FromBytes(bytes.ToArray(), SC3Game.SteinsGateHD).ToString(); }
public void EncodeCharacterNameMarker() { string text = "[name]"; var sc3String = SC3String.Deserialize(text); var encoded = sc3String.Encode(SC3Game.SteinsGateHD); Assert.Equal(0x01, encoded[0]); }
private void TestMarker(string text, MarkerKind expectedKind) { var sc3String = SC3String.Deserialize(text); var marker = sc3String.Segments[0] as Marker; Assert.NotNull(marker); Assert.Equal(expectedKind, marker.MarkerKind); Assert.Equal(text, sc3String.ToString()); }
public void EncodeDialogueLineMarker() { string text = "[line]"; var sc3String = SC3String.Deserialize(text); var encoded = sc3String.Encode(SC3Game.SteinsGateHD); Assert.Equal(0x02, encoded[0]); }
public void EncodeRubyTextEndMarker() { string text = "[rubyTextEnd]"; var sc3String = SC3String.Deserialize(text); var encoded = sc3String.Encode(SC3Game.SteinsGateHD); Assert.Equal(0x0B, encoded[0]); }
public void DeserializeColorTag() { string text = "[color index=\"820000\"]"; var sc3String = SC3String.Deserialize(text); var command = sc3String.Segments[0] as SetColorCommand; Assert.NotNull(command); Assert.Equal(text, sc3String.ToString()); }
public void DeserializeCenterTag() { string text = "[center]"; var sc3String = SC3String.Deserialize(text); var command = sc3String.Segments[0] as CenterTextCommand; Assert.NotNull(command); Assert.Equal(text, sc3String.ToString()); }
public void DeserializePresentTag_ResetAlignment() { string text = "[%e]"; var sc3String = SC3String.Deserialize(text); var command = sc3String.Segments[0] as PresentCommand; Assert.NotNull(command); Assert.True(command.ResetTextAlignment); Assert.Equal(text, sc3String.ToString()); }
public void DeserializeFontSizeTag() { string text = "[font size=\"42\"]"; var sc3String = SC3String.Deserialize(text); var command = sc3String.Segments[0] as SetFontSizeCommand; Assert.NotNull(command); Assert.Equal(42, command.FontSize); Assert.Equal(text, sc3String.ToString()); }
public void DeserializeTopMarginTag() { string text = "[margin top=\"42\"]"; var sc3String = SC3String.Deserialize(text); var command = sc3String.Segments[0] as SetMarginCommand; Assert.NotNull(command); Assert.Equal(42, command.TopMargin); Assert.Equal(text, sc3String.ToString()); }
private void DecodeLineBreak(SC3Game game) { string hex = "00"; var sc3String = SC3String.FromHexString(hex, game); Assert.Equal(1, sc3String.Segments.Length); var textSegment = sc3String.Segments[0] as TextSegment; Assert.NotNull(textSegment); Assert.Equal("\n", textSegment.Value); }
private void DecodeTextSegment(SC3Game game) { string hex = "80C480C480C4"; var sc3String = SC3String.FromHexString(hex, game); Assert.Equal(1, sc3String.Segments.Length); var textSegment = sc3String.Segments[0] as TextSegment; Assert.NotNull(textSegment); Assert.Equal(SC3StringSegmentKind.Text, textSegment.SegmentKind); Assert.NotNull(textSegment.Value); }
private void DecodePresentCommand_ResetAlignment(SC3Game game) { var sc3String = SC3String.FromHexString("08FF", game); Assert.Equal(1, sc3String.Segments.Length); var command = sc3String.Segments[0] as PresentCommand; Assert.NotNull(command); Assert.Equal(SC3StringSegmentKind.EmbeddedCommand, command.SegmentKind); Assert.Equal(EmbeddedCommandKind.Present, command.CommandKind); Assert.Equal(true, command.ResetTextAlignment); }
private void DecodeRubyTextEndMarker(SC3Game game) { string hex = "0B"; var sc3String = SC3String.FromHexString(hex, game); Assert.Equal(1, sc3String.Segments.Length); var rubyTextEndMarker = sc3String.Segments[0] as Marker; Assert.NotNull(rubyTextEndMarker); Assert.Equal(SC3StringSegmentKind.Marker, rubyTextEndMarker.SegmentKind); Assert.Equal(MarkerKind.RubyTextEnd, rubyTextEndMarker.MarkerKind); }
private void DecodeCharacterNameMarker(SC3Game game) { string hex = "01"; var sc3String = SC3String.FromHexString(hex, game); Assert.Equal(1, sc3String.Segments.Length); var marker = sc3String.Segments[0] as Marker; Assert.NotNull(marker); Assert.Equal(SC3StringSegmentKind.Marker, marker.SegmentKind); Assert.Equal(MarkerKind.CharacterName, marker.MarkerKind); }
public void UpdateRow(GameStringViewModel row) { string updatedText; if (!string.IsNullOrEmpty(row.CharacterName)) { updatedText = $"[name]{row.CharacterName}[line]{row.DialogueLine}"; } else { updatedText = row.DialogueLine; } Module.UpdateString(row.Id, SC3String.Deserialize(updatedText)); }
private void DecodeColoredText(SC3Game game) { string hex = "04 820000 809D80AB80A8803F809880B580AA80A480B180AC80BD80A480B780AC80B280B1"; var sc3String = SC3String.FromHexString(hex, game); Assert.Equal(2, sc3String.Segments.Length); var setColorCommand = sc3String.Segments[0] as SetColorCommand; var textSegment = sc3String.Segments[1] as TextSegment; Assert.NotNull(setColorCommand); Assert.NotNull(textSegment); Assert.Equal(SC3StringSegmentKind.EmbeddedCommand, setColorCommand.SegmentKind); Assert.Equal(EmbeddedCommandKind.SetColor, setColorCommand.CommandKind); }
public void ApplyTextModify() { var archive = ZipFile.OpenRead("Data/SteinsGateELITE.zip"); foreach (var entry in archive.Entries) { using (var fileStream = OpenScript(entry)) { SC3Module module = null; try { module = SC3Module.Load(fileStream); } catch { Debug.WriteLine("#### open file Error : " + entry.FullName); continue; } Debug.WriteLine("#### " + entry.FullName); var modTextFile = new StreamReader("D:/dev/sge-script/" + entry.FullName + ".txt"); foreach (var stringHandle in module.StringTable) { var text = modTextFile.ReadLine(); //Debug.WriteLine("orig : " + stringHandle.Resolve()); //Debug.WriteLine("targ : " + text); if (text != null) { module.UpdateString(stringHandle.Id, SC3String.Deserialize(text)); } } module.ApplyPendingUpdates(); using (var fileStream2 = File.Create("C:/Users/jpkim/Desktop/script_orig/" + entry.FullName)) { fileStream.Seek(0, SeekOrigin.Begin); fileStream.CopyTo(fileStream2); } modTextFile.Close(); } } }
public abstract string Serialize(SC3String sc3String);
public SC3String GetString(int id) { return(SC3String.FromBytes(StringTable[id].RawData.ToArray(), Game)); }
public void UpdateString(int id, SC3String updatedString) { var bytes = updatedString.Encode(Game).ToArray(); _pendingStringUpdates[id] = bytes; }