Added full-surface alpha and rotaiton and scaling support
[luagame.git] / demos / shine_on / scripts / Player.lua
blobd560ad7d99bd3abd94a4d5ab875aac4a7ebba9e2
1 require "scripts/TinyPhazon"
3 --default values
4 Player = Object:new()
5 Player.type = "Player"
7 Player.image_l, Player.w, Player.h = get_image("images/player_left.png")
8 Player.image_r = get_image("images/player_right.png")
9 Player.image_c = get_image("images/player_charged.png")
10 Player.left = false
11 Player.right = false
12 Player.heading = 0
13 Player.charges = 0
15 Player.psys = ParticleSystem:new()
16 Player.psys.object = TinyPhazon
17 Player.psys.angle_min = 45
18 Player.psys.angle_max = 135
19 Player.psys.speed_min = 4
20 Player.psys.speed_max = 7
21 Player.psys.particles_per_update_min = 5
22 Player.psys.particles_per_update_max = 10
23 Player.psys.life_min = 1
24 Player.psys.life_max = 5
25 Player.psys.on = false
27 function Player:new(o)
28 o = o or {}
29 setmetatable(o, self)
30 self.__index = self
31 o.lerp = create_absolute_lerp(20,20,8)
32 return o
33 end
36 function Player:update(delta)
37 if self.right == true and self.left == true then
38 self.speed = 0
39 elseif self.right == true then
40 self.speed = 5
41 elseif self.left == true then
42 self.speed = -5
43 else
44 self.speed = 0
45 end
47 Object.update(self, delta)
49 if self.x < 0 then self.x = 0 end
50 if self.x > 640 - 32 then self.x = 640 - 32 end
52 if self.charges < 20 then
53 self.psys.on = false
54 else
55 self.psys.on = true
56 end
58 self.psys.x = self.x + 8
59 self.psys.y = self.y
60 self.psys:update()
62 end
65 function Player:shoot()
66 if self.charges >= 20 then
67 bullet_list:push_back(PhazonBlast:new({x=self.x, y=self.y, heading=90, speed=10}))
68 self.charges = self.charges - 20
69 end
70 end
73 function Player:draw()
74 self.psys:draw()
75 if self.charges < 20 then
76 local dist = self.lerp(self.charges)
78 display(self.image_l, self.x-self.x_offset-dist, self.y-self.y_offset, self.rotation, 1, 1, 255)
79 display(self.image_r, self.x-self.x_offset+dist, self.y-self.y_offset, self.rotation, 1, 1, 255)
80 else
81 display(self.image_c, self.x-self.x_offset, self.y-self.y_offset, self.rotation, 1, 1, 255)
82 end
83 end