Deruu 10 Posted March 7, 2013 (edited) I'm having issues getting user interfaces to work. It seems to work if I use createDialog, however it acts like a popup and the cursor becomes enabled which isn't ideal for a HUD element. I peaked at some other scenarios for ArmA 2(Wasteland in this case), figuring it'd be largely the same, and found that they were using cutRsc. However whenever I try to use cutRsc I get an error stating "Resource title testHud not found". Any help would be appreciated init.sqf cutRsc ["testHud","PLAIN"]; description.ext #include "common.hpp" #include "userInterface.hpp" userInterface.hpp (partially gui editor generated) class testHud { idd = -1; fadeout=0; fadein=0; duration = 20; name = "testHud"; onLoad = "uiNamespace setVariable ['testHud', _this select 0]"; class controlsBackground { class some_text: RscText { idc = 1000; text = "Sup"; //--- ToDo: Localize; x = -0.6875; y = -0.38; w = 0.25; h = 0.04; }; }; }; common.hpp (gui editor generated) /////////////////////////////////////////////////////////////////////////// /// Styles /////////////////////////////////////////////////////////////////////////// // Control types #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_SLIDER 3 #define CT_COMBO 4 #define CT_LISTBOX 5 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_ACTIVETEXT 11 #define CT_TREE 12 #define CT_STRUCTURED_TEXT 13 #define CT_CONTEXT_MENU 14 #define CT_CONTROLS_GROUP 15 #define CT_SHORTCUTBUTTON 16 #define CT_XKEYDESC 40 #define CT_XBUTTON 41 #define CT_XLISTBOX 42 #define CT_XSLIDER 43 #define CT_XCOMBO 44 #define CT_ANIMATED_TEXTURE 45 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_LINEBREAK 98 #define CT_USER 99 #define CT_MAP 100 #define CT_MAP_MAIN 101 #define CT_LISTNBOX 102 // Static styles #define ST_POS 0x0F #define ST_HPOS 0x03 #define ST_VPOS 0x0C #define ST_LEFT 0x00 #define ST_RIGHT 0x01 #define ST_CENTER 0x02 #define ST_DOWN 0x04 #define ST_UP 0x08 #define ST_VCENTER 0x0C #define ST_TYPE 0xF0 #define ST_SINGLE 0x00 #define ST_MULTI 0x10 #define ST_TITLE_BAR 0x20 #define ST_PICTURE 0x30 #define ST_FRAME 0x40 #define ST_BACKGROUND 0x50 #define ST_GROUP_BOX 0x60 #define ST_GROUP_BOX2 0x70 #define ST_HUD_BACKGROUND 0x80 #define ST_TILE_PICTURE 0x90 #define ST_WITH_RECT 0xA0 #define ST_LINE 0xB0 #define ST_SHADOW 0x100 #define ST_NO_RECT 0x200 #define ST_KEEP_ASPECT_RATIO 0x800 #define ST_TITLE ST_TITLE_BAR + ST_CENTER // Slider styles #define SL_DIR 0x400 #define SL_VERT 0 #define SL_HORZ 0x400 #define SL_TEXTURES 0x10 // progress bar #define ST_VERTICAL 0x01 #define ST_HORIZONTAL 0 // Listbox styles #define LB_TEXTURES 0x10 #define LB_MULTI 0x20 // Tree styles #define TR_SHOWROOT 1 #define TR_AUTOCOLLAPSE 2 // MessageBox styles #define MB_BUTTON_OK 1 #define MB_BUTTON_CANCEL 2 #define MB_BUTTON_USER 4 /////////////////////////////////////////////////////////////////////////// /// Base Classes /////////////////////////////////////////////////////////////////////////// class RscText { access = 0; type = 0; idc = -1; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; text = ""; fixedWidth = 0; x = 0; y = 0; h = 0.037; w = 0.3; style = 0; shadow = 1; colorShadow[] = { 0, 0, 0, 0.5 }; font = "PuristaMedium"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; linespacing = 1; }; class RscStructuredText { access = 0; type = 13; idc = -1; style = 0; colorText[] = { 1, 1, 1, 1 }; class Attributes { font = "PuristaMedium"; color = "#ffffff"; align = "left"; shadow = 1; }; x = 0; y = 0; h = 0.035; w = 0.1; text = ""; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; shadow = 1; }; class RscPicture { access = 0; type = 0; idc = -1; style = 48; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; font = "TahomaB"; sizeEx = 0; lineSpacing = 0; text = ""; fixedWidth = 0; shadow = 0; x = 0; y = 0; w = 0.2; h = 0.15; }; class RscEdit { access = 0; type = 2; x = 0; y = 0; h = 0.04; w = 0.2; colorBackground[] = { 0, 0, 0, 1 }; colorText[] = { 0.95, 0.95, 0.95, 1 }; colorSelection[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1 }; autocomplete = ""; text = ""; size = 0.2; style = "0x00 + 0x40"; font = "PuristaMedium"; shadow = 2; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorDisabled[] = { 1, 1, 1, 0.25 }; canModify = 1; }; class RscCombo { access = 0; type = 4; colorSelect[] = { 0, 0, 0, 1 }; colorText[] = { 0.95, 0.95, 0.95, 1 }; colorBackground[] = { 0, 0, 0, 1 }; colorScrollbar[] = { 1, 0, 0, 1 }; soundSelect[] = { "", 0.1, 1 }; soundExpand[] = { "", 0.1, 1 }; soundCollapse[] = { "", 0.1, 1 }; maxHistoryDelay = 1; class ScrollBar { color[] = { 1, 1, 1, 0.6 }; colorActive[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.3 }; shadow = 0; thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; }; style = 16; x = 0; y = 0; w = 0.12; h = 0.035; shadow = 0; colorSelectBackground[] = { 1, 1, 1, 0.7 }; arrowEmpty = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_ca.paa"; arrowFull = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa"; wholeHeight = 0.45; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0, 0, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; }; class RscListBox { access = 0; type = 5; w = 0.4; h = 0.4; rowHeight = 0; colorText[] = { 1, 1, 1, 1 }; colorScrollbar[] = { 1, 0, 0, 0 }; colorSelect[] = { 0, 0, 0, 1 }; colorSelect2[] = { 0, 0, 0, 1 }; colorSelectBackground[] = { 0.95, 0.95, 0.95, 1 }; colorSelectBackground2[] = { 1, 1, 1, 0.5 }; colorBackground[] = { 0, 0, 0, 0.3 }; soundSelect[] = { "", 0.1, 1 }; arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; class ScrollBar { color[] = { 1, 1, 1, 0.6 }; colorActive[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.3 }; shadow = 0; thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; }; style = 16; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; shadow = 0; colorShadow[] = { 0, 0, 0, 0.5 }; color[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; period = 1.2; maxHistoryDelay = 1; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; }; class RscButton { access = 0; type = 1; text = ""; colorText[] = { 1, 1, 1, 1 }; colorDisabled[] = { 0.4, 0.4, 0.4, 1 }; colorBackground[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.7 }; colorBackgroundDisabled[] = { 0.95, 0.95, 0.95, 1 }; colorBackgroundActive[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1 }; colorFocused[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1 }; colorShadow[] = { 0, 0, 0, 1 }; colorBorder[] = { 0, 0, 0, 1 }; soundEnter[] = { "\A3\ui_f\data\sound\onover", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\new1", 0, 0 }; soundClick[] = { "\A3\ui_f\data\sound\onclick", 0.07, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\onescape", 0.09, 1 }; style = 2; x = 0; y = 0; w = 0.095589; h = 0.039216; shadow = 2; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; borderSize = 0; }; class RscShortcutButton { type = 16; x = 0.1; y = 0.1; class HitZone { left = 0; top = 0; right = 0; bottom = 0; }; class ShortcutPos { left = 0; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; }; class TextPos { left = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right = 0.005; bottom = 0; }; shortcuts[] = { }; textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; color[] = { 1, 1, 1, 1 }; color2[] = { 0.95, 0.95, 0.95, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorBackground[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1 }; colorBackground2[] = { 1, 1, 1, 1 }; class Attributes { font = "PuristaMedium"; color = "#E5E5E5"; align = "left"; shadow = "true"; }; idc = -1; style = 0; default = 0; shadow = 1; w = 0.183825; h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; periodFocus = 1.2; periodOver = 0.8; period = 0.4; font = "PuristaMedium"; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; text = ""; soundEnter[] = { "\A3\ui_f\data\sound\onover", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\new1", 0, 0 }; soundClick[] = { "\A3\ui_f\data\sound\onclick", 0.07, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\onescape", 0.09, 1 }; action = ""; class AttributesImage { font = "PuristaMedium"; color = "#E5E5E5"; align = "left"; }; }; class RscShortcutButtonMain { idc = -1; style = 0; default = 0; w = 0.313726; h = 0.104575; color[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; class HitZone { left = 0; top = 0; right = 0; bottom = 0; }; class ShortcutPos { left = 0.0145; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)) / 2"; w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2) * (3/4)"; h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; }; class TextPos { left = "(((safezoneW / safezoneH) min 1.2) / 32) * 1.5"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)*2 - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)) / 2"; right = 0.005; bottom = 0; }; animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\disabled_ca.paa"; animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\over_ca.paa"; animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\focus_ca.paa"; animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\down_ca.paa"; animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; period = 0.5; font = "PuristaMedium"; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; text = ""; soundEnter[] = { "\A3\ui_f\data\sound\onover", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\new1", 0, 0 }; soundClick[] = { "\A3\ui_f\data\sound\onclick", 0.07, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\onescape", 0.09, 1 }; action = ""; class Attributes { font = "PuristaMedium"; color = "#E5E5E5"; align = "left"; shadow = "false"; }; class AttributesImage { font = "PuristaMedium"; color = "#E5E5E5"; align = "false"; }; }; class RscFrame { type = 0; idc = -1; style = 64; shadow = 2; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; font = "PuristaMedium"; sizeEx = 0.02; text = ""; }; class RscSlider { access = 0; type = 3; style = 1024; w = 0.3; color[] = { 1, 1, 1, 0.8 }; colorActive[] = { 1, 1, 1, 1 }; shadow = 0; h = 0.025; }; class IGUIBack { type = 0; idc = 124; style = 128; text = ""; colorText[] = { 0, 0, 0, 0 }; font = "PuristaMedium"; sizeEx = 0; shadow = 0; x = 0.1; y = 0.1; w = 0.1; h = 0.1; colorbackground[] = { "(profilenamespace getvariable ['IGUI_BCG_RGB_R',0])", "(profilenamespace getvariable ['IGUI_BCG_RGB_G',1])", "(profilenamespace getvariable ['IGUI_BCG_RGB_B',1])", "(profilenamespace getvariable ['IGUI_BCG_RGB_A',0.8])" }; }; class RscCheckbox { idc = -1; type = 7; style = 0; x = "LINE_X(XVAL)"; y = "LINE_Y"; w = "LINE_W(WVAL)"; h = 0.029412; colorText[] = { 1, 0, 0, 1 }; color[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 1, 1 }; colorTextSelect[] = { 0, 0.8, 0, 1 }; colorSelectedBg[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 1 }; colorSelect[] = { 0, 0, 0, 1 }; colorTextDisable[] = { 0.4, 0.4, 0.4, 1 }; colorDisable[] = { 0.4, 0.4, 0.4, 1 }; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; rows = 1; columns = 1; strings[] = { "UNCHECKED" }; checked_strings[] = { "CHECKED" }; }; class RscButtonMenu { idc = -1; type = 16; style = "0x02 + 0xC0"; default = 0; shadow = 0; x = 0; y = 0; w = 0.095589; h = 0.039216; animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; animTextureOver = "#(argb,8,8,3)color(1,1,1,0.5)"; animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; colorBackground[] = { 0, 0, 0, 0.8 }; colorBackground2[] = { 1, 1, 1, 0.5 }; color[] = { 1, 1, 1, 1 }; color2[] = { 1, 1, 1, 1 }; colorText[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; period = 1.2; periodFocus = 1.2; periodOver = 1.2; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; class TextPos { left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right = 0.005; bottom = 0; }; class Attributes { font = "PuristaLight"; color = "#E5E5E5"; align = "left"; shadow = "false"; }; class ShortcutPos { left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; top = 0.005; w = 0.0225; h = 0.03; }; }; class RscButtonMenuOK { idc = 1; shortcuts[] = { "0x00050000 + 0", 28, 57, 156 }; default = 1; text = "OK"; }; class RscButtonMenuCancel { idc = 2; shortcuts[] = { "0x00050000 + 1" }; text = "Cancel"; }; class RscControlsGroup { class VScrollbar { color[] = { 1, 1, 1, 1 }; width = 0.021; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; shadow = 0; }; class HScrollbar { color[] = { 1, 1, 1, 1 }; height = 0.028; shadow = 0; }; class ScrollBar { color[] = { 1, 1, 1, 0.6 }; colorActive[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.3 }; shadow = 0; thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; }; class Controls { }; type = 15; idc = -1; x = 0; y = 0; w = 1; h = 1; shadow = 0; style = 16; }; Solution description.ext #include "common.hpp" // In order for this to work with cutRsc it needs to be defined within RscTitles class RscTitles { #include "userInterface.hpp" }; Edited March 9, 2013 by Deruu Share this post Link to post Share on other sites
cfsfirefighter 1 Posted March 8, 2013 i am also having the same issue with one of my mission with the dialog boxes same thing resource title default not found Share this post Link to post Share on other sites
Deruu 10 Posted March 9, 2013 Nobody? Just to clarify, it'll work just fine if I use createDialog, it doesn't however work if I use cutRsc. What am I missing here? Or is it a bug? Share this post Link to post Share on other sites
tonic-_- 53 Posted March 9, 2013 If you're aiming towards a hud. You need to do it this way... userInterface.hpp: class RscTitles { titles[]={}; class testHud { idd = -1; fadeout=0; fadein=0; duration = 20; name = "testHud"; onLoad = "uiNamespace setVariable ['testHud', _this select 0]"; class controlsBackground { class some_text: RscText { idc = 1000; text = "Sup"; //--- ToDo: Localize; x = -0.6875; y = -0.38; w = 0.25; h = 0.04; }; }; }; }; Now, if there are other UI/RscTitle based hpp files you'll have to work a around and merge them. Share this post Link to post Share on other sites
Deruu 10 Posted March 9, 2013 Heh, thanks for the reply. Shortly after making my post I figured I'd take another look at it and spotted the RscTitles class definition in the description.ext file. Felt a bit silly. This works nice and clean: description.ext #include "common.hpp" class RscTitles { #include "userInterface.hpp" }; Share this post Link to post Share on other sites
tonic-_- 53 Posted March 9, 2013 Heh, thanks for the reply. Shortly after making my post I figured I'd take another look at it and spotted the RscTitles class definition in the description.ext file. Felt a bit silly.This works nice and clean: description.ext #include "common.hpp" class RscTitles { #include "userInterface.hpp" }; Heh, that too. The UI & Dialogs don't have a lot of documentation so these things become pains and it really comes down to trial an error.. The downside to using .h .hpp and .cpp files is if you fail on the trail you crash the game.. Share this post Link to post Share on other sites