5 static const float WALKSPEED = 80;
7 SnowBall::SnowBall(LispReader& reader)
9 reader.read_float("x", start_position.x);
10 reader.read_float("y", start_position.y);
11 bbox.set_size(31.8, 31.8);
12 sprite = sprite_manager->create("snowball");
15 SnowBall::SnowBall(float pos_x, float pos_y)
17 start_position.x = pos_x;
18 start_position.y = pos_y;
19 bbox.set_size(31.8, 31.8);
20 sprite = sprite_manager->create("snowball");
24 SnowBall::write(LispWriter& writer)
26 writer.start_list("snowball");
28 writer.write_float("x", get_pos().x);
29 writer.write_float("y", get_pos().y);
31 writer.end_list("snowball");
37 physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
38 sprite->set_action(dir == LEFT ? "left" : "right");
42 SnowBall::collision_squished(Player& player)
44 sprite->set_action(dir == LEFT ? "squished-left" : "squished-right");
45 kill_squished(player);
50 SnowBall::collision_solid(GameObject& , const CollisionHit& hit)
52 if(fabsf(hit.normal.y) > .5) { // hit floor or roof?
53 physic.set_velocity_y(0);
54 } else { // hit right or left
55 dir = dir == LEFT ? RIGHT : LEFT;
56 sprite->set_action(dir == LEFT ? "left" : "right");
57 physic.set_velocity_x(-physic.get_velocity_x());