forked from JumpyDuke/UniversalProcessKit_FS15
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUniversalProcessKitVehicleTypes.lua
145 lines (127 loc) · 6.1 KB
/
UniversalProcessKitVehicleTypes.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
-- by mor2000
local power=0
local maxPower=0
local function getNextBit()
local bit=2^power
maxPower=power
power=power+1
return bit
end
UniversalProcessKit.VEHICLE_MOTORIZED=getNextBit() -- 1
UniversalProcessKit.VEHICLE_COMBINE=getNextBit() -- 2
UniversalProcessKit.VEHICLE_FILLABLE=getNextBit() -- 4
UniversalProcessKit.VEHICLE_ATTACHMENT=getNextBit() -- 8
UniversalProcessKit.VEHICLE_TIPPER=getNextBit() -- 16
UniversalProcessKit.VEHICLE_SHOVEL=getNextBit() -- 32
UniversalProcessKit.VEHICLE_WATERTRAILER=getNextBit() -- 64
UniversalProcessKit.VEHICLE_FUELTRAILER=getNextBit() -- 128
UniversalProcessKit.VEHICLE_LIQUIDMANURETRAILER=getNextBit() -- 256
UniversalProcessKit.VEHICLE_MILKTRAILER=getNextBit() -- 512
UniversalProcessKit.VEHICLE_SOWINGMACHINE=getNextBit() -- 1024
UniversalProcessKit.VEHICLE_SPRAYER=getNextBit() -- 2048
UniversalProcessKit.VEHICLE_MANURESPREADER=getNextBit() -- 4096
UniversalProcessKit.VEHICLE_FORAGEWAGON=getNextBit() -- 8192
UniversalProcessKit.VEHICLE_BALER=getNextBit() -- 16384
UniversalProcessKit.VEHICLE_TRAFFICVEHICLE=getNextBit() -- 32768
UniversalProcessKit.VEHICLE_MILKTRUCK=getNextBit() -- 65536
UniversalProcessKit.VEHICLE_MIXERWAGONPICKUP=getNextBit() -- 131072
UniversalProcessKit.VEHICLE_MIXERWAGONTRAILER=getNextBit() -- 262144
function UniversalProcessKit.getVehicleType(vehicle)
printFn('UniversalProcessKit.getVehicleType(',vehicle,')')
if type(vehicle)~="table" then
return 0
end
if vehicle.specializations==nil then
vehicle.upk_vehicleType = 0
end
if vehicle.upk_vehicleType==nil then
local vehicleType=0
printAll('checking vehicle')
if SpecializationUtil.hasSpecialization(Motorized, vehicle.specializations) then
printAll('its motorized')
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MOTORIZED
end
if SpecializationUtil.hasSpecialization(SowingMachine, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_SOWINGMACHINE
end
if SpecializationUtil.hasSpecialization(WaterTrailer, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_WATERTRAILER
end
if SpecializationUtil.hasSpecialization(Sprayer, vehicle.specializations) and not SpecializationUtil.hasSpecialization(ManureSpreader, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_SPRAYER
end
if SpecializationUtil.hasSpecialization(ManureSpreader, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MANURESPREADER
end
if SpecializationUtil.hasSpecialization(FuelTrailer, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_FUELTRAILER
end
if SpecializationUtil.hasSpecialization(Fillable, vehicle.specializations) and vehicle:allowFillType(Fillable.FILLTYPE_MILK) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MILKTRAILER
end
if SpecializationUtil.hasSpecialization(Fillable, vehicle.specializations) and vehicle:allowFillType(Fillable.FILLTYPE_LIQUIDMANURE) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_LIQUIDMANURETRAILER
end
if SpecializationUtil.hasSpecialization(Shovel, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_SHOVEL
end
if SpecializationUtil.hasSpecialization(Trailer, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_TIPPER
end
if SpecializationUtil.hasSpecialization(ForageWagon, vehicle.specializations) then
printAll('identified VEHICLE_FORAGEWAGON')
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_FORAGEWAGON
end
if SpecializationUtil.hasSpecialization(Baler, vehicle.specializations) then
printAll('identified VEHICLE_BALER')
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_BALER
end
if SpecializationUtil.hasSpecialization(Combine, vehicle.specializations) then -- doenst seem to recognize combines
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_COMBINE
end
if SpecializationUtil.hasSpecialization(Fillable, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_FILLABLE
end
if SpecializationUtil.hasSpecialization(TrafficVehicle, vehicle.specializations) and not SpecializationUtil.hasSpecialization(Milktruck, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_TRAFFICVEHICLE
end
if SpecializationUtil.hasSpecialization(Milktruck, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MILKTRUCK
end
if SpecializationUtil.hasSpecialization(MixerWagon, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MIXERWAGONPICKUP
end
if SpecializationUtil.hasSpecialization(MixerWagon, vehicle.specializations) then
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_MIXERWAGONTRAILER
end
if SpecializationUtil.hasSpecialization(Cultivator, vehicle.specializations) or
SpecializationUtil.hasSpecialization(Cutter, vehicle.specializations) or
SpecializationUtil.hasSpecialization(StumpCutter, vehicle.specializations) or
SpecializationUtil.hasSpecialization(Mower, vehicle.specializations) or
SpecializationUtil.hasSpecialization(Plough, vehicle.specializations) or
SpecializationUtil.hasSpecialization(Tedder, vehicle.specializations) or
SpecializationUtil.hasSpecialization(Windrower, vehicle.specializations) or
(vehicle.attacherJoint~=nil and vehicle.attacherJoint.node~=nil and vehicle.attacherJoint.node~=0) then
printAll('attachment detected')
vehicleType=vehicleType+UniversalProcessKit.VEHICLE_ATTACHMENT
end
vehicle.upk_vehicleType=vehicleType
return vehicleType
end
return vehicle.upk_vehicleType
end;
function UniversalProcessKit.isVehicleType(vehicle, vehicleTypeTest)
printFn('UniversalProcessKit.isVehicleType(',vehicle,', ',vehicleTypeTest,')')
return bitAND(UniversalProcessKit.getVehicleType(vehicle), vehicleTypeTest)~=0
end;
function UniversalProcessKit.getVehicleTypes(vehicle)
printFn('UniversalProcessKit.getVehicleTypes(',vehicle,')')
local r={}
for power=0,maxPower do
local bit=2^power
if UniversalProcessKit.isVehicleType(vehicle,bit) then
table.insert(r,bit,true)
end
end
return r
end