From c4f95dd7c6dc3c8c7de1b43c249689e0e969333c Mon Sep 17 00:00:00 2001 From: nutbuster Date: Sun, 18 Jul 2021 07:55:49 +1000 Subject: [PATCH] Loopable Screens between different folders --- game/screens.rpy | 2 +- game/src/cg_gallery.rpy | 74 +++++++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/game/screens.rpy b/game/screens.rpy index 6965287..1576c87 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -1137,7 +1137,7 @@ screen extrasnavigation(): [ "Help", ShowMenu("help") ], [ "About", ShowMenu("about") ], [ "Updates", ShowMenu("updates") ], - [ "Gallery", ShowMenu("cg_gallery") ], + [ "Gallery", ShowMenu("cg_gallery_0") ], [ "Return", ShowMenu("main_menu") ] ] ) diff --git a/game/src/cg_gallery.rpy b/game/src/cg_gallery.rpy index 6697819..3107ed0 100644 --- a/game/src/cg_gallery.rpy +++ b/game/src/cg_gallery.rpy @@ -10,10 +10,9 @@ init python: NOT_UNLOCKED_COVER = im.FactorScale("gui/gallery/unlocked_cg_button_cover.png", DEFAULT_WIDTH_SCALE_RATIO, DEFAULT_HEIGHT_SCALE_RATIO) ACCEPTED_EXTENSIONS = ["jpg", "png"] CG_PATHS = [ - { 'path': "images/cgs/", 'name': "CG", 'eval': None - }, #CG doesn't really make sense - { 'path': "images/animations/", 'name': "Animations", 'eval': None - }, + #CG doesn't really make sense + { 'path': "images/cgs/", 'name': "CG", 'eval': None }, + #{ 'path': "images/animations/", 'name': "Animations", 'eval': None }, { 'path': "images/NotForKids!/", 'name': "Lewd", 'eval': 'presistent.lewd == True' } @@ -25,8 +24,9 @@ init python: item is name, fn is fullpath ext is the file extension { item: string; fn: string, cg: Displayable; ext: string }[] + (reference in this init python, actually used in screens) """ - galleryItems = [] + gallery_items = [] # key dict pair, cg <-> cgs' galleryitems [] gallery_dic = {} # @@ -80,11 +80,22 @@ init python: # Call to loading the gallery loadGallery() +""" +'Recursive' / Loopable / Roundtrip Screens +_0 <-> _1 +""" +screen cg_gallery_0(__yoffset = 0, origin = 'CG'): + tag menu + use cg_gallery('1', __yoffset, origin) +screen cg_gallery_1( __yoffset = 0, origin = 'CG'): + tag menu + use cg_gallery('0', __yoffset, origin) + """ CG Gallery screen - A screen that shows the image gallery Basically Gallery Object has terrible defaults, so I just wrote my own stuff """ -screen cg_gallery(__yoffset = 0): +screen cg_gallery(flag, __yoffset = 0, origin = 'CG'): style_prefix "game_menu" if main_menu: @@ -93,17 +104,19 @@ screen cg_gallery(__yoffset = 0): add gui.main_menu_background add gui.game_menu_background - python: - galleryItems = gallery_dic["CG"] - items = len(galleryItems) - galleryRows = (items / GALLERY_COLS) + 1 - extraSpaces = GALLERY_COLS - (items % GALLERY_COLS) - item_counter = 0 - tag menu - frame: - style "game_menu_outer_frame" + python: + empty_spaces = gallery_rows = item_counter = 0 + + gallery_items = gallery_dic[origin] + items = len(gallery_items) + gallery_rows = (items / GALLERY_COLS) + 1 + empty_spaces = GALLERY_COLS - (items % GALLERY_COLS) + + frame: + + style "game_menu_outer_frame" viewport: yinitial __yoffset scrollbars "vertical" @@ -112,8 +125,8 @@ screen cg_gallery(__yoffset = 0): pagekeys True xpos 440 - grid GALLERY_COLS galleryRows: - for item in galleryItems: + grid GALLERY_COLS gallery_rows: + for item in gallery_items: # Should properly fix with actual margin difference but good # enough or the actual position python: @@ -121,9 +134,9 @@ screen cg_gallery(__yoffset = 0): yoffset = item_counter / 3 * PREFERRED_HEIGHT * 1.15 yoffset = int( yoffset + (PREFERRED_HEIGHT * 1.15)) - use flag_button(item, yoffset) + use flag_button(item, yoffset, origin) - for i in range(0, extraSpaces): + for i in range(0, empty_spaces): null height 20 vbox: @@ -133,10 +146,15 @@ screen cg_gallery(__yoffset = 0): spacing gui.navigation_spacing - textbutton _("CG") - textbutton _("NotForKids!") - textbutton _("Animations") - textbutton _("Return") action Return() + + for cp in CG_PATHS: + #gallery_dic[cp['name']] = [] # + if cp['name'] is origin: + textbutton _(cp['name']) + else: + textbutton _(cp['name']) action ShowMenu('cg_gallery_'+flag, 0, cp['name']) +#textbutton _(cp['name']) action set_reflow(origin, cp['name'], gallery_rows, empty_spaces) + textbutton _("Return") action ShowMenu('main_menu') if _in_replay: textbutton _("End Replay") action EndReplay(confirm=True) @@ -150,12 +168,12 @@ screen cg_gallery(__yoffset = 0): """ if/else flow control & extra parameters for Buttons """ -screen flag_button(item, yoffset): +screen flag_button(item, yoffset, origin): python: flag = renpy.seen_image(item['item']) if flag: button: - action ShowMenu('view_image', item['fn'], ShowMenu('cg_gallery', yoffset)) + action ShowMenu('view_image', item['fn'], ShowMenu('cg_gallery_0', yoffset, origin)) xcenter 0.5 ycenter 0.5 vbox: text item["item"] xalign 0.5 @@ -170,12 +188,12 @@ screen flag_button(item, yoffset): """ view_image, Loads the image in fullscreen with viewport control. """ -screen view_image(fn, origin): +screen view_image(fn, _origin): tag menu - key "game_menu" action origin + key "game_menu" action _origin viewport: #Ren'Py is isn't smart enough to not edgescroll while pressed, so we'll have to disable this for mobile - edgescroll (300, 800) + edgescroll (300, 1800) draggable True arrowkeys True pagekeys True