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__ */  | 
