int ONScripterLabel::clickNewPage( char *out_text ) { if ( out_text ){ drawDoubleChars( out_text, &sentence_font, true, true, accumulation_surface, &text_info ); num_chars_in_sentence++; } if ( skip_flag || draw_one_page_flag || ctrl_pressed_status ) flush( refreshMode() ); if ( (skip_flag || ctrl_pressed_status) && !textgosub_label ){ event_mode = WAIT_SLEEP_MODE; advancePhase(); num_chars_in_sentence = 0; clickstr_state = CLICK_NEWPAGE; } else{ key_pressed_flag = false; if ( textgosub_label ){ saveoffCommand(); textgosub_clickstr_state = CLICK_NEWPAGE; gosubReal( textgosub_label, script_h.getNext() ); indent_offset = 0; line_enter_status = 0; page_enter_status = 0; string_buffer_offset = 0; return RET_CONTINUE; } clickstr_state = CLICK_NEWPAGE; doClickEnd(); } return RET_WAIT | RET_NOREAD; }
int PonscripterLabel::clickWait(bool display_char) { const char* c = script_h.getStrBuf(string_buffer_offset); if ((skip_flag || draw_one_page_flag || ctrl_pressed_status) && !textgosub_label) { clickstr_state = CLICK_NONE; skip_to_wait = 0; int bytes; if (display_char) bytes = drawChar(c, &sentence_font, false, true, accumulation_surface, &text_info); else { bytes = 1; // @, \, etc...? flush(refreshMode()); } string_buffer_offset += bytes; num_chars_in_sentence = 0; return RET_CONTINUE | RET_NOREAD; } else { if (current_read_language == -1 || current_read_language == current_language) { clickstr_state = CLICK_WAIT; } if (skip_to_wait || (sentence_font.wait_time == 0)) { skip_to_wait = 0; flush(refreshMode()); } key_pressed_flag = false; if (display_char) { drawChar(c, &sentence_font, false, true, accumulation_surface, &text_info); ++num_chars_in_sentence; } if (textgosub_label) { const char* next_text = c + 1; saveoffCommand("saveoff"); textgosub_clickstr_state = (next_text[0] == 0x0a) ? CLICK_WAITEOL : CLICK_WAIT; gosubDoTextgosub(); indent_offset = 0; // Do we want to reset all these? line_enter_status = 0; string_buffer_offset = 0; return RET_CONTINUE; } doClickEnd(); return RET_WAIT | RET_NOREAD; } }
int PonscripterLabel::clickNewPage(bool display_char) { const char* c = script_h.getStrBuf(string_buffer_offset); if (current_read_language != -1 && current_read_language != current_language) { clickstr_state = CLICK_NEWPAGE; } if (display_char) { drawChar(c, &sentence_font, true, true, accumulation_surface, &text_info); ++num_chars_in_sentence; } if (skip_flag || draw_one_page_flag || skip_to_wait || ctrl_pressed_status || (sentence_font.wait_time == 0)) flush(refreshMode()); skip_to_wait = 0; if ((skip_flag || ctrl_pressed_status) && !textgosub_label) { event_mode = WAIT_SLEEP_MODE; advancePhase(); num_chars_in_sentence = 0; } else { key_pressed_flag = false; if (textgosub_label) { saveoffCommand("saveoff"); textgosub_clickstr_state = CLICK_NEWPAGE; gosubReal(textgosub_label, script_h.getNext()); indent_offset = 0; line_enter_status = 0; string_buffer_offset = 0; return RET_CONTINUE; } doClickEnd(); } return RET_WAIT | RET_NOREAD; }
int ONScripterLabel::clickWait( char *out_text ) { if ( (skip_flag || draw_one_page_flag || ctrl_pressed_status) && !textgosub_label ){ clickstr_state = CLICK_NONE; if ( out_text ){ drawDoubleChars( out_text, &sentence_font, false, true, accumulation_surface, &text_info ); if (out_text[1]) string_buffer_offset++; string_buffer_offset++; } else{ // called on '@' flush(refreshMode()); string_buffer_offset++; } num_chars_in_sentence = 0; return RET_CONTINUE | RET_NOREAD; } else{ key_pressed_flag = false; if ( out_text ){ drawDoubleChars( out_text, &sentence_font, true, true, accumulation_surface, &text_info ); num_chars_in_sentence++; } if ( textgosub_label ){ saveoffCommand(); textgosub_clickstr_state = CLICK_WAIT; if (script_h.getNext()[0] == 0x0a) textgosub_clickstr_state |= CLICK_EOL; gosubReal( textgosub_label, script_h.getNext() ); indent_offset = 0; line_enter_status = 0; page_enter_status = 0; string_buffer_offset = 0; return RET_CONTINUE; } clickstr_state = CLICK_WAIT; doClickEnd(); return RET_WAIT | RET_NOREAD; } }