From 5fce44d580c24ac4c817ca62614670b04b4cf10b Mon Sep 17 00:00:00 2001 From: Bradley Smith Date: Mon, 5 May 2008 22:36:42 +0100 Subject: Scrap plug-able interfaces in preparation for GTK GUI. Signed-off-by: Bradley Smith --- include/userinterface.h | 169 +++++++++++++++++++----------------------------- 1 file changed, 67 insertions(+), 102 deletions(-) (limited to 'include/userinterface.h') diff --git a/include/userinterface.h b/include/userinterface.h index c67d364..e8c7665 100644 --- a/include/userinterface.h +++ b/include/userinterface.h @@ -1,11 +1,11 @@ /* Copyright (C) 1998 Jim Hall * Copyright (C) 2008 Bradley Smith * - * GNU Robots game engine. This is the header file for user_interface module + * GNU Robots game engine. * - * GNU Robots is free software: you can redistribute it and/or modify + * 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 + * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * GNU Robots is distributed in the hope that it will be useful, @@ -21,121 +21,87 @@ #ifndef __USER_INTERFACE_H__ #define __USER_INTERFACE_H__ +#include +#include +#include +#include + #include +/*#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_INTERFACE(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) +#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 +#include +#include + 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 { - GTypeInterface parent; - - 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); + GObjectClass parent_class; }; /* normal GObject stuff */ -GType user_interface_get_type (void); +GType user_interface_get_type (void); + +UserInterface* user_interface_new (Map* map); -/* functions we want implemented by the implementers of our interface */ 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, @@ -207,10 +173,9 @@ void user_interface_get_string (UserInterface *ui, gchar *buff, gint len); -typedef UserInterface * (* UserInterfaceInitFunc) (Map *map, - GType parent_type); -#define USER_INTERFACE_INIT_FUNCTION "user_interface_new" +/* 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__*/ +#endif /* __USER_INTERFACE_H__ */ -- cgit v1.1