diff options
author | Benjamin Otte <otte@redhat.com> | 2011-10-16 22:18:51 -0700 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2011-10-16 22:32:55 -0700 |
commit | ce994e311f4573f82ccdd83ddf5ccf1a217bb46a (patch) | |
tree | 21fcd6d60819cf4e4af37e89536b99fc6107d932 | |
parent | 0790f6cfc478812d08a1ef4be5f5134ba952d5ef (diff) |
bomb: Handle graphics differently
When the bomb isn't existing, remove the graphic. Reload it when the
bomb is dropped.
-rw-r--r-- | games/bomber/bomber-bomb.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/games/bomber/bomber-bomb.c b/games/bomber/bomber-bomb.c index 3c429d1..5b2f5fe 100644 --- a/games/bomber/bomber-bomb.c +++ b/games/bomber/bomber-bomb.c @@ -107,6 +107,7 @@ static gboolean bomber_bomb_move_to (GameSprite *sprite, const GamePoint *dest) { BomberBomb *bomb = BOMBER_BOMB (sprite); + GameObject *graphic; gboolean dropped; dropped = sprite->pos.x < 0.0 && sprite->pos.y < 0.0; @@ -114,10 +115,12 @@ bomber_bomb_move_to (GameSprite *sprite, const GamePoint *dest) return FALSE; if (dropped) { - g_object_set (sprite->graphic, "animate", TRUE, NULL); bomb->countdown = BOMBER_BOMB_COUNTDOWN_TIME; if (bomb->owner) bomb->range = bomb->owner->range; + graphic = game_game_spawn_object (GAME_OBJECT (bomb)->game, "bomb"); + g_object_set (bomb, "graphic", graphic, NULL); + g_object_unref (graphic); } if (sprite->pos.x < 0.0 && sprite->pos.y < 0.0) { g_slist_free (bomb->collisions); @@ -137,7 +140,7 @@ bomber_bomb_explode (BomberBomb *bomb) bomb->countdown = -1; game_coord_from_sprite (&coord, GAME_SPRITE (bomb)); - g_object_set (bomb, "position", &nowhere, NULL); + g_object_set (bomb, "position", &nowhere, "graphic", NULL, NULL); bomber_grid_explode (BOMBER_GRID (GAME_SPRITE (bomb)->board), &coord, bomb->range); g_object_get (bomb, "orientation", &dir, NULL); if (dir != GAME_DIRECTION_NONE) { @@ -254,15 +257,10 @@ bomber_bomb_get_type () void bomber_bomb_new (BomberBomber *bomber) { - GameObject *graphic; - g_return_if_fail (BOMBER_IS_BOMBER (bomber)); - graphic = game_game_spawn_object (GAME_OBJECT (bomber)->game, "bomb"); game_board_add_sprite (GAME_SPRITE (bomber)->board, BOMBER_TYPE_BOMB, - "owner", bomber, "position", &nowhere, "graphic", graphic, - "speed", BOMBER_BOMB_SPEED, NULL); - g_object_unref (graphic); + "owner", bomber, "position", &nowhere, "speed", BOMBER_BOMB_SPEED, NULL); } gboolean |