… | |
… | |
1400 | } |
1400 | } |
1401 | |
1401 | |
1402 | ///////////////////////////////////////////////////////////////////////////// |
1402 | ///////////////////////////////////////////////////////////////////////////// |
1403 | |
1403 | |
1404 | // generic resource file load, |
1404 | // generic resource file load, |
1405 | // currently supports: region, treasures |
1405 | // currently supports: region, treasures, archetypes |
1406 | bool load_resource_file (const char *filename) |
1406 | bool load_resource_file (const char *filename) |
1407 | { |
1407 | { |
1408 | object_thawer f (filename); |
1408 | object_thawer f (filename); |
|
|
1409 | |
|
|
1410 | bool success = false; |
|
|
1411 | bool seen_arch = false; |
1409 | |
1412 | |
1410 | f.next (); |
1413 | f.next (); |
1411 | |
1414 | |
1412 | for (;;) |
1415 | for (;;) |
1413 | { |
1416 | { |
1414 | switch (f.kw) |
1417 | switch (f.kw) |
1415 | { |
1418 | { |
1416 | case KW_region: |
1419 | case KW_region: |
1417 | if (!region::read (f)) |
1420 | if (!region::read (f)) |
1418 | return false; |
1421 | goto finish; |
1419 | break; |
1422 | break; |
1420 | |
1423 | |
1421 | case KW_treasure: |
1424 | case KW_treasure: |
1422 | case KW_treasureone: |
1425 | case KW_treasureone: |
1423 | if (!treasurelist::read (f)) |
1426 | if (!treasurelist::read (f)) |
1424 | return false; |
1427 | goto finish; |
|
|
1428 | break; |
|
|
1429 | |
|
|
1430 | case KW_object: |
|
|
1431 | seen_arch = true; |
|
|
1432 | if (!archetype::read (f)) |
|
|
1433 | goto finish; |
1425 | break; |
1434 | break; |
1426 | |
1435 | |
1427 | case KW_EOF: |
1436 | case KW_EOF: |
1428 | return true; |
1437 | success = true; |
|
|
1438 | goto finish; |
1429 | |
1439 | |
1430 | default: |
1440 | default: |
1431 | if (!f.parse_error ("resource file")) |
1441 | if (!f.parse_error ("resource file")) |
1432 | return false; |
1442 | goto finish; |
1433 | } |
1443 | } |
1434 | } |
1444 | } |
|
|
1445 | |
|
|
1446 | finish: |
|
|
1447 | if (seen_arch) |
|
|
1448 | init_archetype_pointers (); |
|
|
1449 | |
|
|
1450 | return success; |
1435 | } |
1451 | } |
1436 | |
1452 | |