Example #1
0
        private GameSpecificData(SC3Game game)
        {
            Game = game;

            _supportedModules     = new Lazy <ImmutableArray <string> >(ReadSupportedModules);
            _commonInstrStubs     = new Lazy <ImmutableDictionary <ImmutableArray <byte>, InstructionStub> >(ReadCommonInstructionStubs);
            _opcodeTable          = new Lazy <ImmutableDictionary <ImmutableArray <byte>, InstructionStub> >(ReadInstructionStubs);
            _characterSet         = new Lazy <string>(ReadCharset);
            _privateUseCharacters = new Lazy <ImmutableDictionary <int, string> >(ReadPuaCharacters);
        }
Example #2
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 #3
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 #4
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 #5
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 #6
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 #7
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 #8
0
 public SC3StringDecoder(SC3Game game)
 {
     _data = GameSpecificData.For(game);
 }
Example #9
0
 public ImmutableArray <byte> Encode(SC3Game game)
 {
     return(s_encoders[game].Value.Encode(this));
 }
Example #10
0
        public static SC3String FromHexString(string hexString, SC3Game game)
        {
            var bytes = BinaryUtils.HexStrToBytes(hexString);

            return(FromBytes(bytes, game));
        }
Example #11
0
        public static SC3String FromBytes(byte[] bytes, SC3Game game)
        {
            var decoder = s_decoders[game].Value;

            return(decoder.DecodeString(bytes));
        }
Example #12
0
 public static GameSpecificData For(SC3Game game)
 {
     return(s_instances[game]);
 }