… | |
… | |
499 | if (thawer.get_sint32 ()) \ |
499 | if (thawer.get_sint32 ()) \ |
500 | SET_FLAG (op, flag); \ |
500 | SET_FLAG (op, flag); \ |
501 | else \ |
501 | else \ |
502 | CLEAR_FLAG (op, flag) \ |
502 | CLEAR_FLAG (op, flag) \ |
503 | |
503 | |
504 | int parse_object (object * op, object_thawer & thawer, int map_flags) |
504 | int parse_object (object *op, object_thawer &thawer, int map_flags) |
505 | { |
505 | { |
506 | bool ismore = 0; |
506 | bool ismore = 0; |
|
|
507 | object *op_inv = op->inv; |
507 | |
508 | |
508 | for (;;) |
509 | for (;;) |
509 | { |
510 | { |
510 | keyword kw = thawer.get_kv (); |
511 | keyword kw = thawer.get_kv (); |
511 | |
512 | |
… | |
… | |
557 | parse_object (tmp, thawer, map_flags); |
558 | parse_object (tmp, thawer, map_flags); |
558 | |
559 | |
559 | if (tmp->arch) |
560 | if (tmp->arch) |
560 | { |
561 | { |
561 | // was: insert_ob_in_ob (tmp, op); |
562 | // was: insert_ob_in_ob (tmp, op); |
562 | // but manually addint it can improve map loading times a lot |
563 | // but manually adding it can improve map loading times a lot |
563 | tmp->env = op; |
564 | // also, appending instead of prepending keeps the |
|
|
565 | // save ordering the same between repeated load/saves. |
|
|
566 | CLEAR_FLAG (tmp, FLAG_OBJ_ORIGINAL); |
|
|
567 | CLEAR_FLAG (tmp, FLAG_REMOVED); |
564 | |
568 | |
565 | if (!op->inv) |
569 | if (!op_inv) |
|
|
570 | { |
566 | op->inv = tmp; |
571 | op->inv = tmp; |
|
|
572 | tmp->above = 0; |
|
|
573 | } |
567 | else |
574 | else |
568 | { |
575 | { |
|
|
576 | while (op_inv->below) |
|
|
577 | op_inv = op_inv->below; |
|
|
578 | |
|
|
579 | op_inv->below = tmp; |
569 | tmp->below = op->inv; |
580 | tmp->above = op_inv; |
570 | tmp->below->above = tmp; |
|
|
571 | op->inv = tmp; |
|
|
572 | } |
581 | } |
|
|
582 | |
|
|
583 | tmp->below = 0; |
|
|
584 | tmp->env = op; |
|
|
585 | op_inv = tmp; |
573 | } |
586 | } |
574 | else |
587 | else |
575 | { |
588 | { |
576 | LOG (llevDebug, "Discarding object without arch: %s\n", |
589 | LOG (llevDebug, "Discarding object without arch: %s\n", |
577 | tmp->name ? (const char *) tmp->name : "(null)"); |
590 | tmp->name ? (const char *) tmp->name : "(null)"); |
… | |
… | |
1021 | thawer.line += strlen (thawer.line) + 1; |
1034 | thawer.line += strlen (thawer.line) + 1; |
1022 | |
1035 | |
1023 | break; |
1036 | break; |
1024 | |
1037 | |
1025 | default: |
1038 | default: |
1026 | printf ("kw abort %s\n", keyword_str [kw]);//D |
1039 | LOG (llevError, "UNSUPPORTED KEYWORD IN MAP: \"%s\", bug in normaliser. skipping.\n", keyword_str [kw]); |
1027 | abort (); |
1040 | break; |
1028 | } |
1041 | } |
1029 | } |
1042 | } |
1030 | } |
1043 | } |
1031 | |
1044 | |
1032 | /* |
1045 | /* |
… | |
… | |
1053 | * as appropriate in op. |
1066 | * as appropriate in op. |
1054 | * |
1067 | * |
1055 | * This function appears to be used in only 2 places - in crossedit to |
1068 | * This function appears to be used in only 2 places - in crossedit to |
1056 | * override values and in c_wiz to mutate values. |
1069 | * override values and in c_wiz to mutate values. |
1057 | */ |
1070 | */ |
|
|
1071 | int |
1058 | int set_variable(object *op,char *buf) { |
1072 | set_variable(object *op, char *buf) |
|
|
1073 | { |
|
|
1074 | return 0; |
1059 | #if 0 |
1075 | #if 0 |
1060 | int retval; |
1076 | int retval; |
1061 | object_thawer thawer (0); |
1077 | object_thawer thawer (0); |
1062 | |
1078 | |
1063 | strcpy(msgbuf, ""); |
1079 | strcpy(msgbuf, ""); |
… | |
… | |
1120 | |
1136 | |
1121 | void init_vars() { |
1137 | void init_vars() { |
1122 | } |
1138 | } |
1123 | |
1139 | |
1124 | /* This returns a string of the integer movement type */ |
1140 | /* This returns a string of the integer movement type */ |
|
|
1141 | #if 0 |
|
|
1142 | // unused function |
1125 | static char* get_string_move_type(MoveType mt) |
1143 | static char* get_string_move_type(MoveType mt) |
1126 | { |
1144 | { |
1127 | static char retbuf[MAX_BUF], retbuf_all[MAX_BUF]; |
1145 | static char retbuf[MAX_BUF], retbuf_all[MAX_BUF]; |
1128 | int i, all_count=0, count; |
1146 | int i, all_count=0, count; |
1129 | |
1147 | |
… | |
… | |
1157 | * 'all -walk -fly_low' - it is shorter to return 'fly_high swim' |
1175 | * 'all -walk -fly_low' - it is shorter to return 'fly_high swim' |
1158 | */ |
1176 | */ |
1159 | if (all_count <=1) return retbuf_all+1; |
1177 | if (all_count <=1) return retbuf_all+1; |
1160 | else return retbuf+1; |
1178 | else return retbuf+1; |
1161 | } |
1179 | } |
1162 | |
1180 | #endif |
|
|
1181 | |
1163 | // compare *op against *tmp and output differences |
1182 | // compare *op against *tmp and output differences |
1164 | void |
1183 | void |
1165 | put (object_freezer &f, object *op, object *tmp) |
1184 | put (object_freezer &f, object *op, object *tmp) |
1166 | { |
1185 | { |
1167 | int i; |
1186 | int i; |