Sprache Deutsch Language English

Script Dokumentation LS 2015 - HelpIcons (Patch 1.3)

Script Dokumentation Übersicht

scripts/objects/HelpIcons.lua

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
7HelpIcons = {}
8
9local HelpIcons_mt = Class(HelpIcons);
10
11function 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);
17end;
18
19function 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;
38end;
39
40function 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;
47end;
48
49function 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;
55end;
56
57function 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;
89end;
90
91function 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
110end;
111
112function 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;
117end;
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
Script Dokumentation Übersicht