an atelier fangame for the pico-8
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
atelier_phoebe/screen_letters.lua

141 lines
3.2 KiB

letters = {
{[[
phoebe,
i know you looked
forward to the
fireworks festival
every year but our
travels are going
to keep us away again
this year. i'm so
sorry.
mom & dad]]},
{[[
phoebe,
i need purified water.
bring it to the hospital.
i'll give you reagent
in return.
-- lenore
]],}
}
letter_idx = 2
letters_offset_x = -10-80
letters_offset_y = 8+8
function letters_move_to(x1, y1, x2, y2)
return {
timer = 0,
active=true,
before=function(s)
letters_offset_x = x1
letters_offset_y = y1
sfx(2)
end,
update=function(s)
letters_offset_x = x1 + (s.timer/0.2)*(x2-x1)
letters_offset_y = y1 + (s.timer/0.2)*(y2-y1)
if s.timer > 0.2 then
letters_offset_x = x2
letters_offset_y = y2
s.active=false
end
end,
draw=function(s) end,
}
end
function letters_move_out(x1, y1, x2, y2)
new = letters_move_to(x1, y1, x2, y2)
--[[new.draw = function(s)
draw_paper(letters_offset_x, letters_offset_y, 128, 128)
draw_letter_on_paper(letters[letter_idx], letters_offset_x+14, letters_offset_y+4)
end]]
return new
end
function flip_away_letter(page)
return {
prev_page_idx = page,
timer = 0,
t2 = 0,
active=true,
before=function(s)
sfx(2)
end,
update=function(s)
if s.timer > 0.2 then s.active=false end
s.t2 = s.timer
end,
draw=function(s)
local page_flip = 600*s.t2
local x = letters_offset_x + page_flip
local y = letters_offset_y + 0.1*page_flip
draw_paper(x, y, 128, 128)
draw_letter_on_paper(letters[s.prev_page_idx], x+14, y+4)
end,
}
end
function flip_in_letter(page, new_page)
o = flip_away_letter(new_page)
f = o.draw
o.other_page_idx = page
o.draw = function(s)
s.t2 = 0.2-s.timer
draw_paper(letters_offset_x, letters_offset_y, 128, 128)
draw_letter_on_paper(letters[s.other_page_idx], letters_offset_x+14, letters_offset_y+4)
f(s)
end
return o
end
function letters_update()
if btnp(0) and letter_idx > 1 then
animate(flip_away_letter(letter_idx))
letter_idx -= 1
end
if btnp(1) and letter_idx < #letters then
animate(flip_in_letter(letter_idx, letter_idx+1))
letter_idx = letter_idx + 1
end
if btnp(5) then
animate(letters_move_out(-10, 8, -10-80, 8+8))
change_screen(screen_workbench)
end
end
function letters_draw()
cls()
draw_background()
draw_paper(letters_offset_x, letters_offset_y, 128, 128)
draw_letter_on_paper(letters[letter_idx], letters_offset_x+14, letters_offset_y+4)
end
function draw_letter_on_paper(letter, x, y)
color(base_text_color)
print(letter[1], x, y)
end
screen_letters = {draw=letters_draw, update=letters_update}
screen_letters = screen_conversation({{phoebe_portrait, "ah. pile of letters i should be reading."}},
function()
screen_letters = {draw=letters_draw, update=letters_update}
change_screen(screen_letters)
end,
screen_letters)