long get_replay_key( void ) { replay_t **pp; long *idx; if( !g_flg_play_replay ) return '\0'; if( g_play_replay_char != '\0' ){ long c; c = g_play_replay_char; g_play_replay_char = '\0'; return c; } pp = &(g_replay_cur[REPLAY_SLOT_PLAY]); idx = &g_play_replay_idx; if( g_play_replay_turn == get_turn() ) return get_replay_next_key( pp, idx ); else g_play_replay_turn = -1; if( g_play_replay_count > 0 ){ g_play_replay_count--; return get_replay_next_key( pp, idx ); } return '\0'; }
void chk_replay_key( long c ) { if( !g_flg_play_replay ) return; g_play_replay_char = '\0'; switch( c ){ case CASE_EXEC: g_play_replay_turn = get_turn(); break; case CASE_ENTER: default: g_play_replay_count = 1; break; case ' ': g_play_replay_count = 10; break; case '\0': case CMD_KEY_IDLE: g_play_replay_char = CMD_KEY_IDLE; break; case CMD_KEY_CONT_EXEC: toggle_continue_exec_mode(); g_play_replay_char = CMD_KEY_IDLE; break; case CASE_CANCEL: case CASE_EXIT: case CASE_SQUARE: set_flg_play_replay( FALSE ); break; } }
void turn_ticks(int ticks)// positive speed means clockwise { int speed = AUTO_SPEED;// * abs(ticks)/ticks; reset_op(); int start_ticks = 0; titus_controldrive(speed, 0, 0); while (get_turn() - start_ticks < ticks) { delay(20); } titus_controldrive(0, 0, 0); }
int calendar::diurnal_time_before( int turn ) const { const int remainder = turn - get_turn() % DAYS( 1 ); return ( remainder >= 0 ) ? remainder : DAYS( 1 ) + remainder; }