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.68 by root, Mon Apr 16 06:23:39 2007 UTC vs.
Revision 1.71 by root, Tue Apr 17 18:59:05 2007 UTC

473 CLEAR_FLAG (op, flag) \ 473 CLEAR_FLAG (op, flag) \
474 474
475bool 475bool
476object::parse_kv (object_thawer &f) 476object::parse_kv (object_thawer &f)
477{ 477{
478 assert (f.kw == KW_object || f.kw == KW_arch);
479
480 if (f.kw == KW_object)
481 f.get (name); // preset name from object name
482
483 f.next ();
484
485 object *op_inv = inv; 478 object *op_inv = inv;
486 479
487 for (;;) 480 for (;;)
488 { 481 {
489 switch (f.kw) 482 switch (f.kw)
990 arch = archetype::find ("earthwall"); 983 arch = archetype::find ("earthwall");
991 } 984 }
992 985
993 assert (arch); //D maybe use exception handling of sorts? 986 assert (arch); //D maybe use exception handling of sorts?
994 987
988 f.next ();
989
995 object *op = object::create (); 990 object *op = object::create ();
996 991
997 op->map = map; 992 op->map = map;
998 arch->clone.copy_to (op); 993 arch->clone.copy_to (op);
999 // copy_to activates, this should be fixed properly 994 // copy_to activates, this should be fixed properly
1017int 1012int
1018set_variable (object *op, char *buf) 1013set_variable (object *op, char *buf)
1019{ 1014{
1020 object_thawer f (buf, (AV *)0); 1015 object_thawer f (buf, (AV *)0);
1021 1016
1022 f.kw = KW_arch; // special hack so that parse_kv skips 1017 f.next ();
1023 return op->parse_kv (f); 1018 return op->parse_kv (f);
1024} 1019}
1025 1020
1026/* This returns a string of the integer movement type */ 1021/* This returns a string of the integer movement type */
1027#if 0 1022#if 0
1399 return true; 1394 return true;
1400} 1395}
1401 1396
1402///////////////////////////////////////////////////////////////////////////// 1397/////////////////////////////////////////////////////////////////////////////
1403 1398
1399// generic resource file load,
1400// currently supports: region, treasures, archetypes
1404bool load_resource_file (const char *filename) 1401bool load_resource_file (const char *filename)
1405{ 1402{
1406 object_thawer f (filename); 1403 object_thawer f (filename);
1404
1405 bool success = false;
1406 bool seen_arch = false;
1407 1407
1408 f.next (); 1408 f.next ();
1409 1409
1410 for (;;) 1410 for (;;)
1411 { 1411 {
1412 switch (f.kw) 1412 switch (f.kw)
1413 { 1413 {
1414 case KW_region: 1414 case KW_region:
1415 if (!region::read (f)) 1415 if (!region::read (f))
1416 return false; 1416 goto finish;
1417 break;
1418
1419 case KW_treasure:
1420 case KW_treasureone:
1421 if (!treasurelist::read (f))
1422 goto finish;
1423 break;
1424
1425 case KW_object:
1426 seen_arch = true;
1427 if (!archetype::read (f))
1428 goto finish;
1417 break; 1429 break;
1418 1430
1419 case KW_EOF: 1431 case KW_EOF:
1420 return true; 1432 success = true;
1433 goto finish;
1421 1434
1422 default: 1435 default:
1423 if (!f.parse_error ("resource file")) 1436 if (!f.parse_error ("resource file"))
1424 return false; 1437 goto finish;
1425 } 1438 }
1426
1427 f.next ();
1428 } 1439 }
1440
1441finish:
1442 if (seen_arch)
1443 init_archetype_pointers ();
1444
1445 return success;
1429} 1446}
1430 1447

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines