|
@@ -8,21 +8,28 @@
|
|
|
|
|
|
t=0
|
|
|
|
|
|
+local player_walk_speed = 1
|
|
|
+local player_slide_speed = 2
|
|
|
local player_fire_cooldown = 3
|
|
|
local player_bullet_speed = 5
|
|
|
|
|
|
local player = {
|
|
|
- screenx=110,
|
|
|
- screeny=80,
|
|
|
+ x=110,
|
|
|
+ y=80,
|
|
|
+ yvel=0,
|
|
|
spr=0,
|
|
|
spr_base=256,
|
|
|
flip=0,
|
|
|
cnt_run=0,
|
|
|
cnt_fire=0,
|
|
|
cdn_fire=0,
|
|
|
+ cdn_auto_fire=0,
|
|
|
frames_run={258,260,262,260},
|
|
|
frame_slide=266,
|
|
|
bullets={},
|
|
|
+ is_jumping=false,
|
|
|
+ jump_button_held=false,
|
|
|
+ cnt_slide=0,
|
|
|
}
|
|
|
|
|
|
function BOOT()
|
|
@@ -32,26 +39,62 @@ end
|
|
|
function update()
|
|
|
local is_running = false
|
|
|
|
|
|
+ if btn(1) and btn(5) then
|
|
|
+ if not player.is_jumping then
|
|
|
+ player.cnt_slide = 30
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
if btn(2) then
|
|
|
player.cnt_run = player.cnt_run + 1
|
|
|
player.flip = 1
|
|
|
is_running = true
|
|
|
+ player.x = player.x - player_walk_speed
|
|
|
end
|
|
|
if btn(3) then
|
|
|
player.cnt_run = player.cnt_run + 1
|
|
|
player.flip = 0
|
|
|
is_running = true
|
|
|
+ player.x = player.x + player_walk_speed
|
|
|
end
|
|
|
if btn(4) then
|
|
|
- if player.cdn_fire <= 0 then
|
|
|
+ if player.cdn_fire <= 0 or player.cdn_auto_fire <= 0 then
|
|
|
player.cnt_fire = 10
|
|
|
player.cdn_fire = player_fire_cooldown
|
|
|
+ player.cdn_auto_fire = player_fire_cooldown + 20
|
|
|
spawn_bullet()
|
|
|
end
|
|
|
else
|
|
|
player.cnt_fire = player.cnt_fire - 1
|
|
|
player.cdn_fire = player.cdn_fire - 1
|
|
|
end
|
|
|
+ player.cdn_auto_fire = player.cdn_auto_fire - 1
|
|
|
+
|
|
|
+ if btn(5) then
|
|
|
+ if player.is_jumping == false and player.jump_button_held == false then
|
|
|
+ player.yvel = -4.4
|
|
|
+ player.is_jumping = true
|
|
|
+ player.jump_button_held = true
|
|
|
+ end
|
|
|
+ else
|
|
|
+ if player.is_jumping and player.yvel < -2.1 then
|
|
|
+ player.yvel = -1.2
|
|
|
+ end
|
|
|
+ player.jump_button_held = false
|
|
|
+ end
|
|
|
+
|
|
|
+ -- TODO: actual collision
|
|
|
+ player.y = player.y + player.yvel
|
|
|
+ if player.y < 80 then
|
|
|
+ if player.yvel < 12 then
|
|
|
+ player.yvel = player.yvel + 0.25
|
|
|
+ end
|
|
|
+ else
|
|
|
+ player.yvel = 0
|
|
|
+ player.y = 80
|
|
|
+ player.is_jumping = false
|
|
|
+ end
|
|
|
+
|
|
|
|
|
|
-- reset run counter if not pressing a button
|
|
|
if not is_running then player.cnt_run = 0 end
|
|
@@ -64,6 +107,10 @@ function update()
|
|
|
player.spr = player.spr_base
|
|
|
end
|
|
|
|
|
|
+ if player.is_jumping then
|
|
|
+ player.spr = 264
|
|
|
+ end
|
|
|
+
|
|
|
if player.cnt_fire > 0 then
|
|
|
player.spr = player.spr + 32
|
|
|
end
|
|
@@ -78,15 +125,15 @@ end
|
|
|
|
|
|
function spawn_bullet()
|
|
|
local bullet_speed = player_bullet_speed
|
|
|
- local bullet_x = player.screenx + 11
|
|
|
+ local bullet_x = player.x + 11
|
|
|
if player.flip == 1 then
|
|
|
bullet_speed = bullet_speed * -1
|
|
|
- bullet_x = player.screenx
|
|
|
+ bullet_x = player.x
|
|
|
end
|
|
|
|
|
|
bullet = {
|
|
|
x = bullet_x,
|
|
|
- y = player.screeny+7,
|
|
|
+ y = player.y+7,
|
|
|
spd = bullet_speed,
|
|
|
spr = 286,
|
|
|
}
|
|
@@ -95,12 +142,16 @@ function spawn_bullet()
|
|
|
end
|
|
|
|
|
|
function draw_player(colorkey)
|
|
|
- spr(player.spr, player.screenx, player.screeny, colorkey, 1, player.flip, 0, 2, 2)
|
|
|
+ spr(player.spr, player.x, player.y, colorkey, 1, player.flip, 0, 2, 2)
|
|
|
+ local flash_offset = 2
|
|
|
+ if player.spr == 290 or player.spr == 294 then
|
|
|
+ flash_offset = 3
|
|
|
+ end
|
|
|
if player.cnt_fire > 8 then
|
|
|
if player.flip == 1 then
|
|
|
- spr(270, player.screenx, player.screeny+2, colorkey, 1, player.flip)
|
|
|
+ spr(270, player.x, player.y+flash_offset, colorkey, 1, player.flip)
|
|
|
else
|
|
|
- spr(270, player.screenx+8, player.screeny+2, colorkey, 1, player.flip)
|
|
|
+ spr(270, player.x+8, player.y+flash_offset, colorkey, 1, player.flip)
|
|
|
end
|
|
|
end
|
|
|
|
|
@@ -114,10 +165,12 @@ function TIC()
|
|
|
|
|
|
update()
|
|
|
|
|
|
- cls(13)
|
|
|
+ cls(7)
|
|
|
draw_player(5)
|
|
|
|
|
|
- print(player.spr)
|
|
|
+ line(0, 96, 240, 96, 0)
|
|
|
+ rect(0, 97, 240, 6, 4)
|
|
|
+ line(0, 103, 240, 103, 12)
|
|
|
|
|
|
t=t+1
|
|
|
end
|
|
@@ -147,7 +200,7 @@ end
|
|
|
-- 020:55500bbb5550b0bb5550b99955509999555099bb555099995550909955500089
|
|
|
-- 021:b0555555b005555599055555b9055555a005555590555555900555559a055555
|
|
|
-- 022:5009bbb9509b0bbb509900bb50000b99009abb99099999000009900055000050
|
|
|
--- 023:40055555b9905555b990555500055555bba055559990555599905555899a0555
|
|
|
+-- 023:40055555b9905555b990555500055555bba05555999055559990555589990555
|
|
|
-- 024:55500bbb555500bb5555009955550b9955550bb055009ab05509990555099805
|
|
|
-- 025:bb005555b00555559bb005559bba055509990555099905550999a05500000055
|
|
|
-- 026:5099999950b999bb50b994f4550b94445000994b509bbbbb00990bb909980099
|
|
@@ -156,15 +209,15 @@ end
|
|
|
-- 029:bbb90555bb005555abba05559999055508890555089905555099055550000555
|
|
|
-- 030:5fff5555fcccf555fcccf5555fff555555555555555555555555555555555555
|
|
|
-- 031:55ffff555f5555f5f55ff55ff5fccf5ff5fccf5ff55ff55f5f5555f555ffff55
|
|
|
--- 032:55555000555500bb55500999555099995550b9995550b99455500b9455509b99
|
|
|
+-- 032:55555000555500bb55500a99555099995550b9995550b99455500b9455509b99
|
|
|
-- 033:00555555b0055555ab00555599905555bb905555f49055554400000540009a00
|
|
|
--- 034:5555555555555000555500bb55500999555099995550b9995550b99450000b94
|
|
|
+-- 034:5555555555555000555500bb55500a99555099995550b9995550b99450000b94
|
|
|
-- 035:5555555500555555b0055555ab00555599905555bb905555f490555544000005
|
|
|
--- 036:55555000555500bb55500999555099995550b9995550b99455500b9455550099
|
|
|
+-- 036:55555000555500bb55500a99555099995550b9995550b99455500b9455550099
|
|
|
-- 037:00555555b0055555ab00555599905555bb905555f49055554400000540009a00
|
|
|
--- 038:5555555555555000555500bb55500999555099995550b9995550b99455500b94
|
|
|
+-- 038:5555555555555000555500bb55500a99555099995550b9995550b99455500b94
|
|
|
-- 039:5555555500555555b0055555ab00555599905555bb905555f490555544000005
|
|
|
--- 040:55555000555500bb5000099950990999509909995099b99450099b945500bb99
|
|
|
+-- 040:55555000555500bb50000a9950990999509909995099b99450099b945500bb99
|
|
|
-- 041:00555555b0055555ab00555599905555bb905555f4905555440000054b009a00
|
|
|
-- 042:55555000555500bb55500a99555099995550b9995550b99455500b9455550099
|
|
|
-- 043:00555555b0055555ab00555599a05555bb905555349055554400555540055555
|
|
@@ -179,7 +232,7 @@ end
|
|
|
-- 052:55500bbb5550b0bb5550b99955509999555099bb555099995550909955500089
|
|
|
-- 053:bbb999a0b000990090550005b9055555a005555590555555900555559a055555
|
|
|
-- 054:55550bb955550bbb555550bb50000b99009abb99099999000009900055000050
|
|
|
--- 055:40009a00b99999a0b990990000050005bba055559990555599905555899a0555
|
|
|
+-- 055:40009a00b99999a0b990990000050005bba05555999055559990555589990555
|
|
|
-- 056:55500bbb555500bb5555509955550b9955550bb055009ab05509990555099805
|
|
|
-- 057:bbb999a0b00099009bb000059bba055509990555099905550999a05500000055
|
|
|
-- 058:55000bbb5509b0bb5509909955099b99550000bb555009995550999955509988
|