Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
kreghek committed Feb 14, 2021
1 parent 8f6534a commit f0a4354
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 39 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
namespace Assets.Zilon.Scripts.Models.Modals
{
/// <summary>
/// Behaviour of modal. Specify command and vizualization of modal.
/// </summary>
public enum QuitModalBehaviour
{
/// <summary>
/// Ends game session. Go to title menu.
/// </summary>
QuitToTitleMenu = 1,

/// <summary>
/// Closes game.
/// </summary>
QuitGame = 2
}
}
90 changes: 51 additions & 39 deletions Zilon.Client/Assets/Zilon/Scripts/Models/Modals/QuitModalBody.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,24 @@ public class QuitModalBody : MonoBehaviour, IModalWindowHandler

private QuitModalBehaviour _quitModalBehaviour;

/// <summary>
/// Text object to display random quit phrase.
/// </summary>
public Text QuitPhraseText;

/// <summary>
/// Caption to Close game.
/// </summary>
public LocalizedString QuitGameCaption;

/// <summary>
/// Caption to end game session.
/// </summary>
public LocalizedString QuitToTitleMenuCaption;

/// <summary>
/// Multiline string with quit phrases.
/// </summary>
public LocalizedString QuitPhrasesString;

[Inject(Id = "quit-command")]
Expand All @@ -47,6 +59,41 @@ public async void Start()
await SetQuitPhrase();
}

public void Init(QuitModalBehaviour quitModalBehaviour)
{
_quitModalBehaviour = quitModalBehaviour;

switch (quitModalBehaviour)
{
case QuitModalBehaviour.QuitGame:
_targetCommand = _quitCommand;
break;

case QuitModalBehaviour.QuitToTitleMenu:
_targetCommand = _quitTitleCommand;
break;

default:
if (Debug.isDebugBuild || Application.isEditor)
{
throw new InvalidOperationException($"Invalid behaviour for quit modal: {quitModalBehaviour}.");
}
break;
}
}

public void ApplyChanges()
{
_clientCommandExecutor.Push(_targetCommand);
}

public void CancelChanges()
{
// ничего не делаем
// просто закрываем окно
Closed?.Invoke(this, new EventArgs());
}

private async Task SetQuitCaption()
{
var captionLocalizedString = GetCaptionLocalizedStringByBehaviour(_quitModalBehaviour);
Expand Down Expand Up @@ -86,47 +133,12 @@ private async Task SetQuitPhrase()

private static async Task<string> ReadStringFromLocalized(LocalizedString localizedString)
{
var _textsAsyncHandler = localizedString.GetLocalizedString();
if (_textsAsyncHandler.IsDone)
var _textsAsyncHandle = localizedString.GetLocalizedString();
if (_textsAsyncHandle.IsDone)
{
return _textsAsyncHandler.Result;
return _textsAsyncHandle.Result;
}

return await _textsAsyncHandler.Task;
}

public void Init(QuitModalBehaviour quitModalBehaviour)
{
_quitModalBehaviour = quitModalBehaviour;

switch (quitModalBehaviour)
{
case QuitModalBehaviour.QuitGame:
_targetCommand = _quitCommand;
break;

case QuitModalBehaviour.QuitToTitleMenu:
_targetCommand = _quitTitleCommand;
break;

default:
if (Debug.isDebugBuild || Application.isEditor)
{
throw new InvalidOperationException($"Invalid behaviour for quit modal: {quitModalBehaviour}.");
}
break;
}
}

public void ApplyChanges()
{
_clientCommandExecutor.Push(_targetCommand);
}

public void CancelChanges()
{
// ничего не делаем
// просто закрываем окно
Closed?.Invoke(this, new EventArgs());
return await _textsAsyncHandle.Task;
}
}

0 comments on commit f0a4354

Please # to comment.