private void ModifyAbc(DoABCTag abcTag) { CPoolInfo constants = abcTag.ABCData.ConstantPool; StatusTxt.SetDotAnimation("Squeezing ({0})", abcTag.Name); for (int i = 1; i < constants.Strings.Length; i++) { string constant = constants.Strings[i]; if (constant.Length > 256 || constant.Length < 2) { continue; } if (constant.Length > 2 && constant.Length < 6) { ushort possiblePort = 0; if (ushort.TryParse(constant, out possiblePort)) { if (!_possiblePorts.Contains(possiblePort)) { _possiblePorts.Add(possiblePort); } if (constant != "10001") { continue; } } } constants.Strings[i] = ReplaceConstant(constant); } }
SwfTagData ISwfTagVisitor <ISwfStreamWriter, SwfTagData> .Visit(DoABCTag tag, ISwfStreamWriter writer) { writer.WriteUInt32(tag.Flags); writer.WriteString(tag.Name); writer.WriteBytes(tag.ABCData); return(null); }
SwfTagBase ISwfTagVisitor <ISwfStreamReader, SwfTagBase> .Visit(DoABCTag tag, ISwfStreamReader reader) { tag.Flags = reader.ReadUInt32(); tag.Name = reader.ReadString(); tag.ABCData = reader.ReadRest(); return(tag); }
protected virtual FlashTag ReadTag(FlashReader reader, TagRecord header) { FlashTag tag = null; switch (header.TagType) { default: tag = new UnknownTag(Reader, header); break; case FlashTagType.DoABC: tag = new DoABCTag(Reader, header); _abcFiles.Add(((DoABCTag)tag).ABC); break; case FlashTagType.DefineBitsLossless2: tag = new DefineBitsLossless2Tag(Reader, header); break; case FlashTagType.DefineBinaryData: tag = new DefineBinaryDataTag(Reader, header); break; } var character = (tag as ICharacter); if (character != null) { // Add ICharacter tag to the global dictionary. Dictionary.Characters[ character.CharacterId] = character; } return(tag); }
protected override void WriteTag(TagItem tag, FlashWriter output) { if (tag.Kind == TagKind.DoABC) { DoABCTag doABCTag = (DoABCTag)tag; doABCTag.ABCData = _abcFileTags[doABCTag].ToArray(); } base.WriteTag(tag, output); }
protected override TagItem ReadTag(HeaderRecord header, FlashReader input) { TagItem tag = base.ReadTag(header, input); if (tag.Kind == TagKind.DoABC) { DoABCTag doABCTag = (DoABCTag)tag; ABCFile abcFile = new ABCFile(doABCTag.ABCData); _abcFileTags[doABCTag] = abcFile; ABCFiles.Add(abcFile); } return(tag); }
static private void Set() { string __airFileName = Path.Combine(Directories.AirClientFolder, _AirGeneratedContent); if (File.Exists(__airFileName)) { _champions = new ChampionsList(); _runes = new RunesList(); _maps = new MapsList(); _featuredGames = new FeaturedGamesList(); _spells = new SpellsList(); _items = new GameItemList(); Tools.Swf.SwfReader __swfReader = new Tools.Swf.SwfReader(__airFileName); __swfReader.DeCompile(); if (__swfReader.CompilationUnit.IsValid) { if (__swfReader.CompilationUnit.Symbols.Count > 0) { foreach (ISwfTag __iSwfTag in __swfReader.CompilationUnit.Tags) { if (__iSwfTag is DoABCTag) { DoABCTag _abctag = (DoABCTag)__iSwfTag; foreach (KeyValuePair <uint, AS3_Class> __class in _abctag.Classes) { if (__class.Value.classname is RTQName) { switch (((RTQName)__class.Value.classname).Name) { case "ChampionGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createChampion"); if (__results.Count > 0) { foreach (object[] __result in __results) { _champions.Add(new Champion(__result)); } } } break; case "RuneGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createRune"); if (__results.Count > 0) { foreach (object[] __result in __results) { _runes.Add(new Rune(__result)); } } } break; case "MapGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createMap"); if (__results.Count > 0) { foreach (object[] __result in __results) { _maps.Add(new Map(__result)); } } } break; case "FeaturedGameGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createFeaturedGame"); if (__results.Count > 0) { foreach (object[] __result in __results) { _featuredGames.Add(new FeaturedGame(__result)); } } } break; case "SpellGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createSpell"); if (__results.Count > 0) { foreach (object[] __result in __results) { _spells.Add(new Spell(__result)); } } } break; case "GameItemGeneratedData": foreach (KeyValuePair <uint, AS3_MethodInfo> __member in __class.Value.traits.methods) { List <object[]> __results = GetParams(__member.Value, "createGameItem"); if (__results.Count > 0) { foreach (object[] __result in __results) { _items.Add(new GameItem(__result)); } } } break; } } } } } } } } }
static SwfTagBase Create(SwfTagData tag_data) { var reader = new SwfStreamReader(tag_data.TagData); switch (tag_data.TagId) { // Display list case (int)SwfTagType.PlaceObject: return(PlaceObjectTag.Create(reader)); case (int)SwfTagType.PlaceObject2: return(PlaceObject2Tag.Create(reader)); case (int)SwfTagType.PlaceObject3: return(PlaceObject3Tag.Create(reader)); case (int)SwfTagType.RemoveObject: return(RemoveObjectTag.Create(reader)); case (int)SwfTagType.RemoveObject2: return(RemoveObject2Tag.Create(reader)); case (int)SwfTagType.ShowFrame: return(ShowFrameTag.Create(reader)); // Control case (int)SwfTagType.SetBackgroundColor: return(SetBackgroundColorTag.Create(reader)); case (int)SwfTagType.FrameLabel: return(FrameLabelTag.Create(reader)); case (int)SwfTagType.Protect: return(ProtectTag.Create(reader)); case (int)SwfTagType.End: return(EndTag.Create(reader)); case (int)SwfTagType.ExportAssets: return(ExportAssetsTag.Create(reader)); case (int)SwfTagType.ImportAssets: return(UnsupportedTag.Create(SwfTagType.ImportAssets)); case (int)SwfTagType.EnableDebugger: return(EnableDebuggerTag.Create(reader)); case (int)SwfTagType.EnableDebugger2: return(EnableDebugger2Tag.Create(reader)); case (int)SwfTagType.ScriptLimits: return(ScriptLimitsTag.Create(reader)); case (int)SwfTagType.SetTabIndex: return(UnsupportedTag.Create(SwfTagType.SetTabIndex)); case (int)SwfTagType.ImportAssets2: return(UnsupportedTag.Create(SwfTagType.ImportAssets2)); case (int)SwfTagType.SymbolClass: return(SymbolClassTag.Create(reader)); case (int)SwfTagType.Metadata: return(MetadataTag.Create(reader)); case (int)SwfTagType.DefineScalingGrid: return(UnsupportedTag.Create(SwfTagType.DefineScalingGrid)); case (int)SwfTagType.DefineSceneAndFrameLabelData: return(DefineSceneAndFrameLabelDataTag.Create(reader)); // Actions case (int)SwfTagType.DoAction: return(UnsupportedTag.Create(SwfTagType.DoAction)); case (int)SwfTagType.DoInitAction: return(UnsupportedTag.Create(SwfTagType.DoInitAction)); case (int)SwfTagType.DoABC: return(DoABCTag.Create(reader)); // Shape case (int)SwfTagType.DefineShape: return(DefineShapeTag.Create(reader)); case (int)SwfTagType.DefineShape2: return(DefineShape2Tag.Create(reader)); case (int)SwfTagType.DefineShape3: return(DefineShape3Tag.Create(reader)); case (int)SwfTagType.DefineShape4: return(DefineShape4Tag.Create(reader)); // Bitmaps case (int)SwfTagType.DefineBits: return(UnsupportedTag.Create(SwfTagType.DefineBits)); case (int)SwfTagType.JPEGTables: return(UnsupportedTag.Create(SwfTagType.JPEGTables)); case (int)SwfTagType.DefineBitsJPEG2: return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG2)); case (int)SwfTagType.DefineBitsJPEG3: return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG3)); case (int)SwfTagType.DefineBitsLossless: return(DefineBitsLosslessTag.Create(reader)); case (int)SwfTagType.DefineBitsLossless2: return(DefineBitsLossless2Tag.Create(reader)); case (int)SwfTagType.DefineBitsJPEG4: return(UnsupportedTag.Create(SwfTagType.DefineBitsJPEG4)); // Shape Morphing case (int)SwfTagType.DefineMorphShape: return(UnsupportedTag.Create(SwfTagType.DefineMorphShape)); case (int)SwfTagType.DefineMorphShape2: return(UnsupportedTag.Create(SwfTagType.DefineMorphShape2)); // Fonts and Text case (int)SwfTagType.DefineFont: return(UnsupportedTag.Create(SwfTagType.DefineFont)); case (int)SwfTagType.DefineFontInfo: return(UnsupportedTag.Create(SwfTagType.DefineFontInfo)); case (int)SwfTagType.DefineFontInfo2: return(UnsupportedTag.Create(SwfTagType.DefineFontInfo2)); case (int)SwfTagType.DefineFont2: return(UnsupportedTag.Create(SwfTagType.DefineFont2)); case (int)SwfTagType.DefineFont3: return(UnsupportedTag.Create(SwfTagType.DefineFont3)); case (int)SwfTagType.DefineFontAlignZones: return(UnsupportedTag.Create(SwfTagType.DefineFontAlignZones)); case (int)SwfTagType.DefineFontName: return(UnsupportedTag.Create(SwfTagType.DefineFontName)); case (int)SwfTagType.DefineText: return(UnsupportedTag.Create(SwfTagType.DefineText)); case (int)SwfTagType.DefineText2: return(UnsupportedTag.Create(SwfTagType.DefineText2)); case (int)SwfTagType.DefineEditText: return(UnsupportedTag.Create(SwfTagType.DefineEditText)); case (int)SwfTagType.CSMTextSettings: return(UnsupportedTag.Create(SwfTagType.CSMTextSettings)); case (int)SwfTagType.DefineFont4: return(UnsupportedTag.Create(SwfTagType.DefineFont4)); // Sounds case (int)SwfTagType.DefineSound: return(UnsupportedTag.Create(SwfTagType.DefineSound)); case (int)SwfTagType.StartSound: return(UnsupportedTag.Create(SwfTagType.StartSound)); case (int)SwfTagType.StartSound2: return(UnsupportedTag.Create(SwfTagType.StartSound2)); case (int)SwfTagType.SoundStreamHead: return(UnsupportedTag.Create(SwfTagType.SoundStreamHead)); case (int)SwfTagType.SoundStreamHead2: return(UnsupportedTag.Create(SwfTagType.SoundStreamHead2)); case (int)SwfTagType.SoundStreamBlock: return(UnsupportedTag.Create(SwfTagType.SoundStreamBlock)); // Buttons case (int)SwfTagType.DefineButton: return(UnsupportedTag.Create(SwfTagType.DefineButton)); case (int)SwfTagType.DefineButton2: return(UnsupportedTag.Create(SwfTagType.DefineButton2)); case (int)SwfTagType.DefineButtonCxform: return(UnsupportedTag.Create(SwfTagType.DefineButtonCxform)); case (int)SwfTagType.DefineButtonSound: return(UnsupportedTag.Create(SwfTagType.DefineButtonSound)); // Sprites and Movie Clips case (int)SwfTagType.DefineSprite: return(DefineSpriteTag.Create(reader)); // Video case (int)SwfTagType.DefineVideoStream: return(UnsupportedTag.Create(SwfTagType.DefineVideoStream)); case (int)SwfTagType.VideoFrame: return(UnsupportedTag.Create(SwfTagType.VideoFrame)); // Metadata case (int)SwfTagType.FileAttributes: return(FileAttributesTag.Create(reader)); case (int)SwfTagType.EnableTelemetry: return(EnableTelemetryTag.Create(reader)); case (int)SwfTagType.DefineBinaryData: return(DefineBinaryDataTag.Create(reader)); default: return(UnknownTag.Create(tag_data.TagId)); } }
ITagFormatter ISwfTagVisitor <object, ITagFormatter> .Visit(DoABCTag tag, object arg) { return(new DoABCTagFormatter()); }
public SwfDisplayList Visit(DoABCTag tag, SwfDisplayList dl) { return(dl); }
protected virtual TagItem ReadTag(HeaderRecord header, FlashReader input) { TagItem tag = null; switch (header.Kind) { case TagKind.DefineBinaryData: tag = new DefineBinaryDataTag(header, input); break; case TagKind.DefineBitsLossless2: tag = new DefineBitsLossless2Tag(header, input); break; case TagKind.DefineFontName: tag = new DefineFontNameTag(header, input); break; case TagKind.DefineSound: tag = new DefineSoundTag(header, input); break; case TagKind.DoABC: tag = new DoABCTag(header, input); break; case TagKind.End: tag = new EndTag(header); break; case TagKind.ExportAssets: tag = new ExportAssetsTag(header, input); break; case TagKind.FileAttributes: tag = new FileAttributesTag(header, input); break; case TagKind.FrameLabel: tag = new FrameLabelTag(header, input); break; case TagKind.ProductInfo: tag = new ProductInfoTag(header, input); break; case TagKind.ScriptLimits: tag = new ScriptLimitsTag(header, input); break; case TagKind.SetBackgroundColor: tag = new SetBackgroundColorTag(header, input); break; case TagKind.ShowFrame: tag = new ShowFrameTag(header); break; case TagKind.SymbolClass: tag = new SymbolClassTag(header, input); break; default: case TagKind.Unknown: tag = new UnknownTag(header, input); break; } return(tag); }