DEADSOFTWARE

New implementation of module Items, *.cfg files now deprecated
[cavecraft.git] / src / craft.mpsrc
1 unit craft;
3 interface
4 procedure createCraft(id, mode:integer);
5 function canCreateCraft(id, mode:integer):boolean;
7 implementation
9 uses vars, func, player, inv, items_store;
11 procedure createCraft(id, mode:integer);
12 var
13 i, j, tmp_sum, tmp_s, item, sum:integer;
14 begin
15 if canCreateCraft(id, mode)=false then
16 exit;
18 //Выпиливаем все необходимые предметы
19 for i:=0 to 3 do
20 begin
21 tmp_sum:=getCraftInSum(id, i);
22 for j:=0 to INV_SIZE do
23 begin
24 item:=inv.getItem(j);
25 sum:=inv.getSum(j);
27 if getCraftInItem(id, i)=item then
28 begin
29 tmp_s:=tmp_sum-sum;
31 if tmp_s<1 then
32 begin
33 sum:=sum-tmp_sum;
34 inv.setSum(sum, j);
35 inv.fixNull(j);
36 break;
37 end;
38 else
39 begin
40 sum:=0;
41 tmp_sum:=tmp_s;
42 inv.setSum(sum, j);
43 inv.fixNull(j);
44 end;
45 end;
46 end;
47 end;
49 item:=getCraftOutItem(id);
50 sum:=getCraftOutSum(id);
52 sum:=inv.giveItem(item, sum);
53 if sum>0 then
54 player.dropItem(sum, sum);
55 end;
57 //Проверка, может ли игрок сделать этот крафт.
58 function canCreateCraft(id, mode:integer):boolean;
59 var
60 i, j, tmp_sum:integer;
61 canCreate:boolean;
62 begin
63 //Если место крафта подходит, то продолжаем крафт
64 if mode>=getCraftOutFlag(id) then
65 canCreate:=true;
66 else
67 exit;
69 //Проверяем каждую ячейку крафта
70 for i:=0 to 3 do
71 begin
72 //Получаем общуюю сумму подходящего предмета
73 tmp_sum:=0;
74 if getCraftInItem(id, i)>0 then
75 begin
76 for j:=0 to INV_SIZE do
77 begin
78 if getCraftInItem(id, i)=inv.getItem(j) then
79 tmp_sum:=tmp_sum+inv.getSum(j);
80 end;
82 //Проверяем, подходит ли количество предметов
83 if tmp_sum>=getCraftInSum(id, i) then
84 canCreate:=canCreate and true;
85 else
86 exit;
87 end;
88 end;
90 canCreateCraft:=canCreate;
91 end;
93 end.