ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/loader.C
(Generate patch)

Comparing deliantra/server/common/loader.C (file contents):
Revision 1.3 by root, Mon Sep 4 13:55:54 2006 UTC vs.
Revision 1.9 by root, Thu Sep 7 14:21:04 2006 UTC

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
504int parse_object (object * op, object_thawer & thawer, int map_flags) 504int 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
512 switch (kw) 513 switch (kw)
513 { 514 {
515 case KW_Object: // uppercase alias
514 case KW_object: 516 case KW_object:
515 thawer.get (op->name); 517 thawer.get (op->name);
516 518
517 if (op->arch != NULL) 519 if (op->arch != NULL)
518 op->arch->name = op->name; 520 op->arch->name = op->name;
554 } 556 }
555 557
556 parse_object (tmp, thawer, map_flags); 558 parse_object (tmp, thawer, map_flags);
557 559
558 if (tmp->arch) 560 if (tmp->arch)
561 {
559 insert_ob_in_ob (tmp, op); 562 // was: insert_ob_in_ob (tmp, op);
563 // but manually adding it can improve map loading times a lot
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);
568
569 if (!op_inv)
570 {
571 op->inv = tmp;
572 tmp->above = 0;
573 }
574 else
575 {
576 while (op_inv->below)
577 op_inv = op_inv->below;
578
579 op_inv->below = tmp;
580 tmp->above = op_inv;
581 }
582
583 tmp->below = 0;
584 tmp->env = op;
585 op_inv = tmp;
586 }
560 else 587 else
561 { 588 {
562 LOG (llevDebug, "Discarding object without arch: %s\n", 589 LOG (llevDebug, "Discarding object without arch: %s\n",
563 tmp->name ? (const char *) tmp->name : "(null)"); 590 tmp->name ? (const char *) tmp->name : "(null)");
564 free_object (tmp); 591 free_object (tmp);
632 op->face = 0; 659 op->face = 0;
633 break; 660 break;
634 661
635 case KW_x: thawer.get (op->x); break; 662 case KW_x: thawer.get (op->x); break;
636 case KW_y: thawer.get (op->y); break; 663 case KW_y: thawer.get (op->y); break;
664 case KW_Str: // uppercase alias
637 case KW_str: thawer.get (op->stats.Str); break; 665 case KW_str: thawer.get (op->stats.Str); break;
666 case KW_Dex: // uppercase alias
638 case KW_dex: thawer.get (op->stats.Dex); break; 667 case KW_dex: thawer.get (op->stats.Dex); break;
668 case KW_Con: // uppercase alias
639 case KW_con: thawer.get (op->stats.Con); break; 669 case KW_con: thawer.get (op->stats.Con); break;
670 case KW_Wis: // uppercase alias
640 case KW_wis: thawer.get (op->stats.Wis); break; 671 case KW_wis: thawer.get (op->stats.Wis); break;
672 case KW_Cha: // uppercase alias
641 case KW_cha: thawer.get (op->stats.Cha); break; 673 case KW_cha: thawer.get (op->stats.Cha); break;
674 case KW_Int: // uppercase alias
642 case KW_int: thawer.get (op->stats.Int); break; 675 case KW_int: thawer.get (op->stats.Int); break;
676 case KW_Pow: // uppercase alias
643 case KW_pow: thawer.get (op->stats.Pow); break; 677 case KW_pow: thawer.get (op->stats.Pow); break;
644 case KW_hp: thawer.get (op->stats.hp); break; 678 case KW_hp: thawer.get (op->stats.hp); break;
645 case KW_maxhp: thawer.get (op->stats.maxhp); break; 679 case KW_maxhp: thawer.get (op->stats.maxhp); break;
646 case KW_sp: thawer.get (op->stats.sp); break; 680 case KW_sp: thawer.get (op->stats.sp); break;
647 case KW_maxsp: thawer.get (op->stats.maxsp); break; 681 case KW_maxsp: thawer.get (op->stats.maxsp); break;
968 1002
969 case KW_editable: 1003 case KW_editable:
970 case KW_editor_folder: 1004 case KW_editor_folder:
971 break; 1005 break;
972 1006
1007 case KW_More: // uppercase alias
973 case KW_more: 1008 case KW_more:
974 /* We need to record that this is a multipart object, 1009 /* We need to record that this is a multipart object,
975 * so the calling function can glue things back together 1010 * so the calling function can glue things back together
976 */ 1011 */
977 ismore = 1; 1012 ismore = 1;
999 thawer.line += strlen (thawer.line) + 1; 1034 thawer.line += strlen (thawer.line) + 1;
1000 1035
1001 break; 1036 break;
1002 1037
1003 default: 1038 default:
1004 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]);
1005 abort (); 1040 break;
1006 } 1041 }
1007 } 1042 }
1008} 1043}
1009 1044
1010/* 1045/*
1031 * as appropriate in op. 1066 * as appropriate in op.
1032 * 1067 *
1033 * 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
1034 * override values and in c_wiz to mutate values. 1069 * override values and in c_wiz to mutate values.
1035 */ 1070 */
1071int
1036int set_variable(object *op,char *buf) { 1072set_variable(object *op, char *buf)
1073{
1074 return 0;
1037#if 0 1075#if 0
1038 int retval; 1076 int retval;
1039 object_thawer thawer (0); 1077 object_thawer thawer (0);
1040 1078
1041 strcpy(msgbuf, ""); 1079 strcpy(msgbuf, "");
1098 1136
1099void init_vars() { 1137void init_vars() {
1100} 1138}
1101 1139
1102/* 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
1103static char* get_string_move_type(MoveType mt) 1143static char* get_string_move_type(MoveType mt)
1104{ 1144{
1105 static char retbuf[MAX_BUF], retbuf_all[MAX_BUF]; 1145 static char retbuf[MAX_BUF], retbuf_all[MAX_BUF];
1106 int i, all_count=0, count; 1146 int i, all_count=0, count;
1107 1147
1135 * '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'
1136 */ 1176 */
1137 if (all_count <=1) return retbuf_all+1; 1177 if (all_count <=1) return retbuf_all+1;
1138 else return retbuf+1; 1178 else return retbuf+1;
1139} 1179}
1140 1180#endif
1181
1141// compare *op against *tmp and output differences 1182// compare *op against *tmp and output differences
1142void 1183void
1143put (object_freezer &f, object *op, object *tmp) 1184put (object_freezer &f, object *op, object *tmp)
1144{ 1185{
1145 int i; 1186 int i;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines