From e1ae0a05e12a8a0aec170d9d3b795ca0dc74e6ed Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Thu, 23 May 2013 11:03:32 +0200
Subject: [PATCH] init_window() now initializes Win.data and Win.draw, too

---
 roguelike.c | 16 ++++------------
 windows.c   |  4 +++-
 windows.h   |  2 +-
 3 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/roguelike.c b/roguelike.c
index 89b6462..f530d45 100644
--- a/roguelike.c
+++ b/roguelike.c
@@ -471,18 +471,10 @@ int main () {
   raw();
   struct WinMeta win_meta = init_win_meta(screen);
 
-  struct Win win_keys = init_window(&win_meta, "Keys");
-  win_keys.draw = draw_keys_window;
-  win_keys.data = &world;
-  struct Win win_map = init_window(&win_meta, "Map");
-  win_map.draw = draw_map;
-  win_map.data = &world;
-  struct Win win_info = init_window(&win_meta, "Info");
-  win_info.draw = draw_info;
-  win_info.data = &world;
-  struct Win win_log = init_window(&win_meta, "Log");
-  win_log.draw = draw_log;
-  win_log.data = &world;
+  struct Win win_keys = init_window(&win_meta, "Keys", &world, draw_keys_window);
+  struct Win win_map = init_window(&win_meta, "Map", &world, draw_map);
+  struct Win win_info = init_window(&win_meta, "Info", &world, draw_info);
+  struct Win win_log = init_window(&win_meta, "Log", &world, draw_log);
 
   int key;
   while (1) {
diff --git a/windows.c b/windows.c
index ba6401b..6a649a3 100644
--- a/windows.c
+++ b/windows.c
@@ -23,7 +23,7 @@ void scroll_pad (struct WinMeta * win_meta, char dir) {
   else if ('-' == dir && win_meta->pad_offset > 0)
     win_meta->pad_offset--; }
 
-struct Win init_window (struct WinMeta * win_meta, char * title) {
+struct Win init_window (struct WinMeta * win_meta, char * title, void * data, void * func) {
 // Create and populate Win struct with sane default values.
   struct Win win;
   win.prev = 0;
@@ -32,6 +32,8 @@ struct Win init_window (struct WinMeta * win_meta, char * title) {
   win.title = title;
   win.width = 20;
   win.height = win_meta->height - 1;
+  win.data = data;
+  win.draw = func;
   return win; }
 
 void append_window (struct WinMeta * win_meta, struct Win * win) {
diff --git a/windows.h b/windows.h
index 8f06ffc..b5df498 100644
--- a/windows.h
+++ b/windows.h
@@ -30,7 +30,7 @@ struct Corners {
 
 struct  WinMeta init_win_meta (WINDOW *);
 void scroll_pad (struct WinMeta *, char);
-struct Win init_window (struct WinMeta *, char *);
+struct Win init_window (struct WinMeta *, char *, void *, void *);
 void append_window (struct WinMeta *, struct Win *);
 void suspend_window (struct WinMeta *, struct Win *);
 struct yx place_window (struct WinMeta *, struct Win *);
-- 
2.30.2