|
|
@@ -95,23 +95,25 @@ void curses_screen_offset (void) { |
|
|
|
} |
|
|
|
|
|
|
|
char * curses_screen_position (int x, int y) { |
|
|
|
fatal_failure (x <= -1, "curses_screen_position: X position is beyond the lower bound."); |
|
|
|
fatal_failure (y <= -1, "curses_screen_position: Y position is beyond the lower bound."); |
|
|
|
fatal_failure (x >= curses_screen_width, "curses_screen_position: X position is beyond the upper bound."); |
|
|
|
fatal_failure (y >= curses_screen_height, "curses_screen_position: Y position is beyond the upper bound."); |
|
|
|
fatal_failure (x <= -1, "curses_screen_position: X position is below the lower bound."); |
|
|
|
fatal_failure (y <= -1, "curses_screen_position: Y position is below the lower bound."); |
|
|
|
fatal_failure (x >= curses_screen_width, "curses_screen_position: X position is above the upper bound."); |
|
|
|
fatal_failure (y >= curses_screen_height, "curses_screen_position: Y position is above the upper bound."); |
|
|
|
|
|
|
|
return (& curses_screen [CURSES_LENGTH * (y * curses_screen_width + x) + y * CURSES_RETURN + CURSES_OFFSET]); |
|
|
|
} |
|
|
|
|
|
|
|
char * curses_format_character (char character, int colour, int effect) { |
|
|
|
fatal_failure (character_is_invisible (character), "curses_format_character: Can not format invisible characters."); |
|
|
|
fatal_failure (colour >= COLOUR_COUNT, "curses_format_character: Colour is invalid enumeration value."); |
|
|
|
fatal_failure (effect >= EFFECT_COUNT, "curses_format_character: Effect is invalid enumeration value."); |
|
|
|
log_in (LOG_WARNING, character_is_invisible (character), "curses_format_character: Can not format invisible characters."); |
|
|
|
log_in (LOG_FAILURE, colour >= COLOUR_COUNT, "curses_format_character: Colour is invalid enumeration value."); |
|
|
|
log_in (LOG_FAILURE, effect >= EFFECT_COUNT, "curses_format_character: Effect is invalid enumeration value."); |
|
|
|
|
|
|
|
curses_format [2] = (char) effect + '0'; |
|
|
|
curses_format [5] = (char) colour + '0'; |
|
|
|
curses_format [2] = (char) (effect % EFFECT_COUNT) + '0'; |
|
|
|
curses_format [5] = (char) (colour % COLOUR_COUNT) + '0'; |
|
|
|
curses_format [7] = character; |
|
|
|
|
|
|
|
log_out ("curses.log"); |
|
|
|
|
|
|
|
return (curses_format); |
|
|
|
} |
|
|
|
|
|
|
@@ -119,8 +121,8 @@ void curses_output_character (char character, int colour, int effect) { |
|
|
|
out (curses_format_character (character, colour, effect), CURSES_LENGTH); |
|
|
|
} |
|
|
|
|
|
|
|
void curses_render_character (char character, int colour, int effect, int x, int y) { |
|
|
|
string_copy_limit (curses_screen_position (x, y), curses_format_character (character, colour, effect), CURSES_LENGTH); |
|
|
|
void curses_render_character (char character, int x, int y, int colour, int effect) { |
|
|
|
string_copy (curses_screen_position (x, y), curses_format_character (character, colour, effect)); |
|
|
|
|
|
|
|
curses_screen_size += CURSES_LENGTH; |
|
|
|
} |
|
|
|