-
Notifications
You must be signed in to change notification settings - Fork 1
/
GameMediator.cs
83 lines (63 loc) · 1.67 KB
/
GameMediator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using strange.extensions.mediation.impl;
namespace Snake
{
[Mediates (typeof (GameView))]
public class GameMediator : Mediator
{
[Inject]
public GameView GameView { get; set; }
[Inject]
public ShowSignal ShowSignal { get; set; }
[Inject]
public SetupMainMenuSignal SetupMainMenuSignal { get; set; }
[Inject]
public StartGameSignal StartGameSignal { get; set; }
[Inject]
public GameOverSignal GameOverSignal { get; set; }
[Inject]
public SetupAfterGameSignal SetupAfterGameSignal { get; set; }
public override void OnRegister ()
{
ShowSignal.AddListener (Show);
GameOverSignal.AddListener (ShowAfterGame);
}
public override void OnRemove ()
{
ShowSignal.RemoveListener (Show);
GameOverSignal.RemoveListener (ShowAfterGame);
}
private void Show (ShowType type)
{
switch (type)
{
case ShowType.MainMenu:
ShowMainMenu ();
break;
case ShowType.InGame:
ShowInGame ();
break;
}
}
private void ShowMainMenu ()
{
SetActive (true, false, false);
SetupMainMenuSignal.Dispatch ();
}
private void ShowInGame ()
{
SetActive (false, true, false);
StartGameSignal.Dispatch ();
}
private void ShowAfterGame (bool hasWon, int score)
{
SetActive (false, false, true);
SetupAfterGameSignal.Dispatch (hasWon, score);
}
private void SetActive (bool mainMenu, bool inGame, bool afterGame)
{
GameView.MainMenu.SetActive (mainMenu);
GameView.InGame.SetActive (inGame);
GameView.AfterGame.SetActive (afterGame);
}
}
}