Future closeGameView(bool failed)

Closes the game view and shows the menu where failed indicates whether the game was lost before

Source

closeGameView(bool failed) async {
    // Reset Game
    _gameLayer.setInnerHtml("");

    get("startGame").setInnerHtml(failed ? "RETRY!" : _levelManager.current > 0 ? "CONTINUE!" : "ENTER!");

    if (_levelManager.unlocked > 0) {
        show(get("showLevels"));
        final levelSelection = get("levelSelection");

        for (var i = 0; i <= _levelManager.unlocked && i < _levelManager.size; i++) {
            if (get("level-${i}") == null) {
                final lvlidx = i;
                levelSelection.appendHtml("<button class='btn' id='level-${i}'>Level ${i + 1}</button>");
                get("level-${i}").onClick.listen((e) => _selectLevelEvent.add(lvlidx));
            }
        }
    }

    clearCache();

    // Toggle States
    hide(_gameLayer);
    show(_menuLayer);
    activate(_menuLayer);
    deactivate(_gameLayer);
    deactivate(_inputLayer);

    await nextFrame(); // Waiting for the next frame, otherwise the css activation animations wouldn't play.

    deactivate(_mainElement);
}