MCPcopy Create free account
hub / github.com/NetHack/NetHack / write_timer

Function write_timer

src/timeout.c:2504–2551  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2502}
2503
2504staticfn void
2505write_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
2553DISABLE_WARNING_UNREACHABLE_CODE
2554

Callers 1

maybe_write_timerFunction · 0.85

Calls 1

panicFunction · 0.50

Tested by

no test coverage detected