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 | |
3 | ShovelTarget = {}; |
4 | ShovelTarget_mt = Class(ShovelTarget); |
5 | |
6 | function 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; |
15 | end; |
16 | |
17 | function 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; |
27 | end; |
28 | |
29 | function 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; |
50 | end |
51 | |
52 | function ShovelTarget:delete() |
53 | if self.nodeId ~= 0 then |
54 | g_currentMission:removeNodeObject(self.nodeId); |
55 | end |
56 | end; |
57 | |
58 | -- functions to act as a shovel target |
59 | function ShovelTarget:getAllowShovelFillType(fillType) |
60 | return self.fillTypes[fillType] ~= nil; |
61 | end; |
62 | |
63 | function 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; |
78 | end;
|
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de