Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
1 | -- HelpIcons class |
2 | -- |
3 | -- Help icons show in-game help messages |
4 | -- |
5 | -- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved. |
6 | |
7 | HelpIcons = {} |
8 | |
9 | local HelpIcons_mt = Class(HelpIcons); |
10 | |
11 | function HelpIcons:onCreate(id) |
12 | local helpIcons = HelpIcons:new(id); |
13 | g_currentMission:addNonUpdateable(helpIcons); |
14 | --table.insert(g_currentMission.updateables, helpIcons); |
15 | g_currentMission.helpIconsBase = helpIcons; |
16 | -- print("created HelpIcons, id: ", id); |
17 | end; |
18 | |
19 | function HelpIcons:new(name) |
20 | local self = {}; |
21 | setmetatable(self, HelpIcons_mt); |
22 | |
23 | self.me = name; |
24 | local num = getNumOfChildren(self.me); |
25 | |
26 | self.helpIcons = {}; |
27 | for i = 0, num - 1 do |
28 | local helpIconTriggerId = getChildAt(self.me, i); |
29 | local helpIconId = getChildAt(helpIconTriggerId, 0); |
30 | local helpIconCustomNumber = Utils.getNoNil(getUserAttribute(helpIconTriggerId, "customNumber"), 0); |
31 | addTrigger(helpIconTriggerId, "triggerCallback", self); |
32 | local helpIcon = {helpIconTriggerId = helpIconTriggerId, helpIconId = helpIconId, helpIconCustomNumber = helpIconCustomNumber}; |
33 | table.insert(self.helpIcons, helpIcon); |
34 | end; |
35 | self.visible = true; |
36 | |
37 | return self; |
38 | end; |
39 | |
40 | function HelpIcons:delete() |
41 | -- BUG: help icons are deleted before we get here! |
42 | if g_currentMission:getIsClient() then |
43 | for _, helpIcon in pairs(self.helpIcons) do |
44 | removeTrigger(helpIcon.helpIconTriggerId); |
45 | end; |
46 | end; |
47 | end; |
48 | |
49 | function HelpIcons:update(dt) |
50 | -- if self.visible then |
51 | -- for _, helpIcon in pairs(self.helpIcons) do |
52 | -- rotate(helpIcon.helpIconId, 0, 0.002 * dt, 0); |
53 | -- end; |
54 | -- end; |
55 | end; |
56 | |
57 | function HelpIcons:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay) |
58 | if onEnter then -- and g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode and g_currentMission.controlPlayer then |
59 | -- only trigger if the player or a vehicle controlled by the player enters |
60 | if (g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode and g_currentMission.controlPlayer) or (g_currentMission.controlledVehicle ~= nil and g_currentMission.controlledVehicle == g_currentMission.nodeToVehicle[otherId]) then |
61 | |
62 | for i, helpIcon in ipairs(self.helpIcons) do -- order is important for savegame |
63 | if helpIcon.helpIconTriggerId == triggerId then |
64 | if getVisibility(helpIcon.helpIconId) then |
65 | setVisibility(helpIcon.helpIconId, false); |
66 | setCollisionMask(helpIcon.helpIconTriggerId, 0); |
67 | |
68 | -- update help icon string |
69 | g_currentMission.missionStats.foundHelpIcons = ""; |
70 | for _, helpIcon in ipairs(self.helpIcons) do |
71 | if getVisibility(helpIcon.helpIconId) then |
72 | g_currentMission.missionStats.foundHelpIcons = g_currentMission.missionStats.foundHelpIcons .. "0"; |
73 | else |
74 | g_currentMission.missionStats.foundHelpIcons = g_currentMission.missionStats.foundHelpIcons .. "1"; |
75 | end; |
76 | end; |
77 | |
78 | local messageNumber = helpIcon.helpIconCustomNumber; |
79 | if messageNumber == 0 then |
80 | messageNumber = i; |
81 | end; |
82 | g_currentMission.inGameMessage:showMessage(g_i18n:getText("helpMessageTitle" .. messageNumber), g_i18n:getText("helpMessageText" .. messageNumber), 0, false); |
83 | end; |
84 | end; |
85 | end; |
86 | |
87 | end; |
88 | end; |
89 | end; |
90 | |
91 | function HelpIcons:showHelpIcons(visible, clearIconStates) |
92 | self.visible = visible; |
93 | |
94 | local oldStates = g_currentMission.missionStats.foundHelpIcons; |
95 | |
96 | for i, helpIcon in ipairs(self.helpIcons) do |
97 | local isVisible = visible |
98 | if clearIconStates == nil or not clearIconStates then |
99 | isVisible = isVisible and string.sub(oldStates, i, i) == "0"; |
100 | end; |
101 | |
102 | setVisibility(helpIcon.helpIconId, isVisible); |
103 | if isVisible then |
104 | setCollisionMask(helpIcon.helpIconTriggerId, 3145728); |
105 | else |
106 | setCollisionMask(helpIcon.helpIconTriggerId, 0); |
107 | end; |
108 | end; |
109 | |
110 | end; |
111 | |
112 | function HelpIcons:deleteHelpIcon(i) |
113 | if self.helpIcons[i] ~= nil then |
114 | setVisibility(self.helpIcons[i].helpIconId, false); |
115 | setCollisionMask(self.helpIcons[i].helpIconTriggerId, 0); |
116 | end; |
117 | end;
|
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de