DEADSOFTWARE

Fix furnace and mob data save
[cavecraft.git] / src / CAVE.mpsrc
index ccdef84c131cb89a5c76f85934566c3e4ab5663e..6de766ba1a2b5bb5536d231afc86dd059fc144ec 100644 (file)
@@ -32,8 +32,8 @@ uses
  video;\r
 \r
 const\r
- version='BETA 9';\r
- version_map=8;\r
+ version = 'BETA 9';\r
+ version_map = 9;\r
 \r
 var\r
  keymode,updx,updy:integer;\r
@@ -339,19 +339,7 @@ procedure cleargame;
 \r
   chest.resetData;\r
 \r
-  {for ix:=0 to 15 do\r
-   begin\r
-    b_furnace[ix]:=false;\r
-    for iy:=0 to 4 do\r
-     begin\r
-      furnace[ix,iy].item_i:=0;\r
-      furnace[ix,iy].sum_i:=0;\r
-      furnace_gg[ix].f_gor:=15;\r
-      furnace_gg[ix].fire_time:=0;\r
-      furnace_gg[ix].f_got:=0;\r
-      furnace_gg[ix].got_time:=0;\r
-     end;\r
-   end;}\r
+  furnace.resetData;\r
 \r
   drop.resetData;\r
 \r
@@ -513,9 +501,8 @@ procedure saveworld(path:string);
    if file_exists(path+world_name)<>1 then file_create(path+world_name);\r
    if open_file(path+world_name)=1 then\r
     begin\r
-      writeint(player.getX);\r
-      writeint(player.getX);\r
-     //Matrix\r
+     writeint(player.getX);\r
+     writeint(player.getY);\r
      //Matrix\r
      SaveMapRLE;\r
      SaveMapInfoRLE;\r
@@ -531,17 +518,7 @@ procedure saveworld(path:string);
      chest.saveData;\r
      drw_load_line('Furnaces',60);\r
      //Furnaces\r
-    /* for ix:=0 to 15 do\r
-      begin\r
-       writebool(b_furnace[ix]);\r
-       writeint(furnace_gg[ix].f_gor);\r
-       writeint(furnace_gg[ix].f_got);\r
-        for iy:=0 to 4 do\r
-         begin\r
-          write_byte(furnace[ix,iy].item_i);\r
-          writeint(furnace[ix,iy].sum_i);\r
-         end;\r
-       end;*/\r
+     furnace.saveData;\r
      drw_load_line('Mobs',70);\r
      //Mobs\r
      mob.saveData;\r
@@ -671,26 +648,15 @@ function loadworld(path:string):boolean;
      drw_load_line('Chests',55);\r
      //Chests\r
      chest.loadData;\r
-      drw_load_line('Furnaces',60);\r
+     drw_load_line('Furnaces',60);\r
      //Furnaces\r
-    /* for ix:=0 to 15 do\r
-      begin\r
-       b_furnace[ix]:=readbool;\r
-       furnace_gg[ix].f_gor:=readint;\r
-       furnace_gg[ix].f_got:=readint;\r
-        for iy:=0 to 4 do\r
-         begin\r
-          furnace[ix,iy].item_i:=read_byte;\r
-          furnace[ix,iy].sum_i:=readint;\r
-         end;\r
-       end;*/\r
-       drw_load_line('Mobs',70);\r
+     furnace.loadData;\r
      //Mobs\r
      mob.loadData;\r
-      drw_load_line('Drop',80);\r
+     drw_load_line('Drop',80);\r
      //Drop\r
      drop.loadData;\r
-      drw_load_line('Particles',85);\r
+     drw_load_line('Particles',85);\r
      //Particles\r
      max_particles:=readint;\r
      reset_particles(max_particles+1);\r
@@ -1272,7 +1238,7 @@ function menu_game:boolean;
      if m_cur>3 then m_cur:=0;\r
     end;\r
 \r
-   if clickedKey(KEY_MENU_LEFT) then\r
+   if (max_r >= 0) and clickedKey(KEY_MENU_LEFT) then\r
     begin\r
      cur_name:=cur_name-1;\r
      if cur_name<0 then cur_name:=0;\r
@@ -1282,7 +1248,7 @@ function menu_game:boolean;
 \r
      if file_exists('/'+sd+'/cavecraft/saves/'+names[cur_name]+'/player.dat')=1 then\r
     end;\r
-   if clickedKey(KEY_MENU_RIGHT) then\r
+   if (max_r >= 0) and clickedKey(KEY_MENU_RIGHT) then\r
     begin\r
      cur_name:=cur_name+1;\r
      if cur_name>max_r then cur_name:=max_r;\r
@@ -2511,6 +2477,8 @@ procedure plr_is_dead;
              y:=last_sleep_y*16;\r
             end;\r
          end;\r
+       player.setX(x);\r
+       player.setY(y);\r
        posi:=0;\r
        curx:=0;\r
        cury:=0;\r