diff --git a/src/furnace.mpsrc b/src/furnace.mpsrc
index 7f568dfe10252c743cfc0495de0a26612f5b45e2..1cf918517708833839b6c11d2f63fa30883dbf84 100644 (file)
--- a/src/furnace.mpsrc
+++ b/src/furnace.mpsrc
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
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
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
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
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
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