void OnTaskFinished(SingleGameLogic logic)
 {
     this.logic = logic;
     task       = null;
     startButton.Activate();
     loading.Stop();
     state = SceneState.Ready;
     OnAppearanceChanged();
 }
 protected override void BeforeShow()
 {
     base.BeforeShow();
     easyButton.Activate();
     normalButton.Activate();
     hardButton.Activate();
     backButton.Activate();
     loading.Start();
     state = SceneState.Processing;
     task  = new GenerateSingleGameLogicTask(OnTaskFinished);
     task.Execute();
 }
 protected override void BeforeHide()
 {
     base.BeforeHide();
     easyButton.Deactivate();
     normalButton.Deactivate();
     hardButton.Deactivate();
     backButton.Deactivate();
     if (state == SceneState.Processing)
     {
         loading.Stop();
         task.Cancel(true);
         task  = null;
         state = SceneState.Empty;
     }
     else
     {
         startButton.Deactivate();
         logic = null;
     }
 }