From e3bc5a0dc600c7d7f94fe666c995660119a377e5 Mon Sep 17 00:00:00 2001 From: Nyeogmi Date: Mon, 12 Feb 2024 16:34:26 -0800 Subject: [PATCH] Add content warning --- cursor.lua | 4 +-- layout_hint.lua | 22 +++++++++++++-- main.lua | 2 +- main.p8 | 59 ++++++++++++++++++++------------------- music_manager.lua | 5 ++++ state_content_warning.lua | 42 ++++++++++++++++++++++++++++ tutorial.lua | 32 ++++++++++----------- watcher.lua | 25 ++++++++++++----- 8 files changed, 133 insertions(+), 58 deletions(-) create mode 100644 state_content_warning.lua diff --git a/cursor.lua b/cursor.lua index e4a8911..1ec5a30 100644 --- a/cursor.lua +++ b/cursor.lua @@ -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 \ No newline at end of file diff --git a/layout_hint.lua b/layout_hint.lua index e4e1d6d..9fef9af 100644 --- a/layout_hint.lua +++ b/layout_hint.lua @@ -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 \ No newline at end of file diff --git a/main.lua b/main.lua index 53965fb..ef49e6a 100644 --- a/main.lua +++ b/main.lua @@ -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() diff --git a/main.p8 b/main.p8 index 7676039..21c54ef 100644 --- a/main.p8 +++ b/main.p8 @@ -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 diff --git a/music_manager.lua b/music_manager.lua index 4da6155..c0d975f 100644 --- a/music_manager.lua +++ b/music_manager.lua @@ -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) diff --git a/state_content_warning.lua b/state_content_warning.lua new file mode 100644 index 0000000..b8dd9bc --- /dev/null +++ b/state_content_warning.lua @@ -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 \ No newline at end of file diff --git a/tutorial.lua b/tutorial.lua index d64eb39..75e147c 100644 --- a/tutorial.lua +++ b/tutorial.lua @@ -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), diff --git a/watcher.lua b/watcher.lua index 7cbf18d..72ee2f8 100644 --- a/watcher.lua +++ b/watcher.lua @@ -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