Example #1
0
        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();
            }
        }
Example #2
0
        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();
        }
Example #3
0
        public void EncodeCharacterNameMarker()
        {
            string text      = "[name]";
            var    sc3String = SC3String.Deserialize(text);

            var encoded = sc3String.Encode(SC3Game.SteinsGateHD);

            Assert.Equal(0x01, encoded[0]);
        }
Example #4
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());
        }
Example #5
0
        public void EncodeDialogueLineMarker()
        {
            string text      = "[line]";
            var    sc3String = SC3String.Deserialize(text);

            var encoded = sc3String.Encode(SC3Game.SteinsGateHD);

            Assert.Equal(0x02, encoded[0]);
        }
Example #6
0
        public void EncodeRubyTextEndMarker()
        {
            string text      = "[rubyTextEnd]";
            var    sc3String = SC3String.Deserialize(text);

            var encoded = sc3String.Encode(SC3Game.SteinsGateHD);

            Assert.Equal(0x0B, encoded[0]);
        }
Example #7
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());
        }
Example #8
0
        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());
        }
Example #9
0
        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());
        }
Example #10
0
        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());
        }
Example #11
0
        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());
        }
Example #12
0
        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);
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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);
        }
Example #16
0
        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);
        }
Example #17
0
        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));
        }
Example #18
0
        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);
        }
Example #19
0
        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();
                }
            }
        }
Example #20
0
 public abstract string Serialize(SC3String sc3String);
Example #21
0
 public SC3String GetString(int id)
 {
     return(SC3String.FromBytes(StringTable[id].RawData.ToArray(), Game));
 }
Example #22
0
        public void UpdateString(int id, SC3String updatedString)
        {
            var bytes = updatedString.Encode(Game).ToArray();

            _pendingStringUpdates[id] = bytes;
        }