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); }
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 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); }
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 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 SC3StringDecoder(SC3Game game) { _data = GameSpecificData.For(game); }
public ImmutableArray <byte> Encode(SC3Game game) { return(s_encoders[game].Value.Encode(this)); }
public static SC3String FromHexString(string hexString, SC3Game game) { var bytes = BinaryUtils.HexStrToBytes(hexString); return(FromBytes(bytes, game)); }
public static SC3String FromBytes(byte[] bytes, SC3Game game) { var decoder = s_decoders[game].Value; return(decoder.DecodeString(bytes)); }
public static GameSpecificData For(SC3Game game) { return(s_instances[game]); }