diff options
author | Bradley Smith | 2008-03-09 18:37:58 +0000 |
---|---|---|
committer | Bradley Smith | 2008-03-09 18:37:58 +0000 |
commit | 1eac647d46231ec03bc9647b72d32dc093bf366d (patch) | |
tree | fbf409498759d5fcb08c44b986080a1cc6b32485 | |
parent | Modified Changelog. (diff) | |
download | gnurobots-1eac647d46231ec03bc9647b72d32dc093bf366d.tar.gz |
Misc cleanups and GType style conversion.
Signed-off-by: Bradley Smith <brad@brad-smith.co.uk>
-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); } |