Add content warning

This commit is contained in:
Pyrex 2024-02-12 16:34:26 -08:00
parent dd46a76f54
commit e3bc5a0dc6
8 changed files with 133 additions and 58 deletions

View File

@ -136,10 +136,10 @@ function cursor:draw_at(l,i)
local x,y=l:place_card(i)
local card_fg=self.ruleset.deck:draw_card(x,y,card,{rotate=l.rotated})
local fg=card_fg
draw_layout_hint(l,i,9,false,0,0)
draw_layout_hint(l,i,9,false)
else
local filled=false
if (i<1) i=1 filled=true
draw_layout_hint(l,i,12,filled,0,0)
draw_layout_hint(l,i,12,filled)
end
end

View File

@ -1,8 +1,6 @@
function draw_layout_hint(l,i,fg,filled,dx,dy)
function draw_layout_hint(l,i,fg,filled,tut_border)
-- layout, index
local x,y=l:place_card(i)
x+=dx
y+=dy
if (l.obscured) filled=false
if filled then
@ -12,10 +10,28 @@ function draw_layout_hint(l,i,fg,filled,dx,dy)
rectfill(x,y,x+8,y+15,fg)
end
else
if tut_border then
local exclude=1+flr(time()*3)%3
pal(1,14)
pal(2,14)
pal(3,14)
palt(13,true)
pal(exclude,13)
if l.rotated then
spr(32,x-5,y+5,3,2)
else
-- rect(x-3,y-3,x+11,y+18,13)
spr(14,x-2,y-2,2,3)
end
pal()
palt()
return
end
if l.rotated then
rect(x-4,y+6,x+13,y+16,fg)
else
rect(x-1,y-1,x+9,y+16,fg)
end
end
end

View File

@ -12,7 +12,7 @@ function main:init()
self.state_manager:push(state_wonround:new(b))
]]
if (completion_tracker:should_show_tutorial()) self.state_manager:push(state_ironman:new(tutorial))
if (completion_tracker:should_show_tutorial()) self.state_manager:push(state_ironman:new(tutorial)) self.state_manager:push(state_content_warning:new())
end
function main:update()

59
main.p8
View File

@ -24,6 +24,7 @@ __lua__
#include seeds.lua
#include sounds.lua
#include state_archaeology.lua
#include state_content_warning.lua
#include state_excavate_menu.lua
#include state_manager.lua
#include state_menu.lua
@ -44,35 +45,35 @@ for i=1,10 do
end
stop()]]
__gfx__
00000000000000000000000000000000777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000007000000777000000070000700070000707070000000000000000000000000000000000000000000000000000000000000000000000000000000000
07070000007000000777000000700000707070000077770000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700000007000000777000000700000707070000770700000000000000000000000000000000000000000000000000000000000000000000000000000000000
07070000077700000070000007000000777070000077777000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000007000000777000007000000700070000700777000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000707770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000070000000700000007000000000000000000000000000000000000000000000000000
00000000000070000000700000700070007000700070007000700070007000700070007000700070070707000707070007070700000000000000000000000000
00000000000000000000000000000000000000000000000000000000000070000000700000007000007777000077770000777700000000000000000000000000
00007000000000000000700000000000000070000070007000707070000000000070007000700070077070000770700007707000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000070000000000000007000007777700077777000777770000000000000000000000000
00000000000070000000700000700070007000700070007000700070007000700070007000700070070077700700777007007770000000000000000000000000
00000000000000000000000000000000000000000000000000000000000070000000700000007000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000077777000000000000000000000000000000000000000000000000000000000000000000000000000ddddddddddddd000
0000000000700000077700000007000070007000070707000000000000000000000000000000000000000000000000000000000000000000d31231231231d000
0707000000700000077700000070000070707000007777000000000000000000000000000000000000000000000000000000000000000000d20000000002d000
0070000000700000077700000070000070707000077070000000000000000000000000000000000000000000000000000000000000000000d10000000003d000
0707000007770000007000000700000077707000007777700000000000000000000000000000000000000000000000000000000000000000d30000000001d000
0000000000700000077700000700000070007000070077700000000000000000000000000000000000000000000000000000000000000000d20000000002d000
0000000000000000000000000000000070777000000000000000000000000000000000000000000000000000000000000000000000000000d10000000003d000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d30000000001d000
0000000000000000000000000000000000000000000000000000000000007000000070000000700000000000000000000000000000000000d20000000002d000
0000000000007000000070000070007000700070007000700070007000700070007000700070007007070700070707000707070000000000d10000000003d000
0000000000000000000000000000000000000000000000000000000000007000000070000000700000777700007777000077770000000000d30000000001d000
0000700000000000000070000000000000007000007000700070707000000000007000700070007007707000077070000770700000000000d20000000002d000
0000000000000000000000000000000000000000000000000000000000007000000000000000700000777770007777700077777000000000d10000000003d000
0000000000007000000070000070007000700070007000700070007000700070007000700070007007007770070077700700777000000000d30000000001d000
0000000000000000000000000000000000000000000000000000000000007000000070000000700000000000000000000000000000000000d20000000002d000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d10000000003d000
dddddddddddddddddddd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d30000000001d000
d123123123123123123d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d20000000002d000
d300000000000000001d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d13213213213d000
d200000000000000002d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ddddddddddddd000
d100000000000000003d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d300000000000000001d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d200000000000000002d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d100000000000000003d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d300000000000000001d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d200000000000000002d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d100000000000000003d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
d321321321321321321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
dddddddddddddddddddd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@ -1,8 +1,13 @@
music_manager={}
add(modules,music_manager)
function music_manager:init()
self._allow=true
end
function music_manager:allow(a)
self._allow=a
end
function music_manager:update()
if (not self._allow) music(-1,0) return
local is_playing = stat(54) != -1
local should_be_playing = completion_tracker:get_music_preference()
if (is_playing and not should_be_playing) music(-1,500)

42
state_content_warning.lua Normal file
View File

@ -0,0 +1,42 @@
state_content_warning=klass()
function state_content_warning:init(prior_menu)
self.prior_menu=prior_menu
self.frame=0
self.frames=4
self.progress=0
end
function state_content_warning:enter() music_manager:allow(false) end
function state_content_warning:exit(new_top) music_manager:allow(true) end
function state_content_warning:reenter() end
function state_content_warning:suspend() end
function state_content_warning:update()
for i=0,6 do
if (btnp(i)) self.done=true
end
end
function state_content_warning:draw()
cls(0)
print([[
raven's rood explores post-
colonial subject matter,
including violent conflict
leading to genocide.
these themes are artistically
essential and inseparable from
the overall content of the game.
we understand all games are not
suitable for every individual.
we hope you enjoy our game
despite the bleak nature of its
subject matter.
once you continue, the tutorial
will begin, and you will not
encounter this message again.
]],2,2,6)
print("🅾️ continue",2,121,15)
end

View File

@ -3,32 +3,32 @@ tutorial={
-- function() return watcher:new(progression[6]) end,
function()
return watcher:new(progression[1], 10,{
tutorial_grab:new(1,4),
tutorial_grab:new(5,1),
tutorial_grab:new(1,4,"stack cards ascending..."),
tutorial_grab:new(5,1,"... or descending."),
tutorial_grab:new(4,3),
tutorial_grab:new(2,4),
tutorial_grab:new(2,4,"fill the wells."),
})
end,
function()
return watcher:new(progression[2], 10,{
tutorial_grab:new(1,6),
tutorial_grab:new(1,2),
tutorial_grab:new(1,5),
tutorial_grab:new(1,5),
tutorial_grab:new(2,1),
tutorial_grab:new(2,1),
tutorial_grab:new(6,1),
tutorial_grab:new(1,6,"use the extra slot."),
tutorial_grab:new(1,2,"it blocks the wells."),
tutorial_grab:new(1,5,"it blocks the wells."),
tutorial_grab:new(1,5,"it blocks the wells."),
tutorial_grab:new(2,1,"it blocks the wells."),
tutorial_grab:new(2,1,"it blocks the wells."),
tutorial_grab:new(6,1,"drag it down."),
})
end,
function()
return watcher:new(progression[3],3,{
tutorial_grab:new(7,6),
tutorial_undo:new(),
tutorial_grab:new(7,6,"here are more cards."),
tutorial_undo:new("undo. (or hold to restart.)"),
tutorial_grab:new(6,7),
tutorial_grab:new(6,8),
tutorial_grab:new(2,6),
tutorial_grab:new(2,4),
tutorial_grab:new(3,1),
tutorial_grab:new(6,8,"they have their own well."),
tutorial_grab:new(2,6,"it can't be blocked."),
tutorial_grab:new(2,4,"stack ascending or descending."),
tutorial_grab:new(3,1,"collect the last scroll\nto read it!"),
})
end,
standard_watcher_cb(4),

View File

@ -28,16 +28,25 @@ function watcher:draw(board)
x+=1
y+=20
local lx=x+3
line(lx,y-4,lx,y,15)
rectfill(x-2,y-2,x+w,y+h,1)
rect(x-2,y-2,x+w,y+h,15)
print(text,x,y,15)
local note=stage.note
if (not note) return
local w,h=measure_text(note)
local x=64-w\2
local y=88
rectfill(x-1,y-1,x+w-1,y+h-1,1)
rect(x-2,y-2,x+w,y+h,15)
print(note,x,y,15)
end
tutorial_grab=klass()
function tutorial_grab:init(src,dst)
function tutorial_grab:init(src,dst,note)
self.src=src
self.dst=dst
self.note=note
end
function tutorial_grab:active()
@ -50,16 +59,16 @@ function tutorial_grab:intercept(x, slot)
end
function tutorial_grab:draw(board,layouts)
local layout,i,text
if board.cursor:acceptance_state() == acceptance_state.not_grabbed then
if board.cursor:grabbed_card() == nil then
-- show a hint for grabbing
layout=layouts:slot(self.src)
i=#board.slots[self.src].contents
draw_layout_hint(layout,i,15,false,0,0)
draw_layout_hint(layout,i,15,false,true)
text="🅾️"
else
layout=layouts:slot(self.dst)
i=#board.slots[self.dst].contents+1
draw_layout_hint(layout,i,15,false,0,0)
draw_layout_hint(layout,i,15,false,true)
text="🅾️"
end
return layout,i,text
@ -67,7 +76,9 @@ end
tutorial_undo=klass()
function tutorial_undo:init() end
function tutorial_undo:init(note)
self.note=note
end
function tutorial_undo:active()
return true
end
@ -77,7 +88,7 @@ end
function tutorial_undo:draw(board,layouts)
local layout,i,text
layout=layouts:checkpoint()
draw_layout_hint(layout,0,15,false,0,0)
draw_layout_hint(layout,0,15,false,true)
text=""
return layout,i,text
end