DEADSOFTWARE

Remove ascii crap
[cavecraft.git] / src / furnace.mpsrc
index 7f568dfe10252c743cfc0495de0a26612f5b45e2..1cf918517708833839b6c11d2f63fa30883dbf84 100644 (file)
@@ -5,7 +5,7 @@ interface
   MAX_FURNACE=31;\r
   MAX_FURNACE_CELLS=2;\r
   \r
-  ITEM_IN_FIRE=10000;\r
+  ITEM_IN_FIRE=9950; // <== Костыль "исправляющий" тайминги. Должно быть 10000.\r
 \r
   FURNACE_IN=0;\r
   FURNACE_FUEL=1;\r
@@ -38,8 +38,13 @@ interface
  function furnaceBurn(i:integer):boolean;\r
  function itemBurn(i:integer):boolean;\r
 \r
+ procedure SaveData;\r
+ procedure LoadData;\r
+ procedure ResetData;\r
+\r
 implementation\r
- uses maps, drop, items_store, items;\r
+ uses maps, drop, items_store, jsr75i, func, Items;\r
+\r
  var\r
   furnace_b: array [0..MAX_FURNACE] of boolean;\r
   furnace_item, furnace_sum: array [0..MAX_FURNACE, 0..MAX_FURNACE_CELLS] of integer;\r
@@ -260,9 +265,9 @@ implementation
    sumOUT:=GetFurSum(FURNACE_OUT, i);\r
    recipeOUT:=GetReceptOut(itemIN);\r
 \r
-   if (itemIN<>0) and (recipeOUT<>FURNACE_ERROR) then\r
-   if (itemOUT=0) or ((itemOUT=recipeOUT) and (sumOUT<getItemMax(itemOUT))) then\r
-    canUpdate:=true;\r
+   if (itemIN <> 0) and (recipeOUT <> FURNACE_ERROR) then\r
+     if (itemOUT = 0) or ((itemOUT = recipeOUT) and (sumOUT < Items.GetMaximum(itemOUT))) then\r
+       canUpdate := true;\r
   end;\r
 \r
  function furnaceBurn(i:integer):boolean;\r
@@ -286,7 +291,7 @@ implementation
    item:=GetFurItem(FURNACE_FUEL, i);\r
    sum:=GetFurSum(FURNACE_FUEL, i);\r
 \r
-   if getItemDiv(item) then\r
+   if Items.IsDividable(item) then\r
     begin\r
      sum:=sum-1;\r
      if sum<0 then\r
@@ -314,7 +319,7 @@ implementation
    sumOUT:=GetFurSum(FURNACE_OUT, i);\r
    recipeOUT:=GetReceptOut(itemIN);\r
 \r
-   if getItemDiv(itemIN) then\r
+   if Items.IsDividable(itemIN) then\r
     begin\r
      sumIN:=sumIN-1;\r
      if sumIN<0 then\r
@@ -366,4 +371,58 @@ implementation
    UpdateTime;\r
   end;\r
 \r
+  procedure SaveData;\r
+    var\r
+      i, j : Integer;\r
+    begin\r
+      for i := 0 to MAX_FURNACE do\r
+        begin\r
+          writebool(furnace_b[i]);\r
+          for j := 0 to MAX_FURNACE_CELLS do\r
+            begin\r
+              write_byte(furnace_item[i, j]);\r
+              writeint(furnace_sum[i, j]);\r
+            end;\r
+          writeint(furnace_fstart[i]);\r
+          writeint(furnace_ftime[i]);\r
+          writeint(furnace_prstart[i]);\r
+        end;\r
+    end;\r
+\r
+  procedure LoadData;\r
+    var\r
+      i, j : Integer;\r
+    begin\r
+      for i := 0 to MAX_FURNACE do\r
+        begin\r
+          furnace_b[i] := readbool;\r
+          for j := 0 to MAX_FURNACE_CELLS do\r
+            begin\r
+              furnace_item[i, j] := read_byte;\r
+              furnace_sum[i, j]  := readint;\r
+            end;\r
+          furnace_fstart[i]  := readint;\r
+          furnace_ftime[i]   := readint;\r
+          furnace_prstart[i] := readint;\r
+        end;      \r
+    end;\r
+\r
+  procedure ResetData;\r
+    var\r
+      i, j : Integer;\r
+    begin\r
+      for i := 0 to MAX_FURNACE do\r
+        begin\r
+          furnace_b[i] := false;\r
+          for j := 0 to MAX_FURNACE_CELLS do\r
+            begin\r
+              furnace_item[i, j] := 0;\r
+              furnace_sum[i, j]  := 0;\r
+            end;\r
+          furnace_fstart[i]  := 0;\r
+          furnace_ftime[i]   := 0;\r
+          furnace_prstart[i] := 0;\r
+        end;      \r
+    end;\r
+\r
 end.\r