diff --git a/game/scripts/interface/achievements.rpy b/game/scripts/interface/achievements.rpy index 504b9886..5f65b234 100644 --- a/game/scripts/interface/achievements.rpy +++ b/game/scripts/interface/achievements.rpy @@ -60,7 +60,7 @@ init python: class Achievements(object): """ - Useless class, to be rolled out. + Useless class, can't be rolled out because of pickle and save compatibility. """ @staticmethod @@ -84,7 +84,7 @@ init python: if not silent: renpy.play('sounds/achievement.ogg') - renpy.show_screen("achievement_window", msg=achievements_db[id].title, title="Achievement unlocked!", icon=achievements_db[id].icon) + __popup_stack.append(id) @staticmethod def lock(self, id): @@ -118,6 +118,21 @@ default achievements = Achievements() ### +init python: + # intentionaly not a define nor a default + __popup_stack = [] + + config.after_default_callbacks.append(__popup_stack.clear) + config.always_shown_screens.append("achievement_main") + +screen achievement_main(): + layer "interface" + + vbox: + for id index id in __popup_stack[:3]: + use achievement_window(msg=achievements_db[id].title, title="Achievement unlocked!", icon=achievements_db[id].icon) + timer 6 action Function(__popup_stack.remove, id) + label popup(msg="", title="", icon=None, xpos=0, ypos=60, sound=True, soundfile='sounds/achievement.ogg'): if sound: play sound soundfile diff --git a/game/scripts/interface/popup.rpy b/game/scripts/interface/popup.rpy index 38eddb1a..09be4cc2 100644 --- a/game/scripts/interface/popup.rpy +++ b/game/scripts/interface/popup.rpy @@ -1,11 +1,8 @@ transform popup_animation(time=4.0, xx=-200): - on start: - xoffset xx - on show: - xoffset xx - linear 0.5 xoffset absolute(0) - pause time - linear 0.5 xoffset absolute(xx) + xoffset xx + linear 0.5 xoffset absolute(0) + pause time + linear 0.5 xoffset absolute(xx) screen popup_window(msg="", xpos=0, ypos=60): tag popup_window