diff --git a/game/images/interface/wheelmenu/wheelmenu_button_opaque.png b/game/images/interface/wheelmenu/wheelmenu_button_opaque.png new file mode 100644 index 00000000..3a67bb61 --- /dev/null +++ b/game/images/interface/wheelmenu/wheelmenu_button_opaque.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c899a7293fc082eacf970397acc152263b349cbaeea8b9d6fdbc4309d5bba360 +size 64031 diff --git a/game/images/interface/wheelmenu/wheelmenu_frame.png b/game/images/interface/wheelmenu/wheelmenu_frame.png new file mode 100644 index 00000000..ff6683cd --- /dev/null +++ b/game/images/interface/wheelmenu/wheelmenu_frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6e373cb3afd866e62b26dea1fbc8d03c175b2a98282d340680ae745b437f959 +size 60785 diff --git a/game/images/interface/wheelmenu/wheelmenu_genie.png b/game/images/interface/wheelmenu/wheelmenu_genie.png new file mode 100644 index 00000000..7e86893d --- /dev/null +++ b/game/images/interface/wheelmenu/wheelmenu_genie.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e999c1493257b0e0147c5dd54de636f22d788bf7971901f052b5bcef24391e5 +size 111942 diff --git a/game/images/interface/wheelmenu/wheelmenu_gradient.png b/game/images/interface/wheelmenu/wheelmenu_gradient.png new file mode 100644 index 00000000..9c059894 --- /dev/null +++ b/game/images/interface/wheelmenu/wheelmenu_gradient.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b1059ca8c7081a13ab22ebe4734351219b7d5f9f83ad7c66dc71f3c956ab09f +size 34914 diff --git a/game/scripts/interface/tooltip.rpy b/game/scripts/interface/tooltip.rpy index 316cafca..84e9538b 100644 --- a/game/scripts/interface/tooltip.rpy +++ b/game/scripts/interface/tooltip.rpy @@ -10,16 +10,17 @@ screen tooltip(): window: id "tooltip" at tooltip_follow - text "[_tooltip!i]" + text "[_tooltip!i]" xoffset 8 style tooltip_window is empty: - background "#00000080" - padding (18, 12) + background Frame("wheelmenu_frame", 16, 0, 0, 0) + padding (16, 8) + yanchor 0.5 xmaximum 300 style tooltip_text is default: color "#fff" - size 10 + size 8 outlines [(1, "#00000080", 1, 0)] transform tooltip_follow: @@ -35,14 +36,15 @@ init python: cw, ch = trans.child.window_size xanchor = 1.0 if (x + int(cw)) > (config.screen_width) else 0.0 - yanchor = 1.0 if (y + int(ch)) > (config.screen_height) else 0.0 + yanchor = 0.5 if (y + int(ch)) > (config.screen_height) else 0.0 - xoffset = 18 if xanchor else 0 - yoffset = 24 if yanchor else 0 + # xoffset = 18 if xanchor else 0 + # yoffset = 24 if yanchor else 0 + xoffset = 0 if xanchor else 16 + yoffset = 0 if yanchor else -8 trans.pos = (x, y) trans.anchor = (xanchor, yanchor) trans.offset = (xoffset, yoffset) - return 0 if not renpy.android: diff --git a/game/scripts/interface/wheelmenu.rpy b/game/scripts/interface/wheelmenu.rpy index 7e5df132..18002d39 100644 --- a/game/scripts/interface/wheelmenu.rpy +++ b/game/scripts/interface/wheelmenu.rpy @@ -47,6 +47,8 @@ init python: return tuple(zip(buttons, positions)) # Nonhashable types cannot be used in a screen, so we use a tuple instead. + config.per_frame_screens.append("wheelmenu") + label wheelmenu(btns, ret, pos=None): call screen wheelmenu(btns, pos) @@ -58,9 +60,10 @@ screen wheelmenu(btns, pos): zorder 4 style_prefix "wheelmenu" - default start_pos = pos or renpy.get_mouse_pos() + $ mpos = renpy.get_mouse_pos() + default start_pos = pos or mpos - use close_button_background + use close_button_background(keysym="game_menu") window at wheelmenu_anim: id "wheelmenu" @@ -69,15 +72,20 @@ screen wheelmenu(btns, pos): for btn, pos in btns: add btn pos pos - # TODO: Add genie's eyes/face following mouse. + add "wheelmenu_genie" align (0.5, 0.5) at transform: + subpixel True + xysize (48, 48) + yzoom (-1 if mpos[0] > start_pos[0] else 1) + rotate (math.degrees(math.atan2(mpos[1] - start_pos[1], mpos[0] - start_pos[0])) + 360) % 360 - 180 style wheelmenu_window is empty: + background Transform("wheelmenu_gradient", align=(0.5, 0.5), xysize=(200, 200)) maximum (400, 400) anchor (0.5, 0.5) style wheelmenu_button is empty: background Transform("wheelmenu_button", xysize=(48,48)) - hover_background At(Transform("wheelmenu_button", xysize=(48,48)), pulse_hover) + hover_background At(Transform("wheelmenu_button_opaque", xysize=(48,48)), wheelmenu_hover_anim) xysize (48, 48) anchor (0.5, 0.5) @@ -101,6 +109,13 @@ transform wheelmenu_anim: on hide: easeout 0.15 zoom 0.0 +transform wheelmenu_hover_anim(t=2.0, strength=0.2, pause=0.0): + matrixcolor BrightnessMatrix(value=0.0) + linear t/2 matrixcolor BrightnessMatrix(value=strength) + linear t/2 matrixcolor BrightnessMatrix(value=0.0) + pause pause + repeat + # transform tooltip_follow: # events False # function tooltip_func diff --git a/game/scripts/rooms/main_room/init.rpy b/game/scripts/rooms/main_room/init.rpy index 9fddf1be..2a10ba47 100644 --- a/game/scripts/rooms/main_room/init.rpy +++ b/game/scripts/rooms/main_room/init.rpy @@ -30,6 +30,7 @@ default desk_OBJ = RoomObject( "Do Paperwork": (Text("📝", align=(0.5, 0.5)), Jump("paperwork"), "True"), "Open Inventory": (Text("🎒", align=(0.5, 0.5)), Jump("inventory"), "True"), "Open Deck Builder": (Text("🃏", align=(0.5, 0.5)), Jump("deck_builder"), "states.cardgame.unlocked"), + "Open Cheats Menu": (Text("🕹ī¸", align=(0.5, 0.5)), Jump("cheats"), "game.cheats"), }, hovered=Show( "gui_tooltip",