private void WriteClass(GUIObject obj) { string className = obj.Name; GUIObject root = (obj.GetParent() == null ? obj : null); // Global scope if (root == null) { _Script.AppendLine(); } if (!string.IsNullOrEmpty(obj.GlobalScope)) { AppendCode(obj.GlobalScope, _BaseIdent); _Script.AppendLine(); } // Class name _Script.AppendLine(_BaseIdent + "class " + className + " : Gui::" + obj.GetType().ToString().Substring(obj.GetType().ToString().IndexOf("GUI") + 3)); _Script.AppendLine(_BaseIdent + "{"); // Class fields if (!string.IsNullOrEmpty(obj.ClassFields)) { AppendCode(obj.ClassFields, _BaseIdent + " "); _Script.AppendLine(); } // Constructor _Script.AppendLine(_BaseIdent + " void OnConstruct() override"); _Script.AppendLine(_BaseIdent + " {"); if (root != null && root is GUIScreen) { GUIScreen screen = (GUIScreen)root; if (screen.IsModal) { _Script.AppendLine(_BaseIdent + " SetModal( true );"); } if (screen.IsMultiinstance) { _Script.AppendLine(_BaseIdent + " SetMultiinstance( true );"); } if (screen.IsCloseOnMiss) { _Script.AppendLine(_BaseIdent + " SetCloseOnMiss( true );"); } if (!string.IsNullOrEmpty(screen.AvailableCursors)) { _Script.AppendLine(_BaseIdent + " SetAvailableCursors( " + screen.AvailableCursors + " );"); } if (screen.IsCanMove) { _Script.AppendLine(_BaseIdent + " SetCanMove( true, " + screen.IsMoveIgnoreBorders.ToString().ToLower() + " );"); } } if (!obj.Active) { _Script.AppendLine(_BaseIdent + " SetActive( false );"); } if (!obj.Position.IsEmpty) { _Script.AppendLine(_BaseIdent + " SetPosition( " + obj.Position.X + ", " + obj.Position.Y + " );"); } if (!obj.Size.IsEmpty /*&& !obj.IsAutoSize()*/) { _Script.AppendLine(_BaseIdent + " SetSize( " + obj.Size.Width + ", " + obj.Size.Height + " );"); } if (obj.Anchor != AnchorStyles.None) { _Script.AppendLine(_BaseIdent + " SetAnchor( " + ConvertAnchorStyles(obj.Anchor) + " );"); } if (obj.Dock != DockStyle.None) { _Script.AppendLine(_BaseIdent + " SetDock( " + ConvertDockStyle(obj.Dock) + " );"); } if (obj.IsDraggable) { _Script.AppendLine(_BaseIdent + " SetDraggable( true );"); } if (obj.IsNotHittable) { _Script.AppendLine(_BaseIdent + " SetNotHittable( true );"); } if (obj.CheckTransparentOnHit) { _Script.AppendLine(_BaseIdent + " SetCheckTransparentOnHit( true );"); } if (obj is GUIPanel) { GUIPanel panel = (GUIPanel)obj; if (!string.IsNullOrEmpty(panel.BackgroundImage)) { if (panel.BackgroundImageLayout != ImageLayout.None) { _Script.AppendLine(_BaseIdent + " SetBackgroundImage( \"" + panel.BackgroundImage + "\", " + ConvertImageLayout(panel.BackgroundImageLayout) + " );"); } else { _Script.AppendLine(_BaseIdent + " SetBackgroundImage( \"" + panel.BackgroundImage + "\" );"); } } if (panel.CropContent) { _Script.AppendLine(_BaseIdent + " SetCropContent( true );"); } if (panel.IsVerticalScroll || panel.IsHorizontalScroll) { _Script.AppendLine(_BaseIdent + " SetAutoScroll( " + (panel.IsVerticalScroll ? "true" : "false") + ", " + (panel.IsHorizontalScroll ? "true" : "false") + " );"); } } if (obj is GUIButton) { GUIButton button = (GUIButton)obj; if (button.IsDisabled) { _Script.AppendLine(_BaseIdent + " SetCondition( false );"); } if (!string.IsNullOrEmpty(button.PressedImage)) { if (button.PressedImageLayout != ImageLayout.None) { _Script.AppendLine(_BaseIdent + " SetPressedImage( \"" + button.PressedImage + "\", " + ConvertImageLayout(button.PressedImageLayout) + " );"); } else { _Script.AppendLine(_BaseIdent + " SetPressedImage( \"" + button.PressedImage + "\" );"); } } if (!string.IsNullOrEmpty(button.HoverImage)) { if (button.HoverImageLayout != ImageLayout.None) { _Script.AppendLine(_BaseIdent + " SetHoverImage( \"" + button.HoverImage + "\", " + ConvertImageLayout(button.HoverImageLayout) + " );"); } else { _Script.AppendLine(_BaseIdent + " SetHoverImage( \"" + button.HoverImage + "\" );"); } } if (!string.IsNullOrEmpty(button.DisabledImage)) { if (button.DisabledImageLayout != ImageLayout.None) { _Script.AppendLine(_BaseIdent + " SetDisabledImage( \"" + button.DisabledImage + "\", " + ConvertImageLayout(button.DisabledImageLayout) + " );"); } else { _Script.AppendLine(_BaseIdent + " SetDisabledImage( \"" + button.DisabledImage + "\" );"); } } } if (obj is GUICheckBox) { GUICheckBox checkBox = (GUICheckBox)obj; if (!string.IsNullOrEmpty(checkBox.IsChecked)) { _Script.AppendLine(_BaseIdent + " SetChecked( " + checkBox.IsChecked + " );"); } } if (obj is GUIText) { GUIText text = (GUIText)obj; if (!string.IsNullOrEmpty(text.Text)) { _Script.AppendLine(_BaseIdent + " SetText( " + text.Text + " );"); } if (!string.IsNullOrEmpty(text.Font)) { _Script.AppendLine(_BaseIdent + " SetTextFont( " + text.Font + " );"); } string textFlags = ""; if (text.HorisontalAlignment == StringAlignment.Center) { textFlags += "FT_CENTERX | "; } if (text.VerticalAlignment == StringAlignment.Center) { textFlags += "FT_CENTERY | "; } if (text.HorisontalAlignment == StringAlignment.Far) { textFlags += "FT_CENTERR | "; } if (text.VerticalAlignment == StringAlignment.Far) { textFlags += "FT_BOTTOM | "; } if (text.DrawFromBottom) { textFlags += "FT_UPPER | "; } if (text.NoColorize) { textFlags += "FT_NO_COLORIZE | "; } if (text.Align) { textFlags += "FT_ALIGN | "; } if (text.Bordered) { textFlags += "FT_BORDERED | "; } if (textFlags != "") { textFlags = textFlags.Remove(textFlags.Length - 3); _Script.AppendLine(_BaseIdent + " SetTextFlags( " + textFlags + " );"); } if (!string.IsNullOrEmpty(text.NormalColor)) { _Script.AppendLine(_BaseIdent + " SetTextColor( " + text.NormalColor + " );"); } if (!string.IsNullOrEmpty(text.FocusedColor)) { _Script.AppendLine(_BaseIdent + " SetTextFocusedColor( " + text.FocusedColor + " );"); } } if (obj is GUITextInput) { GUITextInput textInput = (GUITextInput)obj; if (!string.IsNullOrEmpty(textInput.InputLength)) { _Script.AppendLine(_BaseIdent + " SetInputLength( " + textInput.InputLength + " );"); } if (textInput.Password) { _Script.AppendLine(_BaseIdent + " SetInputPassword( \"#\" );"); } } if (obj is GUIMessageBox) { GUIMessageBox messageBox = (GUIMessageBox)obj; if (!string.IsNullOrEmpty(messageBox.InvertMessages)) { _Script.AppendLine(_BaseIdent + " SetInvertMessages( " + messageBox.InvertMessages + " );"); } if (!string.IsNullOrEmpty(messageBox.DisplayedMessages)) { _Script.AppendLine(_BaseIdent + " SetDisplayedMessages( " + messageBox.DisplayedMessages + " );"); } } if (obj is GUIConsole) { GUIConsole console = (GUIConsole)obj; if (console.DisableDeactivation) { _Script.AppendLine(_BaseIdent + " SetDisableDeactivation( true );"); } if (!string.IsNullOrEmpty(console.HistoryStorageName)) { _Script.AppendLine(_BaseIdent + " SetHistoryStorage( " + console.HistoryStorageName + " );"); } if (!string.IsNullOrEmpty(console.HistoryMaxLength)) { _Script.AppendLine(_BaseIdent + " SetHistoryMaxLength( " + console.HistoryMaxLength + " );"); } } if (obj is GUIGrid) { GUIGrid grid = (GUIGrid)obj; if (!string.IsNullOrEmpty(grid.CellPrototype)) { _Script.AppendLine(_BaseIdent + " SetCellPrototype( " + grid.CellPrototype + " );"); } if (!string.IsNullOrEmpty(grid.GridSize)) { _Script.AppendLine(_BaseIdent + " SetGridSize( " + grid.GridSize + " );"); } if (grid.Columns != 0) { _Script.AppendLine(_BaseIdent + " SetColumns( " + grid.Columns + " );"); } if (!grid.Padding.IsEmpty) { _Script.AppendLine(_BaseIdent + " SetPadding( " + grid.Padding.Width + ", " + grid.Padding.Height + " );"); } } if (obj is GUIItemView) { GUIItemView itemView = (GUIItemView)obj; if (!string.IsNullOrEmpty(itemView.UserData)) { _Script.AppendLine(_BaseIdent + " SetUserData( " + itemView.UserData + " );"); } if (!string.IsNullOrEmpty(itemView.UserDataExt)) { _Script.AppendLine(_BaseIdent + " SetUserDataExt( " + itemView.UserDataExt + " );"); } if (itemView.UseSorting) { _Script.AppendLine(_BaseIdent + " SetUseSorting( true );"); } } _Script.AppendLine(_BaseIdent + " }"); // Callbacks WriteClassFunction("void OnInit() override", obj.OnInit); WriteClassFunction("void OnShow( dictionary params ) override", obj.OnShow); WriteClassFunction("void OnHide() override", obj.OnHide); WriteClassFunction("void OnAppear() override", obj.OnAppear); WriteClassFunction("void OnDisappear() override", obj.OnDisappear); WriteClassFunction("void OnDraw() override", obj.OnDraw); WriteClassFunction("void OnPostDraw() override", obj.OnPostDraw); WriteClassFunction("void OnMove( int deltaX, int deltaY ) override", obj.OnMove); WriteClassFunction("void OnMouseDown( int button ) override", obj.OnMouseDown); WriteClassFunction("void OnMouseUp( int button, bool lost ) override", obj.OnMouseUp); WriteClassFunction("void OnMousePressed( int button ) override", obj.OnMousePressed); WriteClassFunction("void OnLMousePressed() override", obj.OnLMousePressed); WriteClassFunction("void OnRMousePressed() override", obj.OnRMousePressed); WriteClassFunction("void OnMouseClick( int button ) override", obj.OnMouseClick); WriteClassFunction("void OnLMouseClick() override", obj.OnLMouseClick); WriteClassFunction("void OnRMouseClick() override", obj.OnRMouseClick); WriteClassFunction("void OnMouseMove() override", obj.OnMouseMove); WriteClassFunction("void OnGlobalMouseDown( int button ) override", obj.OnGlobalMouseDown); WriteClassFunction("void OnGlobalMouseUp( int button ) override", obj.OnGlobalMouseUp); WriteClassFunction("void OnGlobalMousePressed( int button ) override", obj.OnGlobalMousePressed); WriteClassFunction("void OnGlobalMouseClick( int button ) override", obj.OnGlobalMouseClick); WriteClassFunction("void OnGlobalMouseMove() override", obj.OnGlobalMouseMove); WriteClassFunction("void OnInput( uint8 key, string text ) override", obj.OnInput); WriteClassFunction("void OnGlobalInput( uint8 key, string text ) override", obj.OnGlobalInput); WriteClassFunction("void OnActiveChanged() override", obj.OnActiveChanged); WriteClassFunction("void OnFocusChanged() override", obj.OnFocusChanged); WriteClassFunction("void OnHoverChanged() override", obj.OnHoverChanged); WriteClassFunction("void OnDragChanged() override", obj.OnDragChanged); WriteClassFunction("void OnResizeGrid( Gui::Object cell, uint cellIndex ) override", obj.OnResizeGrid); WriteClassFunction("void OnDrawItem( Item item, Gui::Object cell, uint cellIndex ) override", obj.OnDrawItem); if (obj is GUICheckBox) { WriteClassFunction("void OnCheckedChanged() override", ((GUICheckBox)obj).OnCheckedChanged); } if (obj is GUIItemView) { WriteClassFunction("Item[] OnGetItems() override", ((GUIItemView)obj).OnGetItems); WriteClassFunction("int OnCheckItem( Item item ) override", ((GUIItemView)obj).OnCheckItem); } // Subtypes if (obj is GUIText) { GUIText text = (GUIText)obj; if (!string.IsNullOrEmpty(text.DynamicText)) { _Script.AppendLine(); _Script.AppendLine(_BaseIdent + " string get_Text() override"); _Script.AppendLine(_BaseIdent + " {"); AppendCode(text.DynamicText, _BaseIdent + " "); _Script.AppendLine(_BaseIdent + " }"); } } // Close _Script.AppendLine(_BaseIdent + "}"); }
public GUIScreen(GUIPanel parent) : base(parent) { IsModal = true; IsCanMove = true; }