forked from pyrex/chameleonic
pull changes from upstream #4
@ -135,6 +135,10 @@ function level:reinit(n)
|
||||
self:spawn_exit()
|
||||
end
|
||||
|
||||
function level:restart()
|
||||
self:reinit(self.ix)
|
||||
end
|
||||
|
||||
function level:advance()
|
||||
self:reinit(self.ix+1)
|
||||
end
|
||||
@ -471,6 +475,10 @@ add(modules,player)
|
||||
|
||||
function player:init()
|
||||
--self:reinit(8,14)
|
||||
|
||||
-- don't change this on reinit:
|
||||
-- it stays the same when the level is changed or reloaded
|
||||
self.vanish_frame=0
|
||||
end
|
||||
|
||||
function player:reinit(x,y)
|
||||
@ -481,6 +489,7 @@ function player:reinit(x,y)
|
||||
self.todo={}
|
||||
|
||||
self.fall_frame=0
|
||||
self.reset_frame=0
|
||||
|
||||
self.orientx=-1
|
||||
self.orienty=0
|
||||
@ -509,6 +518,10 @@ function player:update()
|
||||
return xs
|
||||
end
|
||||
|
||||
-- this is a non-gameplay action that takes precedence over
|
||||
-- all gameplay actions
|
||||
self:_vanish_if_requested()
|
||||
|
||||
if not self:any_busy() then
|
||||
if level:win_at(self.x,self.y) then
|
||||
level:advance()
|
||||
@ -584,10 +597,31 @@ function player:update()
|
||||
end
|
||||
end
|
||||
|
||||
function player:_fall()
|
||||
if self.fall_frame<10 then
|
||||
self.fall_frame+=1
|
||||
function player:_vanish_if_requested()
|
||||
local bvan=btn(❎)
|
||||
if self.bvan and not bvan then
|
||||
self.vanishing=false
|
||||
elseif not self.bvan and bvan then
|
||||
self.vanishing=true
|
||||
end
|
||||
self.bvan=bvan
|
||||
|
||||
if self.vanishing then
|
||||
self.vanish_frame+=1
|
||||
|
||||
if (self.fall_frame>10 or self.vanish_frame>20) then
|
||||
level:restart()
|
||||
self.vanishing=false
|
||||
end
|
||||
else
|
||||
self.vanish_frame-=1
|
||||
end
|
||||
|
||||
self.vanish_frame=max(self.vanish_frame,0)
|
||||
end
|
||||
|
||||
function player:_fall()
|
||||
if (self.fall_frame<10) self.fall_frame+=1
|
||||
end
|
||||
|
||||
function player:_rope_pos()
|
||||
@ -609,20 +643,37 @@ function player:draw()
|
||||
|
||||
local head=2-self.orienty
|
||||
|
||||
if (self.fall_frame>5) return
|
||||
|
||||
if (self.fall_frame>0) then
|
||||
local vanish_level=self.vanish_frame/20
|
||||
local invis_level=max(self.fall_frame/10,4*(vanish_level-0.75))
|
||||
if (invis_level>=1.0) return
|
||||
|
||||
--px+=sin(vanish_level*16)*max(vanish_level-0.1,0)*1
|
||||
|
||||
-- base colors
|
||||
pal(13,14)
|
||||
pal(15,14)
|
||||
pal(5,12)
|
||||
pal(4,12)
|
||||
pal(2,3)
|
||||
|
||||
-- vanish colors
|
||||
local vanish=split"13,15,14,5,4,12,2,3,9,10"
|
||||
for i,ilc in ipairs(vanish) do
|
||||
if (vanish_level>i/#vanish) pal(ilc,1)
|
||||
end
|
||||
|
||||
if self.fall_frame>3 then
|
||||
for i=0,15 do pal(i,1) end
|
||||
end
|
||||
|
||||
if self.orientx==-1 then
|
||||
spr(16,px+6,py-2,1,1)
|
||||
if (self.rope and self.fall_frame==0) self.rope:draw()
|
||||
if (self.rope and invis_level<=0.25) self.rope:draw()
|
||||
spr(17,px+1,py,1,1)
|
||||
spr(head,px-3,py-3,1,1)
|
||||
else
|
||||
spr(16,px-6,py-2,1,1,true)
|
||||
if (self.rope and self.fall_frame==0) self.rope:draw()
|
||||
if (self.rope and invis_level<=0.25) self.rope:draw()
|
||||
spr(17,px-1,py,1,1,true)
|
||||
spr(head,px+3,py-3,1,1,true)
|
||||
end
|
||||
@ -1338,22 +1389,22 @@ end
|
||||
|
||||
|
||||
__gfx__
|
||||
000000000003000000000033000300000000000000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000000333330000003333033333000aa00aa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000009933399000399330933333900aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000009a333a90033a9330933333900aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000003333333033333300033333000099990000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
0000000003333300000033000333330000aaaa0000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
0000000000333c0003333c0000333000000aa00000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000000003000000000022000300000000000000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000000333330000003322033333000aa00aa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000009933399000399320933333900aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000009a333a90033a9320933333900aaaaaa000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000002333332033333200022222000099990000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
0000000002222200000022000222220000aaaa0000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
0000000000222c0002222c0000222000000aa00000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
000000000000cc000000cc000000cc000044440000000000000000000000000000000000000000000000000000000000dddddddd000000000000000000000000
|
||||
0000ee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
000e00e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00e0000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00e0e00e00c0c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00ee00ee00ccccc00000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00000ee00ccccccc0000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00eeee000c00c00c0000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
eeee0000cc0cc0cc0000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
0000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
000f00f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00d0000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00d0d00f00c040500000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00dd00ee00c445500000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00000ee00c4445550000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00eeee000c0040050000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
eeee0000cc0440550000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000
|
||||
00000000000a90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
00000aaaaaaa91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
0000aaaaaa1a91100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
|
Loading…
Reference in New Issue
Block a user