| 2502 | } |
| 2503 | |
| 2504 | staticfn void |
| 2505 | write_timer(NHFILE *nhfp, timer_element *timer) |
| 2506 | { |
| 2507 | anything arg_save; |
| 2508 | |
| 2509 | arg_save = cg.zeroany; |
| 2510 | switch (timer->kind) { |
| 2511 | case TIMER_GLOBAL: |
| 2512 | case TIMER_LEVEL: |
| 2513 | /* assume no pointers in arg */ |
| 2514 | Sfo_fe(nhfp, timer, "timer"); |
| 2515 | break; |
| 2516 | |
| 2517 | case TIMER_OBJECT: |
| 2518 | if (timer->needs_fixup) { |
| 2519 | Sfo_fe(nhfp, timer, "timer"); |
| 2520 | } else { |
| 2521 | /* replace object pointer with id */ |
| 2522 | arg_save.a_obj = timer->arg.a_obj; |
| 2523 | timer->arg = cg.zeroany; |
| 2524 | timer->arg.a_uint = (arg_save.a_obj)->o_id; |
| 2525 | timer->needs_fixup = 1; |
| 2526 | Sfo_fe(nhfp, timer, "timer"); |
| 2527 | timer->arg.a_obj = arg_save.a_obj; |
| 2528 | timer->needs_fixup = 0; |
| 2529 | } |
| 2530 | break; |
| 2531 | |
| 2532 | case TIMER_MONSTER: |
| 2533 | if (timer->needs_fixup) { |
| 2534 | Sfo_fe(nhfp, timer, "timer"); |
| 2535 | } else { |
| 2536 | /* replace monster pointer with id */ |
| 2537 | arg_save.a_monst = timer->arg.a_monst; |
| 2538 | timer->arg = cg.zeroany; |
| 2539 | timer->arg.a_uint = (arg_save.a_monst)->m_id; |
| 2540 | timer->needs_fixup = 1; |
| 2541 | Sfo_fe(nhfp, timer, "timer"); |
| 2542 | timer->arg.a_monst = arg_save.a_monst; |
| 2543 | timer->needs_fixup = 0; |
| 2544 | } |
| 2545 | break; |
| 2546 | |
| 2547 | default: |
| 2548 | panic("write_timer"); |
| 2549 | break; |
| 2550 | } |
| 2551 | } |
| 2552 | |
| 2553 | DISABLE_WARNING_UNREACHABLE_CODE |
| 2554 |
no test coverage detected