1 | -- Returns a new menu sheet |
---|
2 | -- See MenuSheet.new for details about the parameters |
---|
3 | function createMenuSheet(name, bHidePrevious, tShowCursor, tUseKeyboard, bBlockJoyStick) |
---|
4 | local sheet = require("MenuSheet").new(name, bHidePrevious, tShowCursor, tUseKeyboard, bBlockJoyStick) |
---|
5 | _G[sheet.name] = sheet -- Global access required because of the event handlers |
---|
6 | return sheet |
---|
7 | end |
---|
8 | |
---|
9 | -- Returns a new HUD sheet |
---|
10 | function createHUDSheet(name) |
---|
11 | local sheet = require("HUDSheet").new(name) |
---|
12 | _G[sheet.name] = sheet -- Global access required because of the event handlers |
---|
13 | return sheet |
---|
14 | end |
---|
15 | |
---|
16 | function openDecisionPopup( text, callbackPtr ) |
---|
17 | showMenuSheet("DecisionPopup", false, true) |
---|
18 | DecisionPopup.setCallback(callbackPtr) |
---|
19 | DecisionPopup.setText(text) |
---|
20 | end |
---|
21 | |
---|
22 | function openInfoPopup(text, functionPtr, closeButton, arguments) |
---|
23 | showMenuSheet("InfoPopup", false, true) |
---|
24 | InfoPopup.execute(functionPtr, arguments) |
---|
25 | InfoPopup.setText(text) |
---|
26 | InfoPopup.setCloseButton(closeButton) |
---|
27 | end |
---|
28 | |
---|
29 | function getMinTextSize(window) |
---|
30 | local size = {} |
---|
31 | |
---|
32 | local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel()) |
---|
33 | |
---|
34 | local lineSpacing = window:getFont():getLineSpacing() |
---|
35 | --local textExtent = window:getFont():getTextExtent(window:getText()) |
---|
36 | local textExtent = orxonox.GUIManager:getFontTextExtent(window:getFont(), window:getText()) -- workaround for bug in cegui lua scripts |
---|
37 | |
---|
38 | local height = lineSpacing + window:getUnclippedOuterRect():get():getHeight() - lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window):getHeight() |
---|
39 | local width = textExtent + window:getUnclippedOuterRect():get():getWidth() - lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window):getWidth() |
---|
40 | |
---|
41 | table.insert(size, height) |
---|
42 | table.insert(size, width) |
---|
43 | return size |
---|
44 | end |
---|
45 | |
---|
46 | function getScrollingStepSize(window) |
---|
47 | local height = window:getUnclippedOuterRect():get():getHeight() |
---|
48 | local maxHeight = window:getRootWindow():getUnclippedOuterRect():get():getHeight() |
---|
49 | local ratio = height/maxHeight |
---|
50 | return 0.008*ratio/0.3204 |
---|
51 | end |
---|
52 | |
---|
53 | function getStaticTextWindowHeight(window) |
---|
54 | -- Get the area the text is formatted and drawn into. |
---|
55 | local lookAndFeel = CEGUI.WidgetLookManager:getSingleton():getWidgetLook(window:getLookNFeel()) |
---|
56 | local formattedArea = lookAndFeel:getNamedArea("WithFrameTextRenderArea"):getArea():getPixelRect(window) |
---|
57 | -- Calculate the pixel height of the frame by subtracting the height of the area above from the total height of the window. |
---|
58 | local frameHeight = window:getUnclippedOuterRect():get():getHeight() - formattedArea:getHeight() |
---|
59 | |
---|
60 | local height = 0 |
---|
61 | if ORXONOX_OLD_CEGUI then |
---|
62 | local lines = window:getFont():getFormattedLineCount(window:getText(), formattedArea, CEGUI.WordWrapLeftAligned) |
---|
63 | height = lines * window:getFont():getLineSpacing() + frameHeight |
---|
64 | else |
---|
65 | height = math.floor(CEGUI.PropertyHelper:stringToFloat(window:getProperty("VertExtent")) + frameHeight) + 1 |
---|
66 | end |
---|
67 | return height |
---|
68 | end |
---|