diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/grobot.c | 222 | ||||
-rw-r--r-- | src/map.c | 42 | ||||
-rw-r--r-- | src/userinterface.c | 69 |
3 files changed, 139 insertions, 194 deletions
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); } |