home · contact · privacy
Scrolling pad now also has its own function with its own sanity checks.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 17 May 2013 00:33:18 +0000 (02:33 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 17 May 2013 00:33:18 +0000 (02:33 +0200)
roguelike.c
windows.c
windows.h

index 362826c9b863a3c78808a33a0eb2241000b8138e..e7ece3a0a58601b8d99a22b40ec1a10959e28422 100644 (file)
@@ -475,9 +475,9 @@ int main () {
     if      (key == get_action_key(world.keybindings, "quit"))
       break;
     else if (key == get_action_key(world.keybindings, "scroll pad right"))
-      win_meta.pad_offset++;
-    else if (key == get_action_key(world.keybindings, "scroll pad left") && win_meta.pad_offset > 0)
-      win_meta.pad_offset--;
+      scroll_pad (&win_meta, '+');
+    else if (key == get_action_key(world.keybindings, "scroll pad left"))
+      scroll_pad (&win_meta, '-');
     else if (key == get_action_key(world.keybindings, "toggle keys window"))
       toggle_window(&win_meta, &win_keys);
     else if (key == get_action_key(world.keybindings, "toggle map window"))
index 121c9faf369fdc0cd51f7dd9387c11a4b538835f..cc9f0f2b9c20a0cc944b74d8a4cd54c3820d5187 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -15,6 +15,13 @@ struct WinMeta init_win_meta (WINDOW * screen) {
   win_meta.pad = newpad(win_meta.height, 1);
   return win_meta; }
 
+void scroll_pad (struct WinMeta * win_meta, char dir) {
+// Scroll pad left (if possible) or right.
+  if      ('+' == dir)
+    win_meta->pad_offset++;
+  else if ('-' == dir && win_meta->pad_offset > 0)
+    win_meta->pad_offset--; }
+
 struct Win init_window (struct WinMeta * win_meta, char * title) {
 // Create and populate Win struct with sane default values.
   struct Win win;
index 779a672ec0f1348016b13ccab09c5d7c42307bc8..23fbdc1f59ac42f829fe9ecbdba3cc8cefd6f86d 100644 (file)
--- a/windows.h
+++ b/windows.h
@@ -29,6 +29,7 @@ struct Corners {
   struct yx br; };
 
 struct  WinMeta init_win_meta (WINDOW *);
+void scroll_pad (struct WinMeta *, char);
 struct Win init_window (struct WinMeta *, char *);
 void append_window (struct WinMeta *, struct Win *);
 void suspend_window (struct WinMeta *, struct Win *);