Advertisement
King_ZZ

SiloTipTrigger

Nov 29th, 2021
600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.25 KB | None | 0 0
  1. SiloTipTrigger = {};
  2.  
  3. function SiloTipTrigger:onCreate(id, heap)
  4.     local trigger = SiloTipTrigger:new(g_server ~= nil, g_client ~= nil);
  5.     --local index = g_currentMission:addOnCreateLoadedObject(trigger);
  6.     trigger:load(id, heap);
  7.     trigger:register(true);
  8. end;
  9.  
  10. function SiloTipTrigger:new(isServer, isClient, mt)
  11.     --print("new Heap TipTrigger");
  12.    
  13.     if SiloTipTrigger_mt == nil then
  14.         SiloTipTrigger_mt = Class(SiloTipTrigger, TipTrigger);
  15.     end;
  16.    
  17.     if mt == nil then
  18.         mt = SiloTipTrigger_mt;
  19.     end;
  20.  
  21.     local self = TipTrigger:new(isServer, isClient, mt);
  22.  
  23.     --print("Heap TipTrigger created");
  24.     return self;
  25. end;
  26.  
  27. function SiloTipTrigger:delete()
  28.     removeTrigger(self.triggerId);
  29.     SiloTipTrigger:superClass().delete(self);
  30. end;
  31.  
  32. function SiloTipTrigger:load(id, heap)
  33.     --print("loading Heap TipTrigger");
  34.     SiloTipTrigger:superClass().load(self,id);
  35.    
  36.     self.triggerId=id;
  37.     self.heap=heap;
  38.     --addTrigger(id, "triggerCallback", self);
  39.    
  40.     self.appearsOnPDA = false;
  41.     self.isFarmTrigger = false;
  42.     self.stationName= "Heap";
  43.    
  44.     self.isAreaTrigger = true;
  45.  
  46.     if self.isAreaTrigger then
  47.         self.triggerStartId = getChildAt(self.triggerId, 0);
  48.         self.triggerEndId = getChildAt(self.triggerId, 1);
  49.         self.triggerWidth = Utils.getNoNil(getUserAttribute(id, "triggerWidth"), 12);
  50.         --print("Trigger Start Id: "..self.triggerStartId..", End Id: "..self.triggerEndId..", Width: "..self.triggerWidth);
  51.     else
  52.         self.triggerStartId = self.triggerId;
  53.         self.triggerWidth=3;
  54.     end;
  55.    
  56.     self.allowFillFromAir=true;
  57.  
  58.     self.allowFillShovel = true;
  59.     self.isEnabled = true;
  60.  
  61.     --print("loading Heap TipTrigger successful");
  62.     return true;
  63. end;
  64.  
  65.  
  66. --read/write streams
  67.  
  68.  
  69.  
  70.  
  71. function SiloTipTrigger:updateMoving(delta)
  72. end;
  73.  
  74. function SiloTipTrigger:updateTrailerTipping(trailer, fillDelta, fillType)
  75.     --print("Fill Heap with "..tostring(fillDelta));
  76.  
  77. --King_ZZ EDIT start
  78. -- this stopped the heap from being filled over capacity but the trailer continued emptying into nothing (lost fillType)
  79.     if self.heap:getFillLevel() < self.heap.capacity then
  80.         --print("TIPTRIGGER self.heap:getFillLevel() UNDER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  81.         if fillDelta < 0 then
  82.             self.heap:setFillType(fillType);
  83.             self.heap:setFillLevel(self.heap:getFillLevel()-fillDelta);
  84.            
  85.         end;
  86.     else
  87.         --print("TIPTRIGGER self.heap:getFillLevel() OVER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  88.         --0 print results
  89.     end;
  90. --King_ZZ EDIT end
  91. end;
  92.  
  93. function SiloTipTrigger:getTipInfoForTrailer(trailer, tipReferencePointIndex)
  94.     local minDistance, bestPoint = SiloTipTrigger:superClass().getTipDistanceFromTrailer(self,trailer, tipReferencePointIndex);
  95.  
  96.     local isAllowed = false;
  97.  
  98.     local fillType=self.heap:getFillType();
  99.  
  100. -- King_ZZ EDIT start --adds a capacity
  101.     if(fillType==0)then
  102.         local acceptedFillTypes=self.heap:getAcceptedFillTypes();
  103.         if self.heap:getFillLevel() < self.heap.capacity then
  104.             --print("TIPTRIGGERgetTipInfoForTrailer111 self.heap:getFillLevel() UNDER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  105.             if acceptedFillTypes[trailer.currentFillType] then
  106.                 isAllowed = true;  
  107.             end;
  108.  
  109.         else
  110.         --print("TIPTRIGGERgetTipInfoForTrailer111 self.heap:getFillLevel() OVER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  111.         --0 print results if i had a larger trailer this would print results
  112.         end;
  113.     else   
  114.         if self.heap:getFillLevel() < self.heap.capacity then
  115.             --print("TIPTRIGGERgetTipInfoForTrailer222 self.heap:getFillLevel() UNDER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  116.             if (fillType==trailer.currentFillType)then
  117.                  isAllowed = true;     
  118.             end;
  119.  
  120.         else
  121.         --print("TIPTRIGGERgetTipInfoForTrailer222 self.heap:getFillLevel() OVER "..tostring(self.heap.capacity)..":  "..tostring(self.heap:getFillLevel()))
  122.         end;
  123.     end;
  124. -- King_ZZ EDIT end
  125.  
  126.  
  127.     --print("TipInfoForTrailer: "..tostring(isAllowed)..", "..tostring(minDistance)..", "..tostring(bestPoint));
  128.     --print("FillType in Heap is "..tostring(fillType).." and in Trailer "..tostring(trailer.currentFillType));
  129.     return isAllowed, minDistance, bestPoint;
  130. end;
  131.  
  132. function SiloTipTrigger:getAllowFillFromAir()
  133.     return self.allowFillFromAir;
  134. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement