void UI_RegisterRowsNode (uiBehaviour_t *behaviour) { behaviour->name = "rows"; behaviour->manager = new uiRowsNode(); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Background color for odd elements */ UI_RegisterNodeProperty(behaviour, "color1", V_COLOR, uiNode_t, color); /* Background color for even elements */ UI_RegisterNodeProperty(behaviour, "color2", V_COLOR, uiNode_t, selectedColor); /* Element height */ UI_RegisterExtradataNodeProperty(behaviour, "lineheight", V_INT, rowsExtraData_t, lineHeight); /* Element number on the top of the list. It is used to scroll the node content. */ UI_RegisterExtradataNodeProperty(behaviour, "current", V_INT, rowsExtraData_t, current); }
void UI_RegisterSequenceNode (uiBehaviour_t* behaviour) { localBehaviour = behaviour; behaviour->name = "sequence"; behaviour->manager = UINodePtr(new uiSequenceNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->lua_SWIG_typeinfo = UI_SWIG_TypeQuery("uiSequenceNode_t *"); /** sequence script id */ propertySource = UI_RegisterExtradataNodeProperty(behaviour, "src", V_CVAR_OR_STRING, EXTRADATA_TYPE, source); /** Called when the sequence end */ UI_RegisterExtradataNodeProperty(behaviour, "onEnd", V_UI_ACTION, EXTRADATA_TYPE, onEnd); }
void UI_RegisterTextNode (uiBehaviour_t* behaviour) { behaviour->name = "text"; behaviour->extends = "abstractscrollable"; behaviour->manager = UINodePtr(new uiTextNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Current selected line */ UI_RegisterExtradataNodeProperty(behaviour, "lineselected", V_INT, textExtraData_t, textLineSelected); /* Text of the current selected line */ UI_RegisterExtradataNodeProperty(behaviour, "textselected", V_CVAR_OR_STRING, textExtraData_t, textSelected); /* One of the list TEXT_STANDARD, TEXT_LIST, TEXT_UFOPEDIA, TEXT_BUILDINGS, * TEXT_BUILDING_INFO, TEXT_RESEARCH, TEXT_RESEARCH_INFO, TEXT_POPUP, * TEXT_POPUP_INFO, TEXT_AIRCRAFT_LIST, TEXT_AIRCRAFT, TEXT_AIRCRAFT_INFO, * TEXT_MESSAGESYSTEM, TEXT_CAMPAIGN_LIST, TEXT_MULTISELECTION. * There are more IDs in use - see ui_data.h for an up-to-date list. * Display a shared content registered by the client code. */ UI_RegisterExtradataNodeProperty(behaviour, "dataid", V_UI_DATAID, textExtraData_t, dataID); /* Size between two lines. Default value is 0, in this case it use a line height according to the font size. */ UI_RegisterExtradataNodeProperty(behaviour, "lineheight", V_INT, textExtraData_t, lineHeight); /* Bigger size of the width replacing a tab character. */ UI_RegisterExtradataNodeProperty(behaviour, "tabwidth", V_INT, textExtraData_t, tabWidth); /* What to do with text lines longer than node width. Default is to wordwrap them to make multiple lines. * It can be LONGLINES_WRAP, LONGLINES_CHOP, LONGLINES_PRETTYCHOP */ UI_RegisterExtradataNodeProperty(behaviour, "longlines", V_INT, textExtraData_t, longlines); /* Number of visible line we can display into the node height. * Currently, it translate the scrollable property <code>viewSize</code> * @todo For a smooth scroll we should split that */ UI_RegisterExtradataNodeProperty(behaviour, "rows", V_INT, textExtraData_t, super.scrollY.viewSize); /* Number of lines contained into the node. * Currently, it translate the scrollable property <code>fullSize</code> * @todo For a smooth scroll we should split that */ UI_RegisterExtradataNodeProperty(behaviour, "lines", V_INT, textExtraData_t, super.scrollY.fullSize); /** Highlight each node elements when the mouse move over the node. * @todo delete it when its possible (need to create a textlist...) */ UI_RegisterExtradataNodeProperty(behaviour, "mousefx", V_BOOL, textExtraData_t, mousefx); Com_RegisterConstInt("LONGLINES_WRAP", LONGLINES_WRAP); Com_RegisterConstInt("LONGLINES_CHOP", LONGLINES_CHOP); Com_RegisterConstInt("LONGLINES_PRETTYCHOP", LONGLINES_PRETTYCHOP); }
void UI_RegisterItemNode (uiBehaviour_t* behaviour) { behaviour->name = "item"; behaviour->extends = "model"; behaviour->manager = UINodePtr(new uiItemNode()); /* Display an item like a container node do it */ UI_RegisterExtradataNodeProperty(behaviour, "containerlike", V_BOOL, modelExtraData_t, containerLike); }
void UI_RegisterAbstractScrollbarNode (uiBehaviour_t* behaviour) { behaviour->name = "abstractscrollbar"; behaviour->isAbstract = true; behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->manager = UINodePtr(new uiAbstractScrollbarNode()); behaviour->lua_SWIG_typeinfo = UI_SWIG_TypeQuery("uiAbstractScrollbarNode_t *"); /* Current position of the scroll. Image of the <code>viewpos</code> from <code>abstractscrollable</code> node. */ UI_RegisterExtradataNodeProperty(behaviour, "current", V_INT, EXTRADATA_TYPE, pos); /* Image of the <code>viewsize</code> from <code>abstractscrollable</code> node. */ UI_RegisterExtradataNodeProperty(behaviour, "viewsize", V_INT, EXTRADATA_TYPE, viewsize); /* Image of the <code>fullsize</code> from <code>abstractscrollable</code> node. */ UI_RegisterExtradataNodeProperty(behaviour, "fullsize", V_INT, EXTRADATA_TYPE, fullsize); /* If true, hide the scroll when the position is 0 and can't change (when <code>viewsize</code> >= <code>fullsize</code>). */ UI_RegisterExtradataNodeProperty(behaviour, "hidewhenunused", V_BOOL, EXTRADATA_TYPE, hideWhenUnused); }
void UI_RegisterCheckBoxNode (uiBehaviour_t *behaviour) { behaviour->name = "checkbox"; behaviour->extends = "abstractvalue"; behaviour->manager = UINodePtr(new uiCheckBoxNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /** Sprite used as an icon for checked state */ UI_RegisterExtradataNodeProperty(behaviour, "iconChecked", V_UI_SPRITEREF, EXTRADATA_TYPE, iconChecked); /** Sprite used as an icon for unchecked state */ UI_RegisterExtradataNodeProperty(behaviour, "iconUnchecked", V_UI_SPRITEREF, EXTRADATA_TYPE, iconUnchecked); /** Sprite used as an icon for indeterminate state */ UI_RegisterExtradataNodeProperty(behaviour, "iconIndeterminate", V_UI_SPRITEREF, EXTRADATA_TYPE, iconIndeterminate); /** Sprite used as a background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); /* Call it to toggle the node status. */ UI_RegisterNodeMethod(behaviour, "toggle", UI_CheckBoxNodeCallActivate); }
void UI_RegisterAbstractBaseNode (uiBehaviour_t *behaviour) { behaviour->name = "abstractbase"; behaviour->isAbstract = true; behaviour->manager = new uiAbstractBaseNode(); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Identify the base, from a base ID, the node use. */ UI_RegisterExtradataNodeProperty(behaviour, "baseid", V_INT, baseExtraData_t, baseid); }
void UI_RegisterDataNode (uiBehaviour_t* behaviour) { behaviour->name = "data"; behaviour->isVirtual = true; behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->manager = UINodePtr(new uiDataNode()); /* Store a string into the node. * @note you should note store a cvar ref * @todo use a REF_STRING when it is possible */ UI_RegisterOveridedNodeProperty(behaviour, "string"); /* Store a float number into the node. */ UI_RegisterExtradataNodeProperty(behaviour, "number", V_FLOAT, EXTRADATA_TYPE, number); /* Store a integer number into the node. */ UI_RegisterExtradataNodeProperty(behaviour, "integer", V_INT, EXTRADATA_TYPE, number); }
void UI_RegisterOptionListNode (uiBehaviour_t* behaviour) { behaviour->name = "optionlist"; behaviour->extends = "abstractoption"; behaviour->manager = UINodePtr(new uiOptionListNode()); behaviour->drawItselfChild = true; /* Sprite used to display the background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); }
void UI_RegisterOptionTreeNode (uiBehaviour_t *behaviour) { behaviour->name = "optiontree"; behaviour->extends = "abstractoption"; behaviour->manager = UINodePtr(new uiOptionTreeNode()); behaviour->drawItselfChild = true; /* Call this to toggle the node status. */ UI_RegisterNodeMethod(behaviour, "setselectedvalue", UI_OptionTreeSetSelectedValue); /* Sprite used to display the background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); }
void UI_RegisterBarNode (uiBehaviour_t* behaviour) { behaviour->name = "bar"; behaviour->extends = "abstractvalue"; behaviour->manager = UINodePtr(new uiBarNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->lua_SWIG_typeinfo = UI_SWIG_TypeQuery("uiBarNode_t *"); /** * Orientation of the bar. Default value "cr". Other available values are "uc", "lc", "cr", "cl" */ UI_RegisterExtradataNodeProperty(behaviour, "direction", V_ALIGN, EXTRADATA_TYPE, orientation); /** * if true, the user can't edit the content */ UI_RegisterExtradataNodeProperty(behaviour, "readonly", V_BOOL, EXTRADATA_TYPE, readOnly); /** * there is no hover effect if this is true */ UI_RegisterExtradataNodeProperty(behaviour, "nohover", V_BOOL, EXTRADATA_TYPE, noHover); }
void UI_RegisterButtonNode (uiBehaviour_t *behaviour) { behaviour->name = "button"; behaviour->draw = UI_ButtonNodeDraw; behaviour->loaded = UI_ButtonNodeLoaded; behaviour->leftClick = UI_ButtonNodeClick; behaviour->loading = UI_ButtonNodeLoading; behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Texture used by the button. It's a normalized texture of 128x128. * Normal button start at 0x0, mouse over start at 64x0, mouse click * start at 0x64 (but not yet implemented), and disabled start at 64x64. * See the image to have a usable template for this node. * @image html http://ufoai.org/wiki/images/Button_blue.png */ UI_RegisterOveridedNodeProperty(behaviour, "image"); /* Icon used to display the node */ UI_RegisterExtradataNodeProperty(behaviour, "icon", V_UI_SPRITEREF, EXTRADATA_TYPE, icon); UI_RegisterExtradataNodeProperty(behaviour, "flipicon", V_BOOL, EXTRADATA_TYPE, flipIcon); }
void UI_RegisterImageNode (uiBehaviour_t* behaviour) { /** @todo rename it according to the function name when its possible */ behaviour->name = "image"; behaviour->manager = UINodePtr(new uiImageNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Do not change the image ratio. The image will be proportionally stretched. */ UI_RegisterExtradataNodeProperty(behaviour, "preventratio", V_BOOL, EXTRADATA_TYPE, preventRatio); /* Now this property do nothing. But we use it like a tag, to remember nodes we should convert into button... * @todo delete it when its possible (use more button instead of image) */ UI_RegisterExtradataNodeProperty(behaviour, "mousefx", V_BOOL, EXTRADATA_TYPE, mousefx); /* Texture high. Optional. Define the higher corner of the texture we want to display. Used with texl to crop the image. */ UI_RegisterExtradataNodeProperty(behaviour, "texh", V_POS, EXTRADATA_TYPE, texh); /* Texture low. Optional. Define the lower corner of the texture we want to display. Used with texh to crop the image. */ UI_RegisterExtradataNodeProperty(behaviour, "texl", V_POS, EXTRADATA_TYPE, texl); /* Source of the image */ UI_RegisterExtradataNodeProperty(behaviour, "src", V_CVAR_OR_STRING, EXTRADATA_TYPE, source); }
void UI_RegisterSpinnerNode (uiBehaviour_t *behaviour) { behaviour->name = "spinner"; behaviour->extends = "abstractvalue"; behaviour->manager = new uiSpinnerNode(); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* The size of the widget is uneditable. Fixed to 15x19. */ UI_RegisterOveridedNodeProperty(behaviour, "size"); /** * @brief Backround used to display the spinner. It is displayed in the center of the node. */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); /** * @brief Top icon used to decorate the top button of the spinner. It is displayed in the center of the node. */ UI_RegisterExtradataNodeProperty(behaviour, "topIcon", V_UI_SPRITEREF, EXTRADATA_TYPE, topIcon); /** * @brief Sprite used to decorate the bottom button of the spinner. It is displayed in the center of the node. */ UI_RegisterExtradataNodeProperty(behaviour, "bottomIcon", V_UI_SPRITEREF, EXTRADATA_TYPE, bottomIcon); /** * @brief Spinner mode allow to change the input action of the spinner. * SPINNER_NORMAL is the default mode. With SPINNER_ONLY_INC anywhere it click on the node * it will increase the value. With SPINNER_ONLY_DEC anywhere it click on the node * it will decrease the value. */ UI_RegisterExtradataNodeProperty(behaviour, "mode", V_INT, EXTRADATA_TYPE, mode); Com_RegisterConstInt("SPINNER_NORMAL", NORMAL); Com_RegisterConstInt("SPINNER_ONLY_INC", ONLY_INCREASE); Com_RegisterConstInt("SPINNER_ONLY_DEC", ONLY_DECREASE); }
void UI_RegisterGeoscapeNode (uiBehaviour_t* behaviour) { behaviour->name = "geoscape"; behaviour->manager = UINodePtr(new uiGeoscapeNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Use a right padding. */ UI_RegisterExtradataNodeProperty(behaviour, "padding-right", V_FLOAT, EXTRADATA_TYPE, paddingRight); /* Call it to zoom out of the map */ UI_RegisterNodeMethod(behaviour, "zoomin", UI_GeoscapeNodeZoomIn); /* Call it to zoom into the map */ UI_RegisterNodeMethod(behaviour, "zoomout", UI_GeoscapeNodeZoomOut); Cmd_AddCommand("map_zoom", UI_GeoscapeNodeZoom_f); Cmd_AddCommand("map_scroll", UI_GeoscapeNodeScroll_f); cl_3dmap = Cvar_Get("cl_3dmap", "1", CVAR_ARCHIVE, "3D geoscape or flat geoscape"); cl_3dmapAmbient = Cvar_Get("cl_3dmapAmbient", "0", CVAR_ARCHIVE, "3D geoscape ambient lighting factor"); cl_mapzoommax = Cvar_Get("cl_mapzoommax", "6.0", CVAR_ARCHIVE, "Maximum geoscape zooming value"); cl_mapzoommin = Cvar_Get("cl_mapzoommin", "1.0", CVAR_ARCHIVE, "Minimum geoscape zooming value"); }
void UI_RegisterRadioButtonNode (uiBehaviour_t* behaviour) { behaviour->name = "radiobutton"; behaviour->manager = UINodePtr(new uiRadioButtonNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->lua_SWIG_typeinfo = UI_SWIG_TypeQuery("uiRadioButtonNode_t *"); /* Numerical value defining the radiobutton. Cvar is updated with this value when the radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "value", V_FLOAT, EXTRADATA_TYPE, value); /* String Value defining the radiobutton. Cvar is updated with this value when the radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "stringValue", V_CVAR_OR_STRING, EXTRADATA_TYPE, string); /* Cvar name shared with the radio button group to identify when a radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "cvar", V_UI_CVAR, EXTRADATA_TYPE, cvar); /* Icon used to display the node */ UI_RegisterExtradataNodeProperty(behaviour, "icon", V_UI_SPRITEREF, EXTRADATA_TYPE, icon); UI_RegisterExtradataNodeProperty(behaviour, "flipicon", V_BOOL, EXTRADATA_TYPE, flipIcon); /* Sprite used to display the background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); }
void UI_RegisterRadioButtonNode (uiBehaviour_t *behaviour) { behaviour->name = "radiobutton"; behaviour->draw = UI_RadioButtonNodeDraw; behaviour->leftClick = UI_RadioButtonNodeClick; behaviour->activate = UI_RadioButtonNodeActivate; behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* Numerical value defining the radiobutton. Cvar is updated with this value when the radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "value", V_FLOAT, EXTRADATA_TYPE, value); /* String Value defining the radiobutton. Cvar is updated with this value when the radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "stringValue", V_CVAR_OR_STRING, EXTRADATA_TYPE, string); /* Cvar name shared with the radio button group to identify when a radio button is selected. */ UI_RegisterExtradataNodeProperty(behaviour, "cvar", V_UI_CVAR, EXTRADATA_TYPE, cvar); /* Icon used to display the node */ UI_RegisterExtradataNodeProperty(behaviour, "icon", V_UI_SPRITEREF, EXTRADATA_TYPE, icon); UI_RegisterExtradataNodeProperty(behaviour, "flipicon", V_BOOL, EXTRADATA_TYPE, flipIcon); /* Sprite used to display the background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); }
void UI_RegisterBaseInventoryNode (uiBehaviour_t* behaviour) { behaviour->name = "baseinventory"; behaviour->extends = "container"; behaviour->manager = UINodePtr(new uiBaseInventoryNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); behaviour->lua_SWIG_typeinfo = UI_SWIG_TypeQuery("uiBaseInventoryNode_t *"); /* Display/hide weapons. */ UI_RegisterExtradataNodeProperty(behaviour, "displayweapon", V_BOOL, baseInventoryExtraData_t, displayWeapon); /* Display/hide ammo. */ UI_RegisterExtradataNodeProperty(behaviour, "displayammo", V_BOOL, baseInventoryExtraData_t, displayAmmo); /* Display/hide implants. */ UI_RegisterExtradataNodeProperty(behaviour, "displayimplant", V_BOOL, baseInventoryExtraData_t, displayImplant); /* Display/hide out of stock items. */ UI_RegisterExtradataNodeProperty(behaviour, "displayunavailableitem", V_BOOL, baseInventoryExtraData_t, displayUnavailableItem); /* Sort the list to display in stock items on top of the list. */ UI_RegisterExtradataNodeProperty(behaviour, "displayavailableontop", V_BOOL, baseInventoryExtraData_t, displayAvailableOnTop); /* Display/hide ammo near weapons. */ UI_RegisterExtradataNodeProperty(behaviour, "displayammoofweapon", V_BOOL, baseInventoryExtraData_t, displayAmmoOfWeapon); /* Display/hide out of stock ammo near weapons. <code>displayammoofweapon</code> must be activated first. */ UI_RegisterExtradataNodeProperty(behaviour, "displayunavailableammoofweapon", V_BOOL, baseInventoryExtraData_t, displayUnavailableAmmoOfWeapon); /* Custom the number of column we must use to display items. */ UI_RegisterExtradataNodeProperty(behaviour, "columns", V_INT, baseInventoryExtraData_t, columns); /* Filter items by a category. */ UI_RegisterExtradataNodeProperty(behaviour, "filter", V_INT, baseInventoryExtraData_t, filterEquipType); /* Position of the vertical view (into the full number of elements the node contain) */ UI_RegisterExtradataNodeProperty(behaviour, "viewpos", V_INT, baseInventoryExtraData_t, scrollY.viewPos); /* Size of the vertical view (proportional to the number of elements the node can display without moving) */ UI_RegisterExtradataNodeProperty(behaviour, "viewsize", V_INT, baseInventoryExtraData_t, scrollY.viewSize); /* Full vertical size (proportional to the number of elements the node contain) */ UI_RegisterExtradataNodeProperty(behaviour, "fullsize", V_INT, baseInventoryExtraData_t, scrollY.fullSize); /* Called when one of the properties viewpos/viewsize/fullsize change */ UI_RegisterExtradataNodeProperty(behaviour, "onviewchange", V_UI_ACTION, baseInventoryExtraData_t, onViewChange); Com_RegisterConstInt("FILTER_S_PRIMARY", FILTER_S_PRIMARY); Com_RegisterConstInt("FILTER_S_SECONDARY", FILTER_S_SECONDARY); Com_RegisterConstInt("FILTER_S_HEAVY", FILTER_S_HEAVY); Com_RegisterConstInt("FILTER_S_IMPLANT", FILTER_S_IMPLANT); Com_RegisterConstInt("FILTER_S_MISC", FILTER_S_MISC); Com_RegisterConstInt("FILTER_S_ARMOUR", FILTER_S_ARMOUR); Com_RegisterConstInt("FILTER_CRAFTITEM", FILTER_CRAFTITEM); Com_RegisterConstInt("FILTER_UGVITEM", FILTER_UGVITEM); Com_RegisterConstInt("FILTER_AIRCRAFT", FILTER_AIRCRAFT); Com_RegisterConstInt("FILTER_DUMMY", FILTER_DUMMY); Com_RegisterConstInt("FILTER_DISASSEMBLY", FILTER_DISASSEMBLY); }
void UI_RegisterWindowNode (uiBehaviour_t* behaviour) { behaviour->name = "window"; behaviour->manager = UINodePtr(new uiWindowNode()); behaviour->extraDataSize = sizeof(EXTRADATA_TYPE); /* In windows where notify messages appear (like e.g. the video options window when you have to restart the game until * the settings take effects) you can define the position of those messages with this option. */ UI_RegisterExtradataNodeProperty(behaviour, "noticepos", V_POS, windowExtraData_t, noticePos); /* Create subnode allowing to move the window when we click on the header. Updating this attribute at runtime will change nothing. */ UI_RegisterExtradataNodeProperty(behaviour, "dragbutton", V_BOOL, windowExtraData_t, dragButton); /* Add a button on the top right the window to close it. Updating this attribute at runtime will change nothing. */ UI_RegisterExtradataNodeProperty(behaviour, "closebutton", V_BOOL, windowExtraData_t, closeButton); /* If true, the user can't select something outside the modal window. He must first close the window. */ UI_RegisterExtradataNodeProperty(behaviour, "modal", V_BOOL, windowExtraData_t, modal); /* If true, the window will be closed if the user clicks outside of the window. */ UI_RegisterExtradataNodeProperty(behaviour, "dropdown", V_BOOL, windowExtraData_t, dropdown); /* If true, the user can't use ''ESC'' key to close the window. */ UI_RegisterExtradataNodeProperty(behaviour, "preventtypingescape", V_BOOL, windowExtraData_t, preventTypingEscape); /* If true, the window is filled according to the widescreen. */ UI_RegisterExtradataNodeProperty(behaviour, "fill", V_BOOL, windowExtraData_t, fill); /* If true, the window content position is updated according to the "star" layout when the window size change. * @todo Need more documentation. */ UI_RegisterExtradataNodeProperty(behaviour, "starlayout", V_BOOL, windowExtraData_t, starLayout); /* Invoked when the window is added to the rendering stack. */ UI_RegisterExtradataNodeProperty(behaviour, "onWindowOpened", V_UI_ACTION, windowExtraData_t, onWindowOpened); /* Invoked when the window is removed from the rendering stack. */ UI_RegisterExtradataNodeProperty(behaviour, "onWindowClosed", V_UI_ACTION, windowExtraData_t, onWindowClosed); /* Called when a windows gets active again after some other window was popped from the stack. */ UI_RegisterExtradataNodeProperty(behaviour, "onWindowActivate", V_UI_ACTION, windowExtraData_t, onWindowActivate); /* Invoked after all UI scripts are loaded. */ UI_RegisterExtradataNodeProperty(behaviour, "onScriptLoaded", V_UI_ACTION, windowExtraData_t, onScriptLoaded); /* Sprite used to display the background */ UI_RegisterExtradataNodeProperty(behaviour, "background", V_UI_SPRITEREF, EXTRADATA_TYPE, background); }