Changeset 497

Show
Ignore:
Timestamp:
08/11/07 15:57:43 (1 year ago)
Author:
takkaria
Message:

Add bits of missing data to the savefile, and rearrange a little.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/loadsave.c

    r496 r497  
    4141void deserialize_artifact(artifact_type *a_ptr, smap_t *smap); 
    4242 
    43 void save_object(block_t *block, object_type *o_ptr); 
    4443void save_object_memory(block_t *block, object_kind *k_ptr); 
    4544void save_monster(block_t *block, monster_type *m_ptr); 
     
    4847void save_artifact(block_t *block, artifact_type *a_ptr); 
    4948 
    50 void load_object(object_type *o_ptr, smap_t *smap); 
    51 void load_object_memory(object_kind *k_ptr, smap_t *smap); 
    5249void load_monster(monster_type *m_ptr, smap_t *smap); 
    5350void load_lore(monster_race *r_ptr, monster_lore *l_ptr, smap_t *smap); 
     
    6259void save_objects(blockfile_t *bf); 
    6360void save_object_memories(blockfile_t *bf); 
     61void save_artifact_status(blockfile_t *bf); 
    6462void save_monsters(blockfile_t *bf); 
    6563void save_lores(blockfile_t *bf); 
     
    7876void load_player_inventory(blockfile_t *bf); 
    7977void load_object_memories(blockfile_t *bf); 
     78void load_artifact_status(blockfile_t *bf); 
    8079void load_cave(blockfile_t *bf); 
    8180void load_objects(blockfile_t *bf); 
     
    139138        save_objects(bf); 
    140139        save_object_memories(bf); 
     140        save_artifact_status(bf); 
    141141        save_monsters(bf); 
    142142        save_stores(bf); 
     
    185185        load_objects(bf); 
    186186        load_object_memories(bf); 
     187        load_artifact_status(bf); 
    187188        load_stores(bf); 
    188189        load_options(bf); 
     
    310311 
    311312        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        } 
    313318} 
    314319 
     
    319324 
    320325        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 
     340void 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        } 
    322354} 
    323355 
     
    526558                blob = smap_get_blob(sm, "object", &len); 
    527559                obj_smap = smap_fromstring(blob, len); 
    528                 load_object(&temp, obj_smap); 
     560                deserialize_object(&temp, obj_smap); 
    529561                smap_free(obj_smap); 
    530562                FREE(blob); 
     
    602634 
    603635                o_ptr = &o_list[o_idx]; 
    604                 load_object(o_ptr, s); 
     636                deserialize_object(o_ptr, s); 
    605637                smap_free(s); 
    606638 
     
    631663        for (i = 1; i < z_info->k_max; i++) 
    632664        { 
     665                object_kind *k_ptr = &k_info[i]; 
    633666                smap_t *sm = load_smap(object_block); 
    634667                if (!sm) break; 
    635668 
    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 
    637674                smap_free(sm); 
    638675        } 
    639676} 
    640677 
     678void 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 
    641694void load_monsters(blockfile_t *bf) 
    642695{ 
    643696        block_t *monster_block = bf_findblock(bf, "monsters"); 
    644697        u32b i; 
    645         smap_t *s; 
    646698        monster_type mon; 
    647699 
    648700        for (i = 1; i < z_info->m_max; i++) 
    649701        { 
    650                 s = load_smap(monster_block); 
     702                smap_t *s = load_smap(monster_block); 
    651703                if (!s) return; 
    652704 
     
    838890/* Low-level functions */ 
    839891 
    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  
    860892void save_monster(block_t *block, monster_type *m_ptr) 
    861893{ 
     
    884916        save_smap(block, sm); 
    885917        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"); 
    899918} 
    900919 
     
    15741593        a_ptr->time_sides = smap_get_u16b(s, "time_sides"); 
    15751594} 
     1595