From babe53830c1bf0904d4661e5b2ce7c3b337dba9c Mon Sep 17 00:00:00 2001 From: Bardur Arantsson Date: Sun, 4 Mar 2012 21:56:56 +0100 Subject: Refactor: Move intro terminal code from Lua to C --- src/externs.h | 4 ++-- src/lua_bind.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/util.pkg | 3 +++ 3 files changed, 75 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/externs.h b/src/externs.h index dc01f361..49f848fd 100644 --- a/src/externs.h +++ b/src/externs.h @@ -1827,8 +1827,8 @@ extern void lua_display_list(int y, int x, int h, int w, cptr title, list_type * extern cptr compass(int y, int x, int y2, int x2); extern cptr approximate_distance(int y, int x, int y2, int x2); -extern cptr compass(int y, int x, int y2, int x2); -extern cptr approximate_distance(int y, int x, int y2, int x2); +extern bool_ drop_text_left(byte c, cptr s, int y, int o); +extern bool_ drop_text_right(byte c, cptr s, int y, int o); /* skills.c */ extern void dump_skills(FILE *fff); diff --git a/src/lua_bind.c b/src/lua_bind.c index 7894b7d4..c8e861a9 100644 --- a/src/lua_bind.c +++ b/src/lua_bind.c @@ -630,3 +630,73 @@ cptr approximate_distance(int y, int x, int y2, int x2) return "not very far"; } } + +bool_ drop_text_left(byte c, cptr str, int y, int o) +{ + int i = strlen(str); + int x = 39 - (strlen(str) / 2) + o; + while (i > 0) + { + int a = 0; + int time = 0; + + if (str[i-1] != ' ') + { + while (a < x + i - 1) + { + Term_putch(a - 1, y, c, 32); + Term_putch(a, y, c, str[i-1]); + time = time + 1; + if (time >= 4) + { + Term_xtra(TERM_XTRA_DELAY, 1); + time = 0; + } + Term_redraw_section(a - 1, y, a, y); + a = a + 1; + + inkey_scan = TRUE; + if (inkey()) { + return TRUE; + } + } + } + + i = i - 1; + } + return FALSE; +} + +bool_ drop_text_right(byte c, cptr str, int y, int o) +{ + int x = 39 - (strlen(str) / 2) + o; + int i = 1; + while (i <= strlen(str)) + { + int a = 79; + int time = 0; + + if (str[i-1] != ' ') { + while (a >= x + i - 1) + { + Term_putch(a + 1, y, c, 32); + Term_putch(a, y, c, str[i-1]); + time = time + 1; + if (time >= 4) { + Term_xtra(TERM_XTRA_DELAY, 1); + time = 0; + } + Term_redraw_section(a, y, a + 1, y); + a = a - 1; + + inkey_scan = TRUE; + if (inkey()) { + return TRUE; + } + } + } + + i = i + 1; + } + return FALSE; +} diff --git a/src/util.pkg b/src/util.pkg index c6f97ebf..b2981681 100644 --- a/src/util.pkg +++ b/src/util.pkg @@ -2697,3 +2697,6 @@ extern void calc_bonuses(bool silent); extern void note_spot(int y, int x); extern void lite_spot(int y, int x); + +extern bool drop_text_left(byte c, cptr s, int y, int o); +extern bool drop_text_right(byte c, cptr s, int y, int o); -- cgit v1.2.3