I've got that label in game.rpy:
Code: Select all
label minigame:
$ items = dict(
item1 = ((995, 1206), (428, 475)),
item2 = ((1110, 1147), (730, 837)),
item3 = ((1446, 1614), (684, 820)),
item4 = ((998, 1065), (566, 588)),
item5 = ((1568, 1719), (327, 466)),
item6 = ((921, 957), (463, 571)),)
)
$ image_name = "background"
$ SM = SpriteManager_with_mask(event=events_func)
$ point_and_click_init(items, image_name)
scene minigame_background
call screen SM_screen
Code: Select all
def point_and_click_init(items, image_name):
sprites = []
for item in items:
idle_image = Image("props/{}_{}-idle.png".format(image_name, item))
hover_image = Image("props/{}_{}-hover.png".format(image_name, item))
t = Transform(child=idle_image)
sprites.append(SM.create(t))
sprites[-1].type = item
sprites[-1].idle_image = idle_image
sprites[-1].hover_image = hover_image
sprites[-1].maskx = items.get(item)[0]
sprites[-1].masky = items.get(item)[1]
global sprites
Code: Select all
def events_func(event, x, y, at):
minigame_counter = len(sprites)
def transform_hover(item):
t = Transform(child=item.hover_image)
item.set_child(t)
SM.redraw(0)
def pop_item(item):
sprites.pop(sprites.index(item))
store.minigame_counter -= 1
item.destroy()
SM.redraw(0)
if event.type == renpy.pygame_sdl2.MOUSEMOTION:
for item in sprites:
if item.maskx[0] < x < item.maskx[1] and item.masky[0] < y < item.masky[1]:
transform_hover(item)
else:
t = Transform(child=item.idle_image)
item.set_child(t)
SM.redraw(0)
if event.type == renpy.pygame_sdl2.MOUSEBUTTONUP:
if event.button == 1:
for item in sprites:
if item.maskx[0] < x < item.maskx[1] and item.masky[0] < y < item.masky[1]:
pop_item(item)
if len(sprites) == 0:
print('GOTIT')
renpy.jump("needed_label")
global minigame_counter
Code: Select all
screen minigame_counter_screen:
zorder 100
hbox:
spacing 10
xalign 0.02
yalign 0.02
$ S = store.minigame_counter
text "{color=#000}Items left{/color}"
text "{color=#000}[S]{/color}"