summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2012-03-04 21:56:56 +0100
committerBardur Arantsson <bardur@scientician.net>2012-03-29 21:22:23 +0200
commitbabe53830c1bf0904d4661e5b2ce7c3b337dba9c (patch)
tree105194ddc08a7e4fc60c4b208a9cf78081982a09 /src
parent2d82b906749e7249b98b32a81c66a92e46c1cf10 (diff)
Refactor: Move intro terminal code from Lua to C
Diffstat (limited to 'src')
-rw-r--r--src/externs.h4
-rw-r--r--src/lua_bind.c70
-rw-r--r--src/util.pkg3
3 files changed, 75 insertions, 2 deletions
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);