summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBradley Smith2008-08-03 16:22:59 +0100
committerBradley Smith2008-08-03 16:22:59 +0100
commitae3a780491b700be0258b1c2243c86cf10729fcc (patch)
treef274f87c4d0bd3bc91e29f0dcc8c90da4b59c028 /include
parentAdd more uitest stuff. (diff)
downloadgnurobots-ae3a780491b700be0258b1c2243c86cf10729fcc.tar.gz
Add Gtk interface. Using a Vte for guile input.
Signed-off-by: Bradley Smith <brad@brad-smith.co.uk>
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am16
-rw-r--r--include/grobot.h6
-rw-r--r--include/ui-arena.h83
-rw-r--r--include/ui-cmdwin.h60
-rw-r--r--include/ui-window-private.h32
-rw-r--r--include/ui-window.h61
-rw-r--r--include/userinterface.h180
7 files changed, 248 insertions, 190 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index bb2a455..47a3c86 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -15,10 +15,12 @@
## You should have received a copy of the GNU General Public License
## along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
-EXTRA_DIST =\
- api.h\
- configs.h\
- map.h\
- main.h\
- grobot.h\
- userinterface.h
+EXTRA_DIST = \
+ api.h \
+ configs.h \
+ map.h \
+ main.h \
+ grobot.h \
+ ui-window.h \
+ ui-arena.h \
+ ui-cmdwin.h
diff --git a/include/grobot.h b/include/grobot.h
index fd7f794..52a7039 100644
--- a/include/grobot.h
+++ b/include/grobot.h
@@ -21,7 +21,7 @@
#include <glib-object.h>
#include <glib.h>
-#include "userinterface.h"
+#include "ui-arena.h"
#include "map.h"
G_BEGIN_DECLS
@@ -53,7 +53,7 @@ struct _GRobot {
glong shots;
glong units;
- UserInterface *ui;
+ UIArena *ui;
Map *map;
};
@@ -73,7 +73,7 @@ GType g_robot_get_type(void) G_GNUC_CONST;
/* Our object functions */
GRobot* g_robot_new(int x, int y, int dir, long score, long energy,
- long shield, long units, long shots, UserInterface *ui, Map *map);
+ long shield, long units, long shots, UIArena *ui, Map *map);
void g_robot_turn (GRobot *robot, gint num_turns);
gboolean g_robot_move (GRobot *robot, gint steps);
diff --git a/include/ui-arena.h b/include/ui-arena.h
new file mode 100644
index 0000000..2fee88f
--- /dev/null
+++ b/include/ui-arena.h
@@ -0,0 +1,83 @@
+/* Copyright (C) 2008 Bradley Smith <brad@brad-smith.co.uk>
+ *
+ * GNU Robots, ui-arena.h
+ *
+ * GNU Robots is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU Robots is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __UI_ARENA_H__
+#define __UI_ARENA_H__
+
+#include <gtk/gtk.h>
+
+#include "map.h"
+
+G_BEGIN_DECLS
+
+#define UI_TYPE_ARENA \
+ ui_arena_get_type()
+#define UI_ARENA(obj) \
+ G_TYPE_CHECK_INSTANCE_CAST(obj, UI_TYPE_ARENA, UIArena)
+#define UI_ARENA_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_CAST(klass, UI_ARENA_TYPE, UIArenaClass)
+#define IS_UI_ARENA(obj) \
+ G_TYPE_CHECK_INSTANCE_TYPE(obj, UI_TYPE_ARENA)
+#define IS_UI_ARENA_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_TYPE(klass, UI_TYPE_ARENA)
+
+#define dist(f_x, f_y, t_x, t_y) (abs((f_x)-(t_x))+abs((f_y)-(t_y)))
+
+typedef struct _UIArena UIArena;
+typedef struct _UIArenaClass UIArenaClass;
+typedef struct _UIArenaPrivate UIArenaPrivate;
+
+struct _UIArena
+{
+ GtkDrawingArea widget;
+ UIArenaPrivate* priv;
+};
+
+struct _UIArenaClass
+{
+ GtkDrawingAreaClass parent_class;
+};
+
+GType ui_arena_get_type(void) G_GNUC_CONST;
+
+GtkWidget *ui_arena_new();
+
+void ui_arena_set_map(UIArena *arena, Map *map);
+void ui_arena_postinit(UIArena *arena);
+void ui_arena_draw(UIArena *arena);
+void ui_arena_update_status(UIArena *arena, const gchar *s, glong energy,
+ glong score, glong shields);
+
+void ui_arena_add_thing(UIArena *arena, gint x, gint y, gint thing);
+void ui_arena_move_robot(UIArena *arena, gint from_x, gint from_y,
+ gint to_x, gint to_y, gint cdir, glong energy, glong score,
+ glong shields);
+void ui_arena_robot_smell(UIArena *arena, gint x, gint y, gint cdir,
+ glong energy, glong score, glong shields);
+void ui_arena_robot_zap(UIArena *arena, gint x, gint y, gint cdir,
+ gint x_to, gint y_to, glong energy, glong score, glong shields);
+void ui_arena_robot_feel(UIArena *arena, gint x, gint y, gint cdir,
+ gint x_to, gint y_to, glong energy, glong score, glong shields);
+void ui_arena_robot_grab(UIArena *arena, gint x, gint y, gint cdir,
+ gint x_to, gint y_to, glong energy, glong score, glong shields);
+void ui_arena_robot_look(UIArena *arena, gint x, gint y, gint cdir,
+ gint x_to, gint y_to, glong energy, glong score, glong shields);
+
+G_END_DECLS
+
+#endif
diff --git a/include/ui-cmdwin.h b/include/ui-cmdwin.h
new file mode 100644
index 0000000..1c6196d
--- /dev/null
+++ b/include/ui-cmdwin.h
@@ -0,0 +1,60 @@
+/* Copyright (C) 2008 Bradley Smith <brad@brad-smith.co.uk>
+ *
+ * GNU Robots, ui-cmdwin.h
+ *
+ * GNU Robots is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU Robots is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __UI_CMDWIN_H__
+#define __UI_CMDWIN_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define UI_TYPE_CMDWIN \
+ ui_cmdwin_get_type()
+#define UI_CMDWIN(obj) \
+ G_TYPE_CHECK_INSTANCE_CAST(obj, UI_TYPE_CMDWIN, UICmdWin)
+#define UI_CMDWIN_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_CAST(klass, UI_CMDWIN_TYPE, UICmdWinClass)
+#define IS_UI_CMDWIN(obj) \
+ G_TYPE_CHECK_INSTANCE_TYPE(obj, UI_TYPE_CMDWIN)
+#define IS_UI_CMDWIN_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_TYPE(klass, UI_TYPE_CMDWIN)
+
+typedef struct _UICmdWin UICmdWin;
+typedef struct _UICmdWinClass UICmdWinClass;
+typedef struct _UICmdWinPrivate UICmdWinPrivate;
+
+struct _UICmdWin
+{
+ GtkVBox widget;
+ UICmdWinPrivate* priv;
+};
+
+struct _UICmdWinClass
+{
+ GtkVBoxClass parent_class;
+};
+
+GType ui_cmdwin_get_type(void) G_GNUC_CONST;
+
+GtkWidget *ui_cmdwin_new(void);
+void ui_cmdwin_get_string(UICmdWin *cmdwin, gchar *prompt, gchar *buf,
+ gint len);
+
+G_END_DECLS
+
+#endif
diff --git a/include/ui-window-private.h b/include/ui-window-private.h
new file mode 100644
index 0000000..cfb8b63
--- /dev/null
+++ b/include/ui-window-private.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 2008 Bradley Smith <brad@brad-smith.co.uk>
+ *
+ * GNU Robots UI Test, ui-window-private.h.
+ *
+ * GNU Robots is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU Robots is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __UI_WINDOW_PRIVATE_H__
+#define __UI_WINDOW_PRIVATE_H__
+
+G_BEGIN_DECLS
+
+struct _UIWindowPrivate
+{
+ GtkWidget *cmdwin;
+ GtkWidget *arena;
+};
+
+G_END_DECLS
+
+#endif /* __UI_WINDOW_PRIVATE_H__ */
diff --git a/include/ui-window.h b/include/ui-window.h
new file mode 100644
index 0000000..7b6c06f
--- /dev/null
+++ b/include/ui-window.h
@@ -0,0 +1,61 @@
+/* Copyright (C) 2008 Bradley Smith <brad@brad-smith.co.uk>
+ *
+ * GNU Robots UI Test, ui-window.h.
+ *
+ * GNU Robots is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNU Robots is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __UI_WINDOW_H__
+#define __UI_WINDOW_H__
+
+#include "map.h"
+
+#include <gtk/gtkwindow.h>
+
+G_BEGIN_DECLS
+
+#define UI_TYPE_WINDOW \
+ ui_window_get_type()
+#define UI_WINDOW(obj) \
+ G_TYPE_CHECK_INSTANCE_CAST(obj, UI_TYPE_WINDOW, UIWindow)
+#define UI_WINDOW_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_CAST(klass, UI_WINDOW_TYPE, UIWindowClass)
+#define IS_UI_WINDOW(obj) \
+ G_TYPE_CHECK_INSTANCE_TYPE(obj, UI_TYPE_WINDOW)
+#define IS_UI_WINDOW_CLASS(klass) \
+ G_TYPE_CHECK_CLASS_TYPE(klass, UI_TYPE_WINDOW)
+
+typedef struct _UIWindow UIWindow;
+typedef struct _UIWindowClass UIWindowClass;
+typedef struct _UIWindowPrivate UIWindowPrivate;
+
+struct _UIWindow
+{
+ GtkWindow widget;
+ UIWindowPrivate* priv;
+};
+
+struct _UIWindowClass
+{
+ GtkWindowClass parent_class;
+};
+
+GType ui_window_get_type(void) G_GNUC_CONST;
+
+GtkWidget *ui_window_new();
+void ui_window_postinit(UIWindow *window, Map* map);
+
+G_END_DECLS
+
+#endif /* __UI_WINDOW_H__ */
diff --git a/include/userinterface.h b/include/userinterface.h
deleted file mode 100644
index fc92e9c..0000000
--- a/include/userinterface.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/* Copyright (C) 1998 Jim Hall <jhall1@isd.net>
- * Copyright (C) 2008 Bradley Smith <brad@brad-smith.co.uk>
- *
- * GNU Robots game engine.
- *
- * GNU Robots is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNU Robots is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Robots. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __USER_INTERFACE_H__
-#define __USER_INTERFACE_H__
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/xpm.h>
-#include <X11/keysym.h>
-
-#include <glib-object.h>
-/*#include "userinterface.h"*/
-#include "map.h"
-
-G_BEGIN_DECLS
-
-#define G_TYPE_USER_INTERFACE user_interface_get_type()
-#define G_IS_USER_INTERFACE(obj) G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- G_TYPE_USER_INTERFACE)
-#define G_IS_USER_INTERFACE_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE ((klass), \
- G_TYPE_USER_INTERFACE)
-#define USER_INTERFACE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS ((obj), \
- G_TYPE_USER_INTERFACE, \
- UserInterfaceClass)
-#define USER_INTERFACE(obj) G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- G_TYPE_USER_INTERFACE, UserInterface)
-#define USER_INTERFACE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST ((klass), \
- G_TYPE_USER_INTERFACE, \
- UserInterfaceClass)
-
-typedef struct _UserInterface UserInterface;
-typedef struct _UserInterfaceClass UserInterfaceClass;
-
-struct _UserInterface {
- GObject object;
- Map *map;
- MapSize *map_size;
-
- Display *dpy;
- Window x_win;
- Atom wm_delete_win;
- Atom wm_protocols;
- GC gc;
- GC buf_gc;
- Font text;
-
-#ifdef USE_MITSHM
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <X11/extensions/XShm.h>
- XShmSegmentInfo shm_info;
- guchar use_mitshm = 1;
-#endif
-
- gint win_width;
- gint win_height;
-
- Pixmap win_buf;
-
- XImage *win_bufi;
- XImage *statusbar;
- XImage *space;
- XImage *food;
- XImage *wall;
- XImage *prize;
- XImage *baddie;
- XImage *robotDirs[4];
- XImage *robotPix;
-};
-
-struct _UserInterfaceClass {
- GObjectClass parent_class;
-};
-
-/* normal GObject stuff */
-GType user_interface_get_type (void);
-
-UserInterface* user_interface_new (Map* map);
-
-void user_interface_add_thing (UserInterface *ui,
- gint x,
- gint y,
- gint thing);
-
-void user_interface_run (UserInterface *ui);
-
-void user_interface_draw (UserInterface *ui);
-
-void user_interface_update_status (UserInterface *ui,
- const gchar *s,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_move_robot (UserInterface *ui,
- gint from_x,
- gint from_y,
- gint to_x,
- gint to_y,
- gint cdir,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_robot_smell (UserInterface *ui,
- gint x,
- gint y,
- gint cdir,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_robot_zap (UserInterface *ui,
- gint x,
- gint y,
- gint cdir,
- gint x_to,
- gint y_to,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_robot_feel (UserInterface *ui,
- gint x,
- gint y,
- gint cdir,
- gint x_to,
- gint y_to,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_robot_grab (UserInterface *ui,
- gint x,
- gint y,
- gint cdir,
- gint x_to,
- gint y_to,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_robot_look (UserInterface *ui,
- gint x,
- gint y,
- gint cdir,
- gint x_to,
- gint y_to,
- glong energy,
- glong score,
- glong shields);
-
-void user_interface_get_string (UserInterface *ui,
- gchar *prompt,
- gchar *buff,
- gint len);
-
-/* SYMBOLIC CONSTANTS */
-#define dist(f_x, f_y, t_x, t_y) (abs((f_x)-(t_x))+abs((f_y)-(t_y)))
-
-G_END_DECLS
-
-#endif /* __USER_INTERFACE_H__ */