Sprache Deutsch Language English

Script Dokumentation LS 2015 - ShovelTarget (Patch 1.3)

Script Dokumentation Übersicht

scripts/objects/ShovelTarget.lua

Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de
1-- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
2
3ShovelTarget = {};
4ShovelTarget_mt = Class(ShovelTarget);
5
6function ShovelTarget:onCreate(id)
7 if g_currentMission:getIsServer() then
8 local object = ShovelTarget:new();
9 if object:load(id) then
10 g_currentMission:addNonUpdateable(object);
11 else
12 object:delete();
13 end
14 end;
15end;
16
17function ShovelTarget:new(mt)
18 local self = {};
19 if mt == nil then
20 mt = ShovelTarget_mt;
21 end
22 setmetatable(self, mt);
23
24 self.nodeId = 0;
25
26 return self;
27end;
28
29function ShovelTarget:load(nodeId)
30 self.nodeId = nodeId;
31 self.isSilo = Utils.getNoNil(getUserAttribute(nodeId, "isSilo"), true);
32 self.fillTypes = {}
33 local fillTypes = getUserAttribute(nodeId, "fillTypes");
34 if fillTypes ~= nil then
35 local types = Utils.splitString(" ", fillTypes);
36
37 for _,v in pairs(types) do
38 local desc = Fillable.fillTypeNameToDesc[v];
39 if desc ~= nil then
40 self.fillTypes[desc.index] = true;
41 end;
42 end;
43 end;
44 if next(self.fillTypes) == nil then
45 print("Error: shovel target "..getName(nodeId).." has invalid fill types");
46 end;
47 g_currentMission:addNodeObject(self.nodeId, self);
48
49 return true;
50end
51
52function ShovelTarget:delete()
53 if self.nodeId ~= 0 then
54 g_currentMission:removeNodeObject(self.nodeId);
55 end
56end;
57
58-- functions to act as a shovel target
59function ShovelTarget:getAllowShovelFillType(fillType)
60 return self.fillTypes[fillType] ~= nil;
61end;
62
63function ShovelTarget:addShovelFillLevel(shovel, fillLevelDelta, fillType)
64 if self.fillTypes[fillType] ~= nil then
65 if self.isSilo then
66 g_currentMission:setSiloAmount(fillType, g_currentMission:getSiloAmount(fillType)+fillLevelDelta);
67 else
68 if fillLevelDelta > 0 then
69 local price = Fillable.fillTypeIndexToDesc[fillType].pricePerLiter;
70 if price > 0 then
71 g_currentMission:addSharedMoney(price*fillLevelDelta, "other");
72 end
73 end
74 end
75 return fillLevelDelta;
76 end;
77 return 0;
78end;
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