diff options
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | include/grobot.h | 97 | ||||
| -rw-r--r-- | include/map.h | 24 | ||||
| -rw-r--r-- | include/userinterface.h | 333 | ||||
| -rw-r--r-- | src/grobot.c | 222 | ||||
| -rw-r--r-- | src/map.c | 42 | ||||
| -rw-r--r-- | src/userinterface.c | 69 | 
7 files changed, 369 insertions, 422 deletions
@@ -10,6 +10,10 @@  		Removed getopt.  	* various:  		Correct copyright headers. +	* include/grobot.h src/grobot.c src/map.c include/map.h: +		Tidy up, and convert GObject style. +	* src/userinterface.c include/userinterface.h: +		Tidy up.  2008-03-08  Bradley Smith <brad@brad-smith.co.uk> diff --git a/include/grobot.h b/include/grobot.h index 5495e0c..6ebcca3 100644 --- a/include/grobot.h +++ b/include/grobot.h @@ -17,9 +17,8 @@   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   */ -#ifndef _G_ROBOT_H -#define _G_ROBOT_H -/* MACROS */ +#ifndef __G_ROBOT_H__ +#define __G_ROBOT_H__  #include <glib-object.h>  #include <glib.h> @@ -28,72 +27,66 @@  G_BEGIN_DECLS -extern GType _g_robot_type; +#define G_TYPE_ROBOT            g_robot_get_type() +#define G_IS_ROBOT(obj)         G_TYPE_CHECK_INSTANCE_TYPE ((obj),\ +                                  G_TYPE_ROBOT) +#define G_IS_ROBOT_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE ((klass),\ +                                  G_TYPE_ROBOT) +#define G_ROBOT_GET_CLASS(obj)  G_TYPE_INSTANCE_GET_CLASS ((obj),\ +                                  G_TYPE_ROBOT, GRobotClass) +#define G_ROBOT(obj)            G_TYPE_CHECK_INSTANCE_CAST ((obj),\ +                                  G_TYPE_ROBOT, GRobot) +#define G_ROBOT_CLASS(klass)    G_TYPE_CHECK_CLASS_CAST ((klass),\ +                                  G_TYPE_ROBOT, GRobotClass)  typedef struct _GRobot GRobot; +typedef struct _GRobotClass GRobotClass;  struct _GRobot { -  GObject 	object; -   -  gint 		x; -  gint 		y; -  gint 		dir; -  glong 	score; -  glong 	energy; -  glong 	shields; -  glong 	shots; -  glong 	units; +  GObject   object; + +  gint      x; +  gint      y; +  gint      dir; +  glong     score; +  glong     energy; +  glong     shields; +  glong     shots; +  glong     units;    UserInterface *ui;    Map *map; -};  - -typedef struct _GRobotClass GRobotClass; +};  struct _GRobotClass { -  GObjectClass	parent_class; +  GObjectClass parent_class; -  void		(*death)	(GRobot *robot); +  void (*death) (GRobot *robot);  }; -#define G_TYPE_ROBOT			(_g_robot_type) -#define G_IS_ROBOT(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ROBOT)) -#define G_IS_ROBOT_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_ROBOT)) -#define G_ROBOT_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_ROBOT, GRobotClass)) -#define G_ROBOT(obj)			(G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ROBOT, GRobot)) -#define G_ROBOT_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_ROBOT, GRobotClass)) -  /* some convenient macros */ -#define G_ROBOT_POSITION_X(robot)	((robot)->x) -#define G_ROBOT_POSITION_Y(robot)	((robot)->y) +#define G_ROBOT_POSITION_X(robot)   ((robot)->x) +#define G_ROBOT_POSITION_Y(robot)   ((robot)->y)  /* normal GObject stuff */ -GType		g_robot_get_type			(void); +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); - -void		g_robot_turn 			(GRobot *robot, gint num_turns); -gboolean	g_robot_move 			(GRobot *robot, gint steps); -gboolean	g_robot_smell 			(GRobot *robot, gchar *str); -gboolean	g_robot_feel 			(GRobot *robot, gchar *str); -gboolean	g_robot_look 			(GRobot *robot, gchar *str); -gboolean 	g_robot_grab 			(GRobot *robot); -gboolean	g_robot_zap 			(GRobot *robot); -gboolean 	g_robot_stop 			(GRobot *robot); -glong		g_robot_get_shields 		(GRobot *robot); -glong		g_robot_get_energy 		(GRobot *robot); -glong		g_robot_get_score 		(GRobot *robot); +GRobot* g_robot_new(int x, int y, int dir, long score, long energy, +        long shield, long units, long shots, UserInterface *ui, Map *map); + +void        g_robot_turn            (GRobot *robot, gint num_turns); +gboolean    g_robot_move            (GRobot *robot, gint steps); +gboolean    g_robot_smell           (GRobot *robot, gchar *str); +gboolean    g_robot_feel            (GRobot *robot, gchar *str); +gboolean    g_robot_look            (GRobot *robot, gchar *str); +gboolean    g_robot_grab            (GRobot *robot); +gboolean    g_robot_zap             (GRobot *robot); +gboolean    g_robot_stop            (GRobot *robot); +glong       g_robot_get_shields     (GRobot *robot); +glong       g_robot_get_energy      (GRobot *robot); +glong       g_robot_get_score       (GRobot *robot);  G_END_DECLS -#endif +#endif /* __G_ROBOT_H__ */ diff --git a/include/map.h b/include/map.h index f8f8263..d807f7d 100644 --- a/include/map.h +++ b/include/map.h @@ -25,16 +25,16 @@  G_BEGIN_DECLS -#define G_TYPE_MAP			  (map_get_type()) -#define G_IS_MAP(obj)		  (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ -                                  G_TYPE_MAP)) -#define G_IS_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_MAP)) -#define MAP_GET_CLASS(obj)	  (G_TYPE_INSTANCE_GET_CLASS((obj), \ -                                  G_TYPE_MAP, MapClass)) -#define MAP(obj)			  (G_TYPE_CHECK_INSTANCE_CAST((obj), \ -                                  G_TYPE_MAP, Map)) -#define MAP_CLASS(klass)	  (G_TYPE_CHECK_CLASS_CAST((klass), \ -                                  G_TYPE_MAP, MapClass)) +#define G_TYPE_MAP			  map_get_type() +#define G_IS_MAP(obj)		  G_TYPE_CHECK_INSTANCE_TYPE((obj), \ +                                  G_TYPE_MAP) +#define G_IS_MAP_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_MAP) +#define MAP_GET_CLASS(obj)	  G_TYPE_INSTANCE_GET_CLASS((obj), \ +                                  G_TYPE_MAP, MapClass) +#define MAP(obj)			  G_TYPE_CHECK_INSTANCE_CAST((obj), \ +                                  G_TYPE_MAP, Map) +#define MAP_CLASS(klass)	  G_TYPE_CHECK_CLASS_CAST((klass), \ +                                  G_TYPE_MAP, MapClass)  typedef struct  { @@ -64,10 +64,10 @@ struct _MapClass {  #define MAP_SET_OBJECT(map, x, y, thing)	((map)->_map[(y)][(x)] = thing)  /* normal GObject stuff */ -GType   map_get_type      (void); +GType map_get_type(void);  /* Our object functions */ -Map*    map_new_from_file (const gchar *map, gint num_rows, gint num_cols); +Map* map_new_from_file(const gchar *map, gint num_rows, gint num_cols);  G_END_DECLS diff --git a/include/userinterface.h b/include/userinterface.h index 691e847..ef86f74 100644 --- a/include/userinterface.h +++ b/include/userinterface.h @@ -26,7 +26,21 @@  G_BEGIN_DECLS -extern GType _user_interface_type; +#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)  typedef struct _UserInterface UserInterface;  typedef struct _UserInterfaceClass UserInterfaceClass; @@ -34,174 +48,165 @@ typedef struct _UserInterfaceClass UserInterfaceClass;  struct _UserInterfaceClass {    GTypeInterface parent; -  void 	(* user_interface_add_thing)		(UserInterface *ui,  -					 	 gint x,  -					 	 gint y,  -					 	 gint thing); - -  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); - -/* routines to get/display data from/to user */ -   void (* user_interface_get_string) 		(UserInterface *ui, -						 gchar *prompt,  -						 gchar *buff,  -						 gint len); +  void  (* user_interface_add_thing)      (UserInterface *ui, +                         gint x, +                         gint y, +                         gint thing); + +  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);  }; -#define G_TYPE_USER_INTERFACE			(_user_interface_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)) -  /* normal GObject stuff */ -GType	user_interface_get_type		(void); +GType   user_interface_get_type     (void);  /* 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_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); - -/* routines to get/display data from/to user */ -void 	user_interface_get_string 	(UserInterface *ui, -					 gchar *prompt,  -					 gchar *buff,  -					 gint len); - -typedef UserInterface * (* UserInterfaceInitFunc) (Map *map,  -						   GType parent_type); +void    user_interface_add_thing        (UserInterface *ui, +                     gint x, +                     gint y, +                     gint thing); + +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); + +typedef UserInterface * (* UserInterfaceInitFunc) (Map *map, +                           GType parent_type);  #define USER_INTERFACE_INIT_FUNCTION "user_interface_new"  G_END_DECLS diff --git a/src/grobot.c b/src/grobot.c index 6f99335..91c8b32 100644 --- a/src/grobot.c +++ b/src/grobot.c @@ -27,6 +27,8 @@  #include <stdlib.h>  #include "sign.h" +G_DEFINE_TYPE(GRobot, g_robot, G_TYPE_OBJECT) +  enum  {    DEATH, @@ -44,56 +46,33 @@ enum    ARG_SHIELDS,    ARG_UNITS,    ARG_SHOTS, -    ARG_USER_INTERFACE,    ARG_MAP  }; -static gchar *things[] = -  { "space", "food", "prize", "wall", "baddie", "robot" }; +static gchar *things[] = { "space", "food", "prize", "wall", "baddie", +    "robot" };  static gint cthings[] = { SPACE, FOOD, PRIZE, WALL, BADDIE, ROBOT }; -GType _g_robot_type; -  static guint g_robot_signals[LAST_SIGNAL] = { 0 }; -static void g_robot_class_init (GRobotClass * klass);  static void g_robot_dispose (GObject * object);  static void g_robot_finalize (GObject * object);  static void g_robot_set_property (GObject * object, guint prop_id, -                  const GValue * value, GParamSpec * pspec); +    const GValue * value, GParamSpec * pspec);  static void g_robot_get_property (GObject * object, guint prop_id, -                  GValue * value, GParamSpec * pspec); +    GValue * value, GParamSpec * pspec);  static GObjectClass *parent_class = NULL;  static gint what_thing (const gchar *th); -GType -g_robot_get_type (void) +static void +g_robot_init (GRobot* robot)  { -  if (!_g_robot_type) -  { -    static const GTypeInfo object_info = { -      sizeof (GRobotClass), -      NULL, -      NULL, -      (GClassInitFunc) g_robot_class_init, -      NULL, -      NULL, -      sizeof (GRobot), -      0, -      (GInstanceInitFunc) NULL, -      NULL -    }; - -    _g_robot_type = -      g_type_register_static (G_TYPE_OBJECT, "GRobot", &object_info, 0); -  } - -  return _g_robot_type; +  /* Nothing yet, need to do priv stuff */  }  static void @@ -111,113 +90,116 @@ g_robot_class_init (GRobotClass *klass)    gobject_class->get_property = g_robot_get_property;    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_POS_X, -                   g_param_spec_int ("x", -                             "x", -                             "X co-ordinate of current Position of the Robot", -                             G_MININT, -                             G_MAXINT, -                             0, -                             G_PARAM_READWRITE | -                             G_PARAM_CONSTRUCT)); +                  g_param_spec_int ("x", +                          "x", +                          "X co-ordinate of current Position of the Robot", +                           G_MININT, +                           G_MAXINT, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_POS_Y, -                   g_param_spec_int ("y", -                             "y", -                             "y co-ordinate of current Position of the Robot", -                             G_MININT, -                             G_MAXINT, -                             0, -                             G_PARAM_READWRITE | -                             G_PARAM_CONSTRUCT)); +                  g_param_spec_int ("y", +                           "y", +                           "y co-ordinate of current Position of the Robot", +                           G_MININT, +                           G_MAXINT, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DIRECTION, -                   g_param_spec_int ("direction", -                             "direction", -                             "current Direction of the Robot", -                             G_MININT, -                             G_MAXINT, -                             0, -                             G_PARAM_READWRITE | -                             G_PARAM_CONSTRUCT)); +                  g_param_spec_int ("direction", +                           "direction", +                           "current Direction of the Robot", +                           G_MININT, +                           G_MAXINT, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SCORE, -                   g_param_spec_long ("score", -                              "Score", -                              "current Score of the Robot", -                              G_MINLONG, -                              G_MAXLONG, -                              0, -                              G_PARAM_READWRITE | -                              G_PARAM_CONSTRUCT)); +                  g_param_spec_long ("score", +                           "Score", +                           "current Score of the Robot", +                           G_MINLONG, +                           G_MAXLONG, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ENERGY, -                   g_param_spec_long ("energy", -                              "Energy", -                              "current Energy-level of the Robot", -                              G_MINLONG, -                              G_MAXLONG, -                              0, -                              G_PARAM_READWRITE | -                              G_PARAM_CONSTRUCT)); +                  g_param_spec_long ("energy", +                           "Energy", +                           "current Energy-level of the Robot", +                           G_MINLONG, +                           G_MAXLONG, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SHIELDS, -                   g_param_spec_long ("shields", -                              "Shields", -                              "current Shield-level of the Robot", -                              G_MINLONG, -                              G_MAXLONG, -                              0, -                              G_PARAM_READWRITE | -                              G_PARAM_CONSTRUCT)); +                  g_param_spec_long ("shields", +                           "Shields", +                           "current Shield-level of the Robot", +                           G_MINLONG, +                           G_MAXLONG, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_UNITS, -                   g_param_spec_long ("units", -                              "Units", -                              "Units walked by the Robot so far", -                              G_MINLONG, -                              G_MAXLONG, -                              0, -                              G_PARAM_READWRITE | -                              G_PARAM_CONSTRUCT)); +                  g_param_spec_long ("units", +                           "Units", +                           "Units walked by the Robot so far", +                           G_MINLONG, +                           G_MAXLONG, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SHOTS, -                   g_param_spec_long ("shots", -                              "Shots", -                              "Number of Shots fired by the Robot", -                              G_MINLONG, -                              G_MAXLONG, -                              0, -                              G_PARAM_READWRITE | -                              G_PARAM_CONSTRUCT)); - -  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_USER_INTERFACE, -                   g_param_spec_object ("user-interface", -                            "UserInterface", -                            "Reference to the UI object", -                            G_TYPE_OBJECT, -                            G_PARAM_READWRITE | -                            G_PARAM_CONSTRUCT)); +                  g_param_spec_long ("shots", +                           "Shots", +                           "Number of Shots fired by the Robot", +                           G_MINLONG, +                           G_MAXLONG, +                           0, +                           G_PARAM_READWRITE | +                           G_PARAM_CONSTRUCT)); + +  g_object_class_install_property (G_OBJECT_CLASS (klass), +      ARG_USER_INTERFACE, +                  g_param_spec_object ("user-interface", +                          "UserInterface", +                          "Reference to the UI object", +                          G_TYPE_OBJECT, +                          G_PARAM_READWRITE | +                          G_PARAM_CONSTRUCT));    g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAP, -                   g_param_spec_object ("map", -                            "Map", -                            "Reference to the Game Map object", -                            G_TYPE_OBJECT, -                            G_PARAM_READWRITE | -                            G_PARAM_CONSTRUCT)); +                  g_param_spec_object ("map", +                          "Map", +                          "Reference to the Game Map object", +                          G_TYPE_OBJECT, +                          G_PARAM_READWRITE | +                          G_PARAM_CONSTRUCT));    g_robot_signals[DEATH] = -    g_signal_new ("death", -          G_TYPE_FROM_CLASS (klass), -          G_SIGNAL_RUN_LAST, -          G_STRUCT_OFFSET (GRobotClass, death), -          NULL, -          NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, NULL); +                  g_signal_new ("death", +                          G_TYPE_FROM_CLASS (klass), +                          G_SIGNAL_RUN_LAST, +                          G_STRUCT_OFFSET (GRobotClass, death), +                          NULL, +                          NULL, +                          g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, +                          NULL);  }  static void -g_robot_set_property (GObject *object, guint prop_id, -              const GValue *value, GParamSpec *pspec) +g_robot_set_property (GObject *object, guint prop_id, const GValue *value, +        GParamSpec *pspec)  {    GRobot *robot;    GObject *obj; @@ -294,8 +276,8 @@ g_robot_set_property (GObject *object, guint prop_id,  }  static void -g_robot_get_property (GObject *object, guint prop_id, -              GValue *value, GParamSpec *pspec) +g_robot_get_property (GObject *object, guint prop_id, GValue *value, +        GParamSpec *pspec)  {    GRobot *robot; @@ -348,7 +330,7 @@ g_robot_new (gint x, gint y, gint dir, glong score, glong energy,           Map *map)  { -  return g_object_new (g_robot_get_type (), +  return G_ROBOT(g_object_new (g_robot_get_type(),                 "x", x,                 "y", y,                 "direction", dir, @@ -357,7 +339,7 @@ g_robot_new (gint x, gint y, gint dir, glong score, glong energy,                 "shields", shields,                 "units", units,                 "shots", shots, -               "user_interface", ui, "map", map, NULL); +               "user_interface", ui, "map", map, NULL));  }  static void @@ -27,58 +27,26 @@  #include "configs.h"  #include "map.h" +G_DEFINE_TYPE(Map, map, G_TYPE_OBJECT) +  enum  {    ARG_0,    ARG_SIZE  }; -GType _map_type = 0; - -static void map_class_init (MapClass *klass); -static void map_init (GObject *object); -  static void map_set_property (GObject *object, guint prop_id,                    const GValue *value, GParamSpec *pspec);  static void map_get_property (GObject *object, guint prop_id,                    GValue *value, GParamSpec *pspec); -static GObjectClass *parent_class = NULL; - -GType -map_get_type (void) -{ -  if (!_map_type) -  { -    static const GTypeInfo object_info = { -      sizeof (MapClass), -      NULL, -      NULL, -      (GClassInitFunc) map_class_init, -      NULL, -      NULL, -      sizeof (Map), -      0, -      (GInstanceInitFunc) map_init, -      NULL -    }; - -    _map_type = -      g_type_register_static (G_TYPE_OBJECT, "Map", &object_info, 0); -  } - -  return _map_type; -} -  static void  map_class_init (MapClass *klass)  {    GObjectClass *gobject_class; -  gobject_class = (GObjectClass *) klass; - -  parent_class = g_type_class_ref (G_TYPE_OBJECT); +  gobject_class = G_OBJECT_CLASS(klass);    gobject_class->set_property = map_set_property;    gobject_class->get_property = map_get_property; @@ -92,10 +60,8 @@ map_class_init (MapClass *klass)  }  static void -map_init (GObject *object) +map_init (Map *map)  { -  Map *map = MAP (object); -    map->_map = NULL;    map->size.num_rows = -1;    map->size.num_cols = -1; diff --git a/src/userinterface.c b/src/userinterface.c index e973460..8cee000 100644 --- a/src/userinterface.c +++ b/src/userinterface.c @@ -29,13 +29,13 @@    ARG_MAP  };*/ -GType _user_interface_type = 0; -  static void user_interface_base_init (UserInterfaceClass * klass);  GType  user_interface_get_type (void)  { +  static GType _user_interface_type = 0; +    if (!_user_interface_type)    {      static const GTypeInfo interface_info = { @@ -125,11 +125,11 @@ user_interface_robot_smell (UserInterface * ui,  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) +                gint x, +                gint y, +                gint cdir, +                gint x_to, +                gint y_to, glong energy, glong score, glong shields)  {    USER_INTERFACE_GET_CLASS (ui)->user_interface_robot_zap (ui, x, y, cdir,                                 x_to, y_to, energy, @@ -138,12 +138,12 @@ user_interface_robot_zap (UserInterface * ui,  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) +                 gint x, +                 gint y, +                 gint cdir, +                 gint x_to, +                 gint y_to, +                 glong energy, glong score, glong shields)  {    USER_INTERFACE_GET_CLASS (ui)->user_interface_robot_feel (ui, x, y, cdir,                                  x_to, y_to, @@ -153,12 +153,12 @@ user_interface_robot_feel (UserInterface * ui,  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) +                 gint x, +                 gint y, +                 gint cdir, +                 gint x_to, +                 gint y_to, +                 glong energy, glong score, glong shields)  {    USER_INTERFACE_GET_CLASS (ui)->user_interface_robot_grab (ui, x, y, cdir,                                  x_to, y_to, @@ -168,12 +168,12 @@ user_interface_robot_grab (UserInterface * ui,  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) +                 gint x, +                 gint y, +                 gint cdir, +                 gint x_to, +                 gint y_to, +                 glong energy, glong score, glong shields)  {    USER_INTERFACE_GET_CLASS (ui)->user_interface_robot_look (ui, x, y, cdir,                                  x_to, y_to, @@ -181,21 +181,18 @@ user_interface_robot_look (UserInterface * ui,                                  shields);  } -/* user_interfaces to get/display data from/to user */  void -user_interface_get_string (UserInterface * ui, -               gchar * prompt, gchar * buff, gint len) +user_interface_get_string (UserInterface *ui, gchar *prompt, gchar *buff, +        gint len)  { -  USER_INTERFACE_GET_CLASS (ui)->user_interface_get_string (ui, prompt, buff, -                                len); +  USER_INTERFACE_GET_CLASS(ui)->user_interface_get_string(ui, prompt, buff, +          len);  }  void -user_interface_update_status (UserInterface * ui, -                  const gchar * s, -                  glong energy, glong score, glong shields) +user_interface_update_status (UserInterface * ui, const gchar * s, +        glong energy, glong score, glong shields)  { -  USER_INTERFACE_GET_CLASS (ui)->user_interface_update_status (ui, s, energy, -                                   score, -                                   shields); +  USER_INTERFACE_GET_CLASS(ui)->user_interface_update_status(ui, s, energy, +          score, shields);  }  | 
