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 | CutterAreaEvent = {}; |
4 | CutterAreaEvent_mt = Class(CutterAreaEvent, Event); |
5 | |
6 | InitStaticEventClass(CutterAreaEvent, "CutterAreaEvent", EventIds.EVENT_CUTTER_AREA); |
7 | |
8 | function CutterAreaEvent:emptyNew() |
9 | local self = Event:new(CutterAreaEvent_mt); |
10 | return self; |
11 | end; |
12 | |
13 | function CutterAreaEvent:new(workAreas, fruitType) |
14 | local self = CutterAreaEvent:emptyNew() |
15 | self.workAreas = workAreas; |
16 | self.fruitType = fruitType; |
17 | return self; |
18 | end; |
19 | |
20 | function 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; |
35 | end; |
36 | |
37 | function 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 |
53 | end; |
54 | |
55 | function CutterAreaEvent:run(connection) |
56 | print("Error: Do not run CutterAreaEvent locally"); |
57 | end; |
58 | |
59 | function 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; |
88 | end;
|
Copyright (c) 2008-2015 GIANTS Software GmbH, Confidential, All Rights Reserved.
This document is to be published solely by ls-mods.de