Sprache Deutsch Language English

Script Dokumentation LS 2015 - CutterAreaEvent (Patch 1.3)

Script Dokumentation Übersicht

scripts/vehicles/specializations/CutterAreaEvent.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
3CutterAreaEvent = {};
4CutterAreaEvent_mt = Class(CutterAreaEvent, Event);
5
6InitStaticEventClass(CutterAreaEvent, "CutterAreaEvent", EventIds.EVENT_CUTTER_AREA);
7
8function CutterAreaEvent:emptyNew()
9 local self = Event:new(CutterAreaEvent_mt);
10 return self;
11end;
12
13function CutterAreaEvent:new(workAreas, fruitType)
14 local self = CutterAreaEvent:emptyNew()
15 self.workAreas = workAreas;
16 self.fruitType = fruitType;
17 return self;
18end;
19
20function CutterAreaEvent:readStream(streamId, connection)
21 local numAreas = streamReadUIntN(streamId, 4);
22 local fruitType = streamReadUIntN(streamId, FruitUtil.sendNumBits);
23
24 local params = g_currentMission.areaCompressionParams;
25 local paramsRelative = g_currentMission.areaRelativeCompressionParams;
26 for i=1, numAreas do
27 local x = Utils.readCompressedWorldPosition(streamId, params);
28 local z = Utils.readCompressedWorldPosition(streamId, params);
29 local x1 = x + Utils.readCompressedWorldPosition(streamId, paramsRelative);
30 local z1 = z + Utils.readCompressedWorldPosition(streamId, paramsRelative);
31 local x2 = x + Utils.readCompressedWorldPosition(streamId, paramsRelative);
32 local z2 = z + Utils.readCompressedWorldPosition(streamId, paramsRelative);
33 Utils.cutFruitArea(fruitType, x, z, x1, z1, x2, z2, true, true);
34 end;
35end;
36
37function CutterAreaEvent:writeStream(streamId, connection)
38 local numAreas = table.getn(self.workAreas);
39 streamWriteUIntN(streamId, numAreas, 4);
40 streamWriteUIntN(streamId, self.fruitType, FruitUtil.sendNumBits);
41
42 local params = g_currentMission.areaCompressionParams;
43 local paramsRelative = g_currentMission.areaRelativeCompressionParams;
44 for i=1, numAreas do
45 local d = self.workAreas[i];
46 Utils.writeCompressedWorldPosition(streamId, d[1], params);
47 Utils.writeCompressedWorldPosition(streamId, d[2], params);
48 Utils.writeCompressedWorldPosition(streamId, d[3] - d[1], paramsRelative);
49 Utils.writeCompressedWorldPosition(streamId, d[4] - d[2], paramsRelative);
50 Utils.writeCompressedWorldPosition(streamId, d[5] - d[1], paramsRelative);
51 Utils.writeCompressedWorldPosition(streamId, d[6] - d[2], paramsRelative);
52 end
53end;
54
55function CutterAreaEvent:run(connection)
56 print("Error: Do not run CutterAreaEvent locally");
57end;
58
59function CutterAreaEvent.runLocally(workAreas, fruitType)
60
61 local numAreas = table.getn(workAreas);
62
63 local params = g_currentMission.areaCompressionParams;
64 local paramsRelative = g_currentMission.areaRelativeCompressionParams;
65
66 local volumeSum = 0;
67 local areaSum = 0;
68 for i=1, numAreas do
69 local d = workAreas[i];
70 local x = Utils.simWriteCompressedWorldPosition(d[1], params);
71 local z = Utils.simWriteCompressedWorldPosition(d[2], params);
72 local x1 = x + Utils.simWriteCompressedWorldPosition(d[3] - d[1], paramsRelative);
73 local z1 = z + Utils.simWriteCompressedWorldPosition(d[4] - d[2], paramsRelative);
74 local x2 = x + Utils.simWriteCompressedWorldPosition(d[5] - d[1], paramsRelative);
75 local z2 = z + Utils.simWriteCompressedWorldPosition(d[6] - d[2], paramsRelative);
76
77 local volume, area, spraySum = Utils.cutFruitArea(fruitType, x, z, x1, z1, x2, z2, true, true);
78 if volume > 0 then
79 local multi = 1;
80 if spraySum > 0 then
81 multi = 2;
82 end;
83 volumeSum = volumeSum + volume*multi;
84 areaSum = areaSum + area;
85 end;
86 end;
87 return volumeSum, areaSum;
88end;
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