X-Git-Url: http://nitlanguage.org diff --git a/contrib/action_nitro/src/action_nitro.nit b/contrib/action_nitro/src/action_nitro.nit index f928a85..bd0e6ff 100644 --- a/contrib/action_nitro/src/action_nitro.nit +++ b/contrib/action_nitro/src/action_nitro.nit @@ -41,6 +41,9 @@ redef class App # Textures of the biplane, jet, helicopter, parachute and powerups var planes_sheet = new PlanesImages + # Animation when opening the parachute + var parachute_animation = new Animation(planes_sheet.parachute, 16.0) + # Animation for the player movement private var running_texture = new Texture("textures/player.png") private var running_animation: Animation = running_texture.to_animation(10.0, 12, 0) @@ -77,11 +80,11 @@ redef class App # Particle effects # Explosion particles - var explosions = new ParticleSystem(20, explosion_program, + var explosions = new ParticleSystem(100, explosion_program, new Texture("particles/explosion00.png")) # Blood explosion particles - var blood = new ParticleSystem(20, explosion_program, + var blood = new ParticleSystem(100, explosion_program, new Texture("particles/blood07.png")) # Smoke for the background @@ -134,6 +137,9 @@ redef class App redef fun on_create do + blood.texture.as(RootTexture).premultiply_alpha = false + explosions.texture.as(RootTexture).premultiply_alpha = false + super show_splash_screen new Texture("textures/splash.jpg") @@ -147,10 +153,10 @@ redef class App ui_camera.reset_height 1080.0 # Register particle systems - particle_systems.add explosions - particle_systems.add blood particle_systems.add smoke particle_systems.add clouds + particle_systems.add blood + particle_systems.add explosions # Stars background sprites.add stars @@ -465,12 +471,12 @@ redef class Human # Show death animation (explosion) fun death_animation do - var force = 4.0 + var force = 2.0 health = 0.0 - for i in 32.times do + for i in 16.times do app.blood.add( new Point3d[Float](center.x & force, center.y & force, center.z & force), - (2048.0 & 4096.0) * force, 0.3 & 0.1) + (4096.0 & 2048.0) * force, 0.3 & 0.1) end end end @@ -525,8 +531,12 @@ redef class Enemy end redef class Parachute - redef var sprite = new Sprite(app.planes_sheet.parachute, center) is lazy - init do sprite.scale = width / sprite.texture.width + redef var sprite = new Sprite(app.planes_sheet.parachute_open, center) is lazy + init + do + sprite.scale = width / sprite.texture.width + sprite.animate app.parachute_animation + end end redef class Player @@ -615,11 +625,12 @@ redef class World super # Particles - app.explosions.add(center, 8192.0 * force, 0.3) - for i in (4.0*force).to_i.times do + var range = 0.5 * force + app.explosions.add(center, 4096.0 * force, 0.3) + for i in (2.0*force).to_i.times do app.explosions.add( - new Point3d[Float](center.x & force, center.y & force/2.0, center.z & force), - (4096.0 & 2048.0) * force, 0.3 & 0.3, 0.5.rand) + new Point3d[Float](center.x & range, center.y & range, center.z & range), + (2048.0 & 1024.0) * force, 0.3 & 0.3, 0.5.rand) end end end @@ -687,8 +698,8 @@ redef class SmokeProgram gl_PointSize = scale / gl_Position.z * (pt+0.1); if (pt < 0.1) - v_color.a = pt / 0.1; + v_color *= pt / 0.1; else - v_color.a = 1.0 - pt*0.9; + v_color *= 1.0 - pt*0.9; """ end