summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-10-16 22:18:51 -0700
committerBenjamin Otte <otte@redhat.com>2011-10-16 22:32:55 -0700
commitce994e311f4573f82ccdd83ddf5ccf1a217bb46a (patch)
tree21fcd6d60819cf4e4af37e89536b99fc6107d932
parent0790f6cfc478812d08a1ef4be5f5134ba952d5ef (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.c14
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