示例#1
0
        private void ProcessObjectDataTag(FrontendObject frontendObject, ObjectDataTag objectDataTag)
        {
            frontendObject.Position = objectDataTag.Data.Position;
            frontendObject.Pivot    = objectDataTag.Data.Pivot;
            frontendObject.Color    = objectDataTag.Data.Color;
            frontendObject.Rotation = objectDataTag.Data.Rotation;
            frontendObject.Size     = objectDataTag.Data.Size;

            if (objectDataTag.Data is FEImageData imageData)
            {
                FrontendImage image = (FrontendImage)frontendObject;
                image.UpperLeft  = imageData.UpperLeft;
                image.LowerRight = imageData.LowerRight;
            }

            if (objectDataTag.Data is FEMultiImageData multiImageData)
            {
                FrontendMultiImage multiImage = (FrontendMultiImage)frontendObject;
                multiImage.PivotRotation = multiImageData.PivotRotation;
                multiImage.TopLeftUV     = multiImageData.TopLeftUV;
                multiImage.BottomRightUV = multiImageData.BottomRightUV;
            }

            if (objectDataTag.Data is FEColoredImageData coloredImageData)
            {
                FrontendColoredImage coloredImage = (FrontendColoredImage)frontendObject;
                coloredImage.VertexColors = coloredImageData.VertexColors;
            }
        }
示例#2
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, Package package,
                           ushort id,
                           ushort length)
 {
     FrontendObject.InitializeData();
     FrontendObject.Data.Read(br);
 }
示例#3
0
        private FrontendObject ProcessObjectTypeTag(FrontendObject frontendObject, ObjectTypeTag objectTypeTag)
        {
            FrontendObject newInstance;

            switch (objectTypeTag.Type)
            {
            case FEObjType.FE_Image:
                newInstance = new FrontendImage(frontendObject);
                break;

            case FEObjType.FE_Group:
                newInstance = new FrontendGroup(frontendObject);
                break;

            case FEObjType.FE_String:
                newInstance = new FrontendString(frontendObject);
                break;

            case FEObjType.FE_MultiImage:
                newInstance = new FrontendMultiImage(frontendObject);
                break;

            case FEObjType.FE_ColoredImage:
                newInstance = new FrontendColoredImage(frontendObject);
                break;

            default:
                throw new IndexOutOfRangeException($"cannot handle object type: {objectTypeTag.Type}");
            }

            newInstance.Type = objectTypeTag.Type;

            return(newInstance);
        }
示例#4
0
 private void ProcessTag(FrontendObject frontendObject, FrontendScript frontendScript, FrontendTag tag)
 {
     switch (tag)
     {
     case ScriptHeaderTag scriptHeaderTag:
         ProcessScriptHeaderTag(frontendObject, frontendScript, scriptHeaderTag);
         break;
     }
 }
示例#5
0
        public override FrontendObject Read(FrontendPackage package, ObjectReaderState readerState, BinaryReader reader)
        {
            FrontendObject    newFrontendObject = FrontendObject;
            FrontendTagStream tagStream         = new FrontendObjectTagStream(reader, readerState.CurrentChunkBlock, readerState.CurrentChunkBlock.Size);

            while (tagStream.HasTag())
            {
                FrontendTag tag = tagStream.NextTag(newFrontendObject);
                //Debug.WriteLine("OBJECT TAG {0}", tag);
                newFrontendObject = ProcessTag(newFrontendObject, tag);
            }

            return(newFrontendObject);
        }
示例#6
0
        private FrontendObject ProcessTag(FrontendObject frontendObject, FrontendTag tag)
        {
            switch (tag)
            {
            case ObjectTypeTag objectTypeTag:
                return(ProcessObjectTypeTag(frontendObject, objectTypeTag));

            case StringBufferTextTag stringBufferTextTag when frontendObject is FrontendString frontendString:
                return(ProcessStringBufferTextTag(frontendString, stringBufferTextTag));

            case StringBufferFormattingTag stringBufferFormattingTag when frontendObject is FrontendString frontendString:
                return(ProcessStringBufferFormattingTag(frontendString, stringBufferFormattingTag));

            case StringBufferLeadingTag stringBufferLeadingTag when frontendObject is FrontendString frontendString:
                return(ProcessStringBufferLeadingTag(frontendString, stringBufferLeadingTag));

            case StringBufferLabelHashTag stringBufferLabelHashTag when frontendObject is FrontendString frontendString:
                return(ProcessStringBufferLabelHashTag(frontendString, stringBufferLabelHashTag));

            case StringBufferMaxWidthTag stringBufferMaxWidthTag when frontendObject is FrontendString frontendString:
                return(ProcessStringBufferMaxWidthTag(frontendString, stringBufferMaxWidthTag));

            case ObjectHashTag objectHashTag:
                frontendObject.NameHash = objectHashTag.Hash;
                break;

            case ObjectReferenceTag objectReferenceTag:
                ProcessObjectReferenceTag(frontendObject, objectReferenceTag);
                break;

            case ImageInfoTag imageInfoTag when frontendObject is FrontendImage frontendImage:
                ProcessImageInfoTag(frontendImage, imageInfoTag);
                break;

            case ObjectDataTag objectDataTag:
                ProcessObjectDataTag(frontendObject, objectDataTag);
                break;

            default:
                //Debug.WriteLine("WARN: Unprocessed tag - {0}", tag.GetType());
                break;
            }

            return(frontendObject);
        }
示例#7
0
        private FrontendObject ProcessTag(FrontendObject frontendObject, FrontendChunkBlock frontendChunkBlock, FrontendTag tag)
        {
            switch (tag)
            {
            case MessageResponseInfoTag messageResponseInfoTag:
                ProcessMessageResponseInfoTag(frontendObject, frontendChunkBlock, messageResponseInfoTag);
                break;

            case ResponseIdTag responseIdTag:
                ProcessResponseIdTag(frontendObject, frontendChunkBlock, responseIdTag);
                break;

            case ResponseParamTag responseParamTag:
                ProcessResponseParamTag(frontendObject, frontendChunkBlock, responseParamTag);
                break;

            case ResponseTargetTag responseTargetTag:
                ProcessResponseTargetTag(frontendObject, frontendChunkBlock, responseTargetTag);
                break;
            }

            return(frontendObject);
        }
示例#8
0
 public MessageResponseInfoTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#9
0
 public StringBufferLabelHashTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#10
0
 public ObjectParentTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#11
0
 public ObjectTypeTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#12
0
 public ScriptEventsTag(FrontendObject frontendObject, FrontendScript frontendScript) : base(frontendObject, frontendScript)
 {
 }
示例#13
0
 public ObjectReferenceTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#14
0
 public ScriptChainTag(FrontendObject frontendObject, FrontendScript frontendScript) : base(frontendObject, frontendScript)
 {
 }
示例#15
0
 public StringBufferFormattingTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#16
0
 public FrontendImage(FrontendObject original) : base(original)
 {
 }
示例#17
0
 public ResponseParamTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#18
0
 public FrontendString(FrontendObject original) : base(original)
 {
 }
示例#19
0
 public StringBufferTextTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#20
0
 public ObjectDataTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#21
0
 public MultiImageTextureFlagsTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#22
0
 public MessageResponseCountTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
 public FrontendObjectContainerChunk(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#24
0
 public StringBufferLeadingTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#25
0
 public ScriptHeaderTag(FrontendObject frontendObject, FrontendScript frontendScript) : base(frontendObject, frontendScript)
 {
 }
示例#26
0
 private void ProcessScriptHeaderTag(FrontendObject frontendObject, FrontendScript frontendScript, ScriptHeaderTag scriptHeaderTag)
 {
     frontendScript.Id     = scriptHeaderTag.Id;
     frontendScript.Flags  = scriptHeaderTag.Flags;
     frontendScript.Length = scriptHeaderTag.Length;
 }
示例#27
0
 public ScriptUnknownTag(FrontendObject frontendObject, FrontendScript frontendScript) : base(frontendObject, frontendScript)
 {
 }
示例#28
0
 public ScriptDataChunk(FrontendObject frontendObject) : base(frontendObject)
 {
 }
示例#29
0
 public ScriptKeyTrackTag(FrontendObject frontendObject, FrontendScript frontendScript) : base(frontendObject, frontendScript)
 {
 }
示例#30
0
 public ResponseTargetTag(FrontendObject frontendObject) : base(frontendObject)
 {
 }