void PonscripterLabel::executeSystemLookback() { current_font = &sentence_font; if (event_mode & WAIT_BUTTON_MODE) { if (current_button_state.button == 0 || (current_text_buffer == start_text_buffer && current_button_state.button == -2)) return; if (current_button_state.button == -1 || (current_button_state.button == -3 && current_text_buffer->next == cached_text_buffer) || current_button_state.button <= -4) { event_mode = IDLE_EVENT_MODE; deleteButtons(); if (lookback_sp[0] >= 0) sprite_info[lookback_sp[0]].visible(false); if (lookback_sp[1] >= 0) sprite_info[lookback_sp[1]].visible(false); leaveSystemCall(); return; } if (current_button_state.button == 1 || current_button_state.button == -2) { current_text_buffer = current_text_buffer->previous; } else current_text_buffer = current_text_buffer->next; } else { current_text_buffer = current_text_buffer->previous; if (current_text_buffer->empty()) { if (lookback_sp[0] >= 0) sprite_info[lookback_sp[0]].visible(false); if (lookback_sp[1] >= 0) sprite_info[lookback_sp[1]].visible(false); leaveSystemCall(); return; } event_mode = WAIT_BUTTON_MODE; system_menu_mode = SYSTEM_LOOKBACK; } setupLookbackButton(); refreshMouseOverButton(); rgb_t color = sentence_font.color; sentence_font.color = lookback_color; restoreTextBuffer(); sentence_font.color = color; dirty_rect.fill(screen_width, screen_height); flush(refreshMode()); }
void ONScripter::executeSystemLookback() { int i; uchar3 color; current_font = &sentence_font; current_page = current_page->previous; if ( current_page->text_count == 0 ){ if ( lookback_sp[0] >= 0 ) sprite_info[ lookback_sp[0] ].visible = false; if ( lookback_sp[1] >= 0 ) sprite_info[ lookback_sp[1] ].visible = false; leaveSystemCall(); return; } while(1){ setupLookbackButton(); refreshMouseOverButton(); dirty_rect.fill( screen_width, screen_height ); flush( refreshMode() & ~REFRESH_TEXT_MODE); for ( i=0 ; i<3 ; i++ ){ color[i] = sentence_font.color[i]; sentence_font.color[i] = lookback_color[i]; } restoreTextBuffer(accumulation_surface); for ( i=0 ; i<3 ; i++ ) sentence_font.color[i] = color[i]; flush( REFRESH_NONE_MODE ); event_mode = WAIT_BUTTON_MODE; waitEventSub(-1); if ( current_button_state.button == 0 || ( current_page == start_page && current_button_state.button == -2 ) ){ continue; } if ( current_button_state.button == -1 || ( current_button_state.button == -3 && current_page->next == cached_page ) || current_button_state.button <= -4 ) { event_mode = IDLE_EVENT_MODE; deleteButtonLink(); if ( lookback_sp[0] >= 0 ) sprite_info[ lookback_sp[0] ].visible = false; if ( lookback_sp[1] >= 0 ) sprite_info[ lookback_sp[1] ].visible = false; leaveSystemCall(); return; } if ( current_button_state.button == 1 || current_button_state.button == -2 ){ current_page = current_page->previous; } else current_page = current_page->next; } }