/// <summary> /// Exports the GUI Slider to disk /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GSLD"); { base.Export(bw); bw.Write(ThumbWidth); bw.Write(ThumbHeight); bw.Write(Scene.GetUniqueTextureID(StartTexture)); bw.Write(Scene.GetUniqueTextureID(MiddleTexture)); bw.Write(Scene.GetUniqueTextureID(EndTexture)); bw.Write(Scene.GetUniqueTextureID(ThumbTexture)); bw.Write(Min); bw.Write(Max); bw.Write(Step); bw.Write((UInt32)0); bw.Write(Color.White.ToArgb()); } fourCCStack.Pop(); }
/// <summary> /// Exports the GUI Label to disk /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GLBL"); base.Export(bw); bw.Write(mFontID); bw.Write(Color.White.ToArgb()); bw.Write(1.0f); // Scale X bw.Write(1.0f); // Scale Y bw.Write(0.0f); // Skew bw.Write(0); // Drop shadow bw.Write((UInt32)mHorizontalAlignment); bw.Write((UInt32)mVerticalAlignment); bw.Write(mLeading); bw.Write(mTracking); bw.Write((UInt32)mTextFit); byte[] bytes = Utils.StringToBytes(mText, 4); bw.Write(bytes.Length); bw.Write(bytes); fourCCStack.Pop(); }
/// <summary> /// Exports the GUI Sprite to disk /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GBTT"); base.Export(bw); bw.Write(Scene.GetUniqueTextureID(mDefaultTextureID)); bw.Write(Scene.GetUniqueTextureID(mDownTextureID)); bw.Write(mLabel.FontID); bw.Write(DefaultColor.ToArgb()); bw.Write(DownColor.ToArgb()); bw.Write(1.0f); bw.Write(1.0f); bw.Write((UInt32)HorizontalAlignment); bw.Write((UInt32)VerticalAlignment); bw.Write(OnClickActionList.Count); byte[] bytes = Utils.StringToBytes(mLabel.Text, 4); bw.Write(bytes.Length); bw.Write(bytes); foreach (UI.Actions.Action action in this.OnClickActionList) { action.Export(bw); } fourCCStack.Pop(); }
/// <summary> /// Exports this frame to a binary stream /// </summary> /// <param name="bw"></param> public virtual void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("KFRM"); { bw.Write(this.Frame); bw.Write((int)this.EaseFunction); bw.Write(this.EaseAmount); bw.Write(this.LeftAnchor.AbsoluteValue); bw.Write(this.LeftAnchor.RatioValue); bw.Write(this.RightAnchor.AbsoluteValue); bw.Write(this.RightAnchor.RatioValue); bw.Write(this.TopAnchor.AbsoluteValue); bw.Write(this.TopAnchor.RatioValue); bw.Write(this.BottomAnchor.AbsoluteValue); bw.Write(this.BottomAnchor.RatioValue); this.Layout.Export(bw); } fourCCStack.Pop(); }
/// <summary> /// Exports the layout to binary format /// </summary> /// <param name="bw"></param> public virtual void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("CLLT"); { ExportBase(bw); } fourCCStack.Pop(); }
/// <summary> /// Exports the action /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("MSGA"); { bw.Write(this.Scene.GetUniqueMessageID(this.Message)); } fourCCStack.Pop(); }
/// <summary> /// Exports the layout to binary format /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GPLT"); { ExportBase(bw); } fourCCStack.Pop(); }
/// <summary> /// Exports the group /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GGRP"); { base.Export(bw); base.ExportControls(bw); } fourCCStack.Pop(); }
/// <summary> /// Exports the action /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("SNDA"); { bw.Write(this.Scene.GetUniqueSoundID(this.Sound)); bw.Write((float)mVolume); } fourCCStack.Pop(); }
/// <summary> /// Exports the table /// </summary> /// <param name="bw"></param> public override void Export(Otter.Export.PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GTBL"); { base.Export(bw); bw.Write(DefaultRowHeight); bw.Write(RowSpacing); } fourCCStack.Pop(); }
/// <summary> /// Exports the Toggle /// </summary> /// <param name="bw"></param> public override void Export(Otter.Export.PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GTGL"); { base.Export(bw); bw.Write(Scene.GetUniqueTextureID(OnTexture)); bw.Write(Scene.GetUniqueTextureID(OffTexture)); bw.Write(Color.White.ToArgb()); } fourCCStack.Pop(); }
/// <summary> /// Exports the GUI Mask to disk /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GMSK"); { base.Export(bw); bw.Write(Scene.GetUniqueTextureID(mTextureID)); bw.Write(0.0f); // Skew bw.Write((UInt32)mFlipType); } fourCCStack.Pop(); }
/// <summary> /// Exports the Circle /// </summary> /// <param name="bw"></param> public override void Export(Otter.Export.PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("CIRC"); { base.Export(bw); bw.Write((UInt32)Segments); bw.Write((UInt32)Radius); bw.Write((UInt32)Width); bw.Write((UInt32)this.Color.ToArgb()); } fourCCStack.Pop(); }
/// <summary> /// Exports the label layout /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("LBLT"); { ExportBase(bw); bw.Write(Color); bw.Write(Scale.Width); bw.Write(Scale.Height); bw.Write(Skew); bw.Write(DropShadow); } fourCCStack.Pop(); }
/// <summary> /// Exports the circle layout /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("CRLT"); { // Export the base layout properties ExportBase(bw); // Export our specific properties bw.Write((UInt32)Radius); bw.Write((UInt32)Width); bw.Write((UInt32)Color.ToArgb()); } fourCCStack.Pop(); }
/// <summary> /// Exports the action list /// </summary> /// <param name="bw"></param> public void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("MCFR"); { byte[] bytes = Utils.StringToBytes(mName, 64); bytes[63] = 0; bw.Write(bytes, 0, 64); bw.Write(this.Frame); bw.Write(this.Actions.Count); foreach (UI.Actions.Action action in this.Actions) { action.Export(bw); } } fourCCStack.Pop(); }
/// <summary> /// Exports the GUI Font /// </summary> /// <param name="bw"></param> public void Export(PlatformBinaryWriter bw) { byte[] bytes = Utils.StringToBytes(mName, 64); bytes[63] = 0; FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GFNT"); // Font information bw.Write(this.ID); bw.Write(bytes, 0, 64); bw.Write(this.FontSize); bw.Write(AtlasSize.Width); bw.Write(AtlasSize.Height); bw.Write(this.mMaxTop); bw.Write(this.mTextures.Count); // Now write the glyph data bw.Write(this.mCharInfoList.Count); foreach (NewCharInfo charInfo in this.mCharInfoList) { bw.Write(charInfo.mCharCode); bw.Write(charInfo.mImageGlyph); bw.Write(charInfo.mX); bw.Write(charInfo.mY); bw.Write(charInfo.mW); bw.Write(charInfo.mH); bw.Write(charInfo.mTop); bw.Write(charInfo.mAdvance); bw.Write(charInfo.mLeftBearing); bw.Write(charInfo.mAtlasIndex); } fourCCStack.Pop(); }
/// <summary> /// Exports the GUI Scene to a file /// </summary> /// <param name="bw"></param> public void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); fourCCStack.Push("GGSC"); { bw.Write(Otter.Properties.Settings.Default.DataVersion); bw.Write((uint)this.ID); bw.Write(GUIProject.CurrentProject.Fonts.Count); bw.Write(Textures.Count + TextureAtlasses.Count); bw.Write(Sounds.Count); bw.Write(Views.Count); bw.Write(Messages.Count); int fontOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - font data start int textureOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - texture data start int soundOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - sound data start int viewDataOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - sceneView data start int msgDataOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - message data start; int dataStartPos = (int)bw.BaseStream.Position; int pos = 0; // Fonts pos = (int)bw.BaseStream.Position; bw.Seek(fontOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (GUIFont font in GUIProject.CurrentProject.Fonts) { font.Export(bw); } // Textures pos = (int)bw.BaseStream.Position; bw.Seek(textureOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); // Write out the texture atlasses first foreach (TextureAtlas textureAtlas in TextureAtlasses) { char[] textureFile = new char[256]; textureAtlas.mFilename.CopyTo(0, textureFile, 0, Math.Min(255, textureAtlas.mFilename.Length)); bw.Write(textureAtlas.mID); bw.Write(textureFile); bw.Write(0); // Placeholder : Reference Count bw.Write((uint)0); bw.Write(0.0f); bw.Write(0.0f); bw.Write(1.0f); bw.Write(1.0f); } foreach (TextureInfo textureInfo in Textures) { char[] textureFile = new char[256]; textureInfo.Filename.CopyTo(0, textureFile, 0, Math.Min(255, textureInfo.Filename.Length)); bw.Write(GetUniqueTextureID(textureInfo.ID)); bw.Write(textureFile); bw.Write(0); // Placeholder : Reference Count FinalTexture finalTexture = GetFinalTexture(textureInfo.ID); bw.Write(finalTexture.mFinalTextureID); bw.Write(finalTexture.mRectangle.X); bw.Write(finalTexture.mRectangle.Y); bw.Write(finalTexture.mRectangle.X + finalTexture.mRectangle.Width); bw.Write(finalTexture.mRectangle.Y + finalTexture.mRectangle.Height); } // Sounds pos = (int)bw.BaseStream.Position; bw.Seek(soundOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (SoundInfo soundInfo in Sounds) { char[] soundIdentifier = new char[256]; if (soundInfo.Filename != "") { soundInfo.Filename.CopyTo(0, soundIdentifier, 0, Math.Min(255, soundInfo.Filename.Length)); } else { soundInfo.Name.CopyTo(0, soundIdentifier, 0, Math.Min(255, soundInfo.Name.Length)); } bw.Write(GetUniqueSoundID(soundInfo.ID)); bw.Write(soundIdentifier); bw.Write(0); // Placeholder : Reference Count } // Views pos = (int)bw.BaseStream.Position; bw.Seek(viewDataOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (GUIView view in Views) { view.Export(bw); } // Messages pos = (int)bw.BaseStream.Position; bw.Seek(msgDataOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (UI.Message msg in Messages) { bw.Write(this.GetUniqueMessageID(msg.ID)); byte[] bytes = Utils.StringToBytes(msg.Text, 64); bytes[63] = 0; bw.Write(bytes, 0, 64); } // Write an end-marker for the scene file, to verify all data was loaded properly bw.Write((UInt32)0x12344321); } fourCCStack.Pop(); }
/// <summary> /// Exports the GUI ActiveView /// </summary> /// <param name="bw"></param> public override void Export(PlatformBinaryWriter bw) { FourCCStack fourCCStack = new FourCCStack(bw); // [G]ame[G]UI [V]ie[W] fourCCStack.Push("GGVW"); base.Export(bw); { List <int> textureList = TextureIDs; List <int> soundList = SoundIDs; bw.Write(textureList.Count); bw.Write(soundList.Count); bw.Write(Controls.Count); int textureOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - texture data start int soundsOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - sound data start int controlsOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - control data start int animationListOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - channel list data start int dataStartPos = (int)bw.BaseStream.Position; int pos = 0; // Textures pos = (int)bw.BaseStream.Position; bw.Seek(textureOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (int texID in textureList) { bw.Write(Scene.GetUniqueTextureID(texID)); } // Sounds pos = (int)bw.BaseStream.Position; bw.Seek(soundsOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (int soundID in soundList) { bw.Write(Scene.GetUniqueSoundID(soundID)); } // Controls pos = (int)bw.BaseStream.Position; bw.Seek(controlsOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); foreach (GUIControl control in Controls) { control.Export(bw); } // Animation List pos = (int)bw.BaseStream.Position; bw.Seek(animationListOffsetPos, SeekOrigin.Begin); bw.Write(pos - dataStartPos); bw.Seek(0, SeekOrigin.End); // [G]ame[G]UI [A]nimation [L]ist fourCCStack.Push("GGAL"); { bw.Write(Animations.Count); foreach (GUIAnimation animation in Animations) { List <GUIAnimationChannel> channels = null; try { channels = animation.GetSortedChannels(this.Controls); } catch (Exception e) { System.Console.WriteLine("Exception : " + e); channels = animation.AnimationChannels; } // [G]ame[G]UI [A][N]imation fourCCStack.Push("GGAN"); { byte[] bytes = Utils.StringToBytes(animation.Name, 64); bytes[63] = 0; bw.Write(bytes, 0, 64); bw.Write(animation.NumFrames); bw.Write(animation.RepeatStart); bw.Write(animation.RepeatEnd); bw.Write(channels.Count); bw.Write(animation.MainChannelFrames.Count); int actionlistDataOffsetPos = (int)bw.BaseStream.Position; bw.Write(0); // Placeholder - action list data start; int anmDataStartPos = (int)bw.BaseStream.Position; int anmPos = 0; foreach (GUIAnimationChannel channel in channels) { // [G]ame[G]UI [A]nimation [C]hannel fourCCStack.Push("GGAC"); { bw.Write(channel.ControlID); bw.Write(channel.KeyFrames.Count); // Make sure we sort the keyframes prior to export channel.KeyFrames.Sort((a, b) => ((int)a.Frame - (int)b.Frame)); foreach (KeyFrame keyFrame in channel.KeyFrames) { keyFrame.Export(bw); } } fourCCStack.Pop(); } anmPos = (int)bw.BaseStream.Position; bw.Seek(actionlistDataOffsetPos, SeekOrigin.Begin); bw.Write(anmPos - anmDataStartPos); bw.Seek(0, SeekOrigin.End); foreach (MainChannelFrame mainChannelFrame in animation.MainChannelFrames) { mainChannelFrame.Export(bw); } } fourCCStack.Pop(); } } fourCCStack.Pop(); } fourCCStack.Pop(); }