Changeset 497
- Timestamp:
- 08/11/07 15:57:43 (1 year ago)
- Files:
-
- trunk/src/loadsave.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/loadsave.c
r496 r497 41 41 void deserialize_artifact(artifact_type *a_ptr, smap_t *smap); 42 42 43 void save_object(block_t *block, object_type *o_ptr);44 43 void save_object_memory(block_t *block, object_kind *k_ptr); 45 44 void save_monster(block_t *block, monster_type *m_ptr); … … 48 47 void save_artifact(block_t *block, artifact_type *a_ptr); 49 48 50 void load_object(object_type *o_ptr, smap_t *smap);51 void load_object_memory(object_kind *k_ptr, smap_t *smap);52 49 void load_monster(monster_type *m_ptr, smap_t *smap); 53 50 void load_lore(monster_race *r_ptr, monster_lore *l_ptr, smap_t *smap); … … 62 59 void save_objects(blockfile_t *bf); 63 60 void save_object_memories(blockfile_t *bf); 61 void save_artifact_status(blockfile_t *bf); 64 62 void save_monsters(blockfile_t *bf); 65 63 void save_lores(blockfile_t *bf); … … 78 76 void load_player_inventory(blockfile_t *bf); 79 77 void load_object_memories(blockfile_t *bf); 78 void load_artifact_status(blockfile_t *bf); 80 79 void load_cave(blockfile_t *bf); 81 80 void load_objects(blockfile_t *bf); … … 139 138 save_objects(bf); 140 139 save_object_memories(bf); 140 save_artifact_status(bf); 141 141 save_monsters(bf); 142 142 save_stores(bf); … … 185 185 load_objects(bf); 186 186 load_object_memories(bf); 187 load_artifact_status(bf); 187 188 load_stores(bf); 188 189 load_options(bf); … … 310 311 311 312 for (i = 1; i < o_max; i++) 312 save_object(object_block, &o_list[i]); 313 { 314 smap_t *sm = serialize_object(&o_list[i]); 315 save_smap(object_block, sm); 316 smap_free(sm); 317 } 313 318 } 314 319 … … 319 324 320 325 for (i = 1; i < z_info->k_max; i++) 321 save_object_memory(object_block, &k_info[i]); 326 { 327 object_kind *k_ptr = &k_info[i]; 328 smap_t *sm = smap_new(); 329 330 if (k_ptr->aware) smap_put_bool(sm, "aware", TRUE); 331 if (k_ptr->tried) smap_put_bool(sm, "tried", TRUE); 332 if (k_ptr->squelch) smap_put_bool(sm, "squelch", TRUE); 333 if (k_ptr->everseen) smap_put_bool(sm, "everseen", TRUE); 334 335 save_smap(object_block, sm); 336 smap_free(sm); 337 } 338 } 339 340 void save_artifact_status(blockfile_t *bf) 341 { 342 block_t *art_block = bf_createblock(bf, "artifacts"); 343 int i; 344 345 for (i = 1; i < z_info->a_max; i++) 346 { 347 smap_t *sm = smap_new(); 348 349 if (a_info[i].cur_num) smap_put_bool(sm, "created", TRUE); 350 351 save_smap(art_block, sm); 352 smap_free(sm); 353 } 322 354 } 323 355 … … 526 558 blob = smap_get_blob(sm, "object", &len); 527 559 obj_smap = smap_fromstring(blob, len); 528 load_object(&temp, obj_smap);560 deserialize_object(&temp, obj_smap); 529 561 smap_free(obj_smap); 530 562 FREE(blob); … … 602 634 603 635 o_ptr = &o_list[o_idx]; 604 load_object(o_ptr, s);636 deserialize_object(o_ptr, s); 605 637 smap_free(s); 606 638 … … 631 663 for (i = 1; i < z_info->k_max; i++) 632 664 { 665 object_kind *k_ptr = &k_info[i]; 633 666 smap_t *sm = load_smap(object_block); 634 667 if (!sm) break; 635 668 636 load_object_memory(&k_info[i], sm); 669 k_ptr->aware = smap_get_bool(sm, "aware"); 670 k_ptr->tried = smap_get_bool(sm, "tried"); 671 k_ptr->squelch = smap_get_bool(sm, "squelch"); 672 k_ptr->everseen = smap_get_bool(sm, "everseen"); 673 637 674 smap_free(sm); 638 675 } 639 676 } 640 677 678 void load_artifact_status(blockfile_t *bf) 679 { 680 block_t *art_block = bf_findblock(bf, "artifacts"); 681 u32b i; 682 683 for (i = 1; i < z_info->a_max; i++) 684 { 685 smap_t *s = load_smap(art_block); 686 if (!s) return; 687 688 a_info[i].cur_num = smap_get_bool(s, "created") ? 1 : 0; 689 690 smap_free(s); 691 } 692 } 693 641 694 void load_monsters(blockfile_t *bf) 642 695 { 643 696 block_t *monster_block = bf_findblock(bf, "monsters"); 644 697 u32b i; 645 smap_t *s;646 698 monster_type mon; 647 699 648 700 for (i = 1; i < z_info->m_max; i++) 649 701 { 650 s = load_smap(monster_block);702 smap_t *s = load_smap(monster_block); 651 703 if (!s) return; 652 704 … … 838 890 /* Low-level functions */ 839 891 840 void save_object_memory(block_t *block, object_kind *k_ptr)841 {842 smap_t *sm = smap_new();843 844 if (k_ptr->aware) smap_put_bool(sm, "aware", TRUE);845 if (k_ptr->tried) smap_put_bool(sm, "tried", TRUE);846 if (k_ptr->squelch) smap_put_bool(sm, "squelch", TRUE);847 if (k_ptr->everseen) smap_put_bool(sm, "everseen", TRUE);848 849 save_smap(block, sm);850 smap_free(sm);851 }852 853 void save_object(block_t *block, object_type *o_ptr)854 {855 smap_t *sm = serialize_object(o_ptr);856 save_smap(block, sm);857 smap_free(sm);858 }859 860 892 void save_monster(block_t *block, monster_type *m_ptr) 861 893 { … … 884 916 save_smap(block, sm); 885 917 smap_free(sm); 886 }887 888 void load_object(object_type *o_ptr, smap_t *smap)889 {890 deserialize_object(o_ptr, smap);891 }892 893 void load_object_memory(object_kind *k_ptr, smap_t *sm)894 {895 k_ptr->aware = smap_get_bool(sm, "aware");896 k_ptr->tried = smap_get_bool(sm, "tried");897 k_ptr->squelch = smap_get_bool(sm, "squelch");898 k_ptr->everseen = smap_get_bool(sm, "everseen");899 918 } 900 919 … … 1574 1593 a_ptr->time_sides = smap_get_u16b(s, "time_sides"); 1575 1594 } 1595
