android_api_target 15
end
-import gamnit::simple_2d
+import gamnit::flat
import game_logic
import spritesheet
+import app::audio
redef class Spritesheet
# Largest meteors, organized by color
# Current world in play
var world = new World(12, 2, display.aspect_ratio) is lazy
+ # Sound effects
+ private var fx_fire = new Sound("sounds/fire.mp3")
+ private var fx_explosion_ship = new Sound("sounds/explosion_ship.wav")
+ private var fx_explosion_asteroids = new Sound("sounds/explosion_asteroids.wav")
+
redef fun on_create
do
super
return true
else if event.name == "escape" then
exit 0
+ else if event.name == "." and event.is_down then
+ dynamic_resolution_ratio *= 2.0
+ print dynamic_resolution_ratio
+ else if event.name == "," and event.is_down then
+ dynamic_resolution_ratio /= 2.0
+ print dynamic_resolution_ratio
end
end
redef fun do_turn(dt)
do
super
- sprite.rotation = rotation + pi/2.0
+ sprite.rotation = rotation - pi/2.0
end
redef fun destroy
sprite = new Sprite(tex, center)
super
end
+
+ redef fun destroy
+ do
+ super
+ app.fx_explosion_asteroids.play
+ end
end
redef class Bullet
thrust_sprite.center.x = center.x - dist_to_engine*rotation.cos
thrust_sprite.center.y = center.y - dist_to_engine*rotation.sin
thrust_sprite.center.z = center.z
- thrust_sprite.rotation = rotation + pi/2.0
+ thrust_sprite.rotation = rotation - pi/2.0
# Show or hide the thrust sprite
if applied_thrust > 0.0 then
thrust_sprite.alpha = 1.0
+
else if thrust_sprite.alpha > 0.0 then
thrust_sprite.alpha -= dt*4.0
if thrust_sprite.alpha < 0.0 then thrust_sprite.alpha = 0.0
# HACK, the "enemy" ship used for the player points downwards
sprite.rotation += pi
end
+
+ redef fun fire
+ do
+ super
+ app.fx_fire.play
+ end
+
+ redef fun hit
+ do
+ super
+ app.fx_explosion_ship.play
+ end
end
redef class KeyEvent
# How does this event affect the ship thrust?
fun rotation: Float
do
- if is_arrow_right or name == "d" then return 1.0
- if is_arrow_left or name == "a" then return -1.0
+ if is_arrow_right or name == "d" then return -1.0
+ if is_arrow_left or name == "a" then return 1.0
return 0.0
end
end