diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/Makefile.am | 16 | ||||
-rw-r--r-- | include/grobot.h | 6 | ||||
-rw-r--r-- | include/ui-arena.h | 83 | ||||
-rw-r--r-- | include/ui-cmdwin.h | 60 | ||||
-rw-r--r-- | include/ui-window-private.h | 32 | ||||
-rw-r--r-- | include/ui-window.h | 61 | ||||
-rw-r--r-- | include/userinterface.h | 180 |
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__ */ |