ExportAsset and SymbolClass tags parser

This commit is contained in:
2016-08-31 22:02:42 +07:00
parent 1660f52952
commit 1639cf8d3d
9 changed files with 118 additions and 6 deletions

View File

@@ -66,6 +66,7 @@
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\DefineShapeTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\DefineSpriteTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\EndTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\ExportAssetsTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\FileAttributesTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\FrameLabelTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\PlaceObject2Tag.cs" />
@@ -77,6 +78,7 @@
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\ShowFrameTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\SwfTagBase.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\SwfTagVisitor.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\SymbolClassTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\UnknownTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTags\UnsupportedTag.cs" />
<Compile Include="Assets\FlashTools\Scripts\Internal\Editor\SwfTools\SwfTypes\SwfBlendMode.cs" />

View File

@@ -176,6 +176,14 @@ namespace FlashTools.Internal.SwfTools {
return dl;
}
public SwfDisplayList Visit(ExportAssetsTag tag, SwfDisplayList dl) {
return dl;
}
public SwfDisplayList Visit(SymbolClassTag tag, SwfDisplayList dl) {
return dl;
}
public SwfDisplayList Visit(DefineSceneAndFrameLabelDataTag tag, SwfDisplayList dl) {
return dl;
}

View File

@@ -35,15 +35,13 @@ namespace FlashTools.Internal.SwfTools.SwfTags {
for ( var i = 0; i < scenes.Capacity; ++i ) {
scenes.Add(new SceneOffsetData{
Offset = reader.ReadEncodedU32(),
Name = reader.ReadString()
});
Name = reader.ReadString()});
}
var frames = new List<FrameLabelData>((int)reader.ReadEncodedU32());
for ( var i = 0; i < frames.Capacity; ++i ) {
frames.Add(new FrameLabelData{
Number = reader.ReadEncodedU32(),
Label = reader.ReadString()
});
Label = reader.ReadString()});
}
return new DefineSceneAndFrameLabelDataTag{
Scenes = scenes,

View File

@@ -0,0 +1,38 @@
using System.Collections.Generic;
namespace FlashTools.Internal.SwfTools.SwfTags {
public class ExportAssetsTag : SwfTagBase {
public struct AssetTagData {
public ushort Tag;
public string Name;
}
public List<AssetTagData> AssetTags;
public override SwfTagType TagType {
get { return SwfTagType.ExportAssets; }
}
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
return visitor.Visit(this, arg);
}
public override string ToString() {
return string.Format(
"ExportAssetsTag. " +
"AssetTags: {0}",
AssetTags.Count);
}
public static ExportAssetsTag Create(SwfStreamReader reader) {
var asset_tags = new List<AssetTagData>((int)reader.ReadUInt16());
for ( var i = 0; i < asset_tags.Capacity; ++i ) {
asset_tags.Add(new AssetTagData{
Tag = reader.ReadUInt16(),
Name = reader.ReadString()});
}
return new ExportAssetsTag{
AssetTags = asset_tags};
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 91d525c5510d747daa79a206efa73ee8
timeCreated: 1472655466
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -19,14 +19,14 @@
FrameLabel = 43,
//Protect = 24,
End = 0,
//ExportAssets = 56,
ExportAssets = 56,
//ImportAssets = 57,
//EnableDebugger = 58,
//EnableDebugger2 = 64,
//ScriptLimits = 65,
SetTabIndex = 66, // Unsupported
//ImportAssets2 = 71,
//SymbolClass = 76,
SymbolClass = 76,
//Metadata = 77,
DefineScalingGrid = 78, // Unsupported
DefineSceneAndFrameLabelData = 86,
@@ -167,7 +167,9 @@
case (int)SwfTagType.SetBackgroundColor: return SetBackgroundColorTag.Create(reader);
case (int)SwfTagType.FrameLabel: return FrameLabelTag.Create(reader);
case (int)SwfTagType.End: return EndTag.Create(reader);
case (int)SwfTagType.ExportAssets: return ExportAssetsTag.Create(reader);
case (int)SwfTagType.SetTabIndex: return UnsupportedTag.Create(SwfTagType.SetTabIndex);
case (int)SwfTagType.SymbolClass: return SymbolClassTag.Create(reader);
case (int)SwfTagType.DefineScalingGrid: return UnsupportedTag.Create(SwfTagType.DefineScalingGrid);
case (int)SwfTagType.DefineSceneAndFrameLabelData: return DefineSceneAndFrameLabelDataTag.Create(reader);
// Actions

View File

@@ -9,6 +9,8 @@
TResult Visit(SetBackgroundColorTag tag, TArg arg);
TResult Visit(FrameLabelTag tag, TArg arg);
TResult Visit(EndTag tag, TArg arg);
TResult Visit(ExportAssetsTag tag, TArg arg);
TResult Visit(SymbolClassTag tag, TArg arg);
TResult Visit(DefineSceneAndFrameLabelDataTag tag, TArg arg);
TResult Visit(DefineShapeTag tag, TArg arg);
TResult Visit(DefineShape2Tag tag, TArg arg);

View File

@@ -0,0 +1,38 @@
using System.Collections.Generic;
namespace FlashTools.Internal.SwfTools.SwfTags {
public class SymbolClassTag : SwfTagBase {
public struct SymbolTagData {
public ushort Tag;
public string Name;
}
public List<SymbolTagData> SymbolTags;
public override SwfTagType TagType {
get { return SwfTagType.SymbolClass; }
}
public override TResult AcceptVistor<TArg, TResult>(SwfTagVisitor<TArg, TResult> visitor, TArg arg) {
return visitor.Visit(this, arg);
}
public override string ToString() {
return string.Format(
"SymbolClassTag. " +
"SymbolTags: {0}",
SymbolTags.Count);
}
public static SymbolClassTag Create(SwfStreamReader reader) {
var symbol_tags = new List<SymbolTagData>((int)reader.ReadUInt16());
for ( var i = 0; i < symbol_tags.Capacity; ++i ) {
symbol_tags.Add(new SymbolTagData{
Tag = reader.ReadUInt16(),
Name = reader.ReadString()});
}
return new SymbolClassTag{
SymbolTags = symbol_tags};
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: dc9919be0498b49659aa77f6da045eb9
timeCreated: 1472654295
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: