GamePreparationManager.cs
1 
9 #define FCM_PRESENT
10 
11 #define MULTIPLE_SCENES_LEVELS
12 
13 #define LOADING_SCENE
14 
16 using System.Collections.Generic;
17 using System.Linq;
18 using EazeGamesSDK;
19 #if FCM_PRESENT
20 using Firebase.Messaging;
21 #endif
22 using UnityEngine;
23 using UnityEngine.SceneManagement;
24 
25 
26 public class GamePreparationManager : MonoBehaviour, EAZGamePreparationDelegate, EAZGamePlayDelegate
27 {
35  public static event System.Action DidEndGameEvent;
39  public static event System.Action WaitingForOpponentEvent;
43  public static event System.Action<long> DidReceiveOpponentsScoreEvent;
47  public static event System.Action<EAZGameStartInfo> DidReceiveStartGameInfo;
51  public static List<int> levelList = new List<int>();
55  public static int currentLevel = 0;
59  public static long currentScore = 0;
63  public static long oppScore = 0;
67  public static bool playing = false;
71  public static int endDate = 0;
75  public static int gameDuration = 0;
76 
77 
86  private void Awake()
87  {
88  PlayerPrefs.DeleteAll();
89  if (instance == null)
90  {
91  instance = this;
92  DontDestroyOnLoad(instance);
93 
94 #if FCM_PRESENT
95  FirebaseMessaging.TokenReceived += OnTokenReceived;
96 #endif
97 
98 #if MULTIPLE_SCENES_LEVELS
99  SceneManager.sceneLoaded += OnSceneLoaded;
100 #endif
101 
102  EazeGames.shared.gamePreparationManager.setPreparationDelegate(this);
103  }
104  else if (instance != this)
105  //Prevents multiple API calls on Initial scene reload
106  Destroy(gameObject);
107  }
108 
109 #if MULTIPLE_SCENES_LEVELS
110  private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
111  {
112  #if LOADING_SCENE
113  if (arg0.name == "{Loading scene name}")
114  {
115  SceneManager.LoadSceneAsync("Level" + levelList[currentLevel]);
116  }
117  #endif
118 
119  if (levelList.Count > 0 && arg0.name == "Level" + levelList[0])
120  {
122  didStartPlaying();
123  playing = true;
124  }
125  }
126 #endif
127 
128  #region GamePreparationDelegate
129 
133  private void gameDidLoad()
134  {
135  EazeGames.shared.gamePreparationManager.gameDidLoad();
136  }
137 
141  public void startLoadingGameResourcesFor(string gameId)
142  {
143  gameDidLoad();
144  }
167  EAZGameStartInfo startGameInfo)
168  {
169  currentLevel = 0;
170  gameDuration = startGameInfo.gameDuration;
171 
172  #if MULTIPLE_SCENES_LEVELS
173  levelList = startGameInfo.levels.Split('-').Select(int.Parse).ToList();
174  #endif
175 
176  EazeGames.shared.gamePlayManager.setGamePlayDelegate(this);
177 
178  #if MULTIPLE_SCENES_LEVELS
179  #if LOADING_SCENE
180  SceneManager.LoadScene("{Loading scene name}");
181  #else
182  SceneManager.LoadScene("Level" + levelList[currentLevel]);
183  #endif
184  #else
187  playing = true;
188  #endif
189  }
190  #endregion
191 
192  #region EAZGamePlayDelegate
193 
196  public void didEndGame()
197  {
198  if (DidEndGameEvent != null)
199  {
200  DidEndGameEvent();
201  }
202  }
203 
208  public void didReceiveOpponentsScore(long opponentScore)
209  {
210  oppScore = opponentScore;
211  if (DidReceiveOpponentsScoreEvent != null)
212  {
213  DidReceiveOpponentsScoreEvent(opponentScore);
214  }
215  }
216 
220  public void waitingForOpponent()
221  {
222  if (WaitingForOpponentEvent != null)
223  {
225  }
226  }
227 
228  #endregion
229  #region GamePlayEvents
230 
233  public void didStartPlaying()
234  {
235  EazeGames.shared.gamePlayManager.didStartPlaying();
236  }
237 
242  //
243  public void SendScore(long gameScore)
244  {
245  currentScore = gameScore;
246  EazeGames.shared.gamePlayManager.sendScore(gameScore);
247  }
248 
253  public void FinishGame(long finalScore)
254  {
255  EazeGames.shared.gamePlayManager.finishPlayingWithFinalScore(finalScore);
256  }
257 
261  public void LeaveGame()
262  {
263  EazeGames.shared.gamePlayManager.leaveGame();
264  }
265  #endregion
266  #region PushManagament
267 #if FCM_PRESENT
268 
271  private static void OnTokenReceived( object sender, TokenReceivedEventArgs token )
272  {
273  EazeGames.shared.setFCMToken( token.Token );
274  }
275 #endif
276  #endregion
277 
282  private void OnApplicationPause(bool pause)
283  {
284  if (!pause)
285  {
286 #if LOADING_SCENE
287  SceneManager.LoadScene("{LoadingSceneName}");
288 #else
289  SceneManager.LoadScene("{InitSceneName}");
290 #endif
291  EndGame();
292  }
293  }
297  public static void EndGame(){
298  currentLevel = 0;
299  currentScore = 0;
300  oppScore = 0;
301  playing = false;
302  endDate = 0;
303  gameDuration = 0;
304  }
305 }
GamePreparationManager.OnTokenReceived
static void OnTokenReceived(object sender, TokenReceivedEventArgs token)
Definition: GamePreparationManager.cs:271
GamePreparationManager.OnSceneLoaded
void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
Definition: GamePreparationManager.cs:110
GamePreparationManager.WaitingForOpponentEvent
static System.Action WaitingForOpponentEvent
Definition: GamePreparationManager.cs:39
GamePreparationManager.gameDidLoad
void gameDidLoad()
Definition: GamePreparationManager.cs:133
EAZGameStartInfo
Definition: EAZGameStartInfo.cs:7
GamePreparationManager.SendScore
void SendScore(long gameScore)
Definition: GamePreparationManager.cs:243
GamePreparationManager.endDate
static int endDate
Definition: GamePreparationManager.cs:71
GamePreparationManager.currentLevel
static int currentLevel
Definition: GamePreparationManager.cs:55
GamePreparationManager.FinishGame
void FinishGame(long finalScore)
Definition: GamePreparationManager.cs:253
GamePreparationManager.EndGame
static void EndGame()
Definition: GamePreparationManager.cs:297
GamePreparationManager.DidReceiveStartGameInfo
static System.Action< EAZGameStartInfo > DidReceiveStartGameInfo
Definition: GamePreparationManager.cs:47
EAZGameStartInfo.levels
string levels
Definition: EAZGameStartInfo.cs:20
EAZGameStartInfo.gameDuration
int gameDuration
Definition: EAZGameStartInfo.cs:12
GamePreparationManager.didEndGame
void didEndGame()
Definition: GamePreparationManager.cs:196
GamePreparationManager.instance
static GamePreparationManager instance
Definition: GamePreparationManager.cs:31
GamePreparationManager.oppScore
static long oppScore
Definition: GamePreparationManager.cs:63
GamePreparationManager
Definition: GamePreparationManager.cs:26
Epoch.Current
static int Current()
Definition: Epoch.cs:8
GamePreparationManager.gameDuration
static int gameDuration
Definition: GamePreparationManager.cs:75
GamePreparationManager.LeaveGame
void LeaveGame()
Definition: GamePreparationManager.cs:261
GamePreparationManager.playing
static bool playing
Definition: GamePreparationManager.cs:67
GamePreparationManager.OnApplicationPause
void OnApplicationPause(bool pause)
Definition: GamePreparationManager.cs:282
GamePreparationManager.DidReceiveOpponentsScoreEvent
static System.Action< long > DidReceiveOpponentsScoreEvent
Definition: GamePreparationManager.cs:43
EazeGames
Definition: EazeGames.cs:2
GamePreparationManager.startLoadingGameResourcesFor
void startLoadingGameResourcesFor(string gameId)
Definition: GamePreparationManager.cs:141
GamePreparationManager.provideGameControllerWithStartGameInfo
void provideGameControllerWithStartGameInfo(EAZGameStartInfo startGameInfo)
Definition: GamePreparationManager.cs:166
GamePreparationManager.DidEndGameEvent
static System.Action DidEndGameEvent
Definition: GamePreparationManager.cs:35
Epoch
Definition: Epoch.cs:3
GamePreparationManager.didStartPlaying
void didStartPlaying()
Definition: GamePreparationManager.cs:233
GamePreparationManager.didReceiveOpponentsScore
void didReceiveOpponentsScore(long opponentScore)
Definition: GamePreparationManager.cs:208
GamePreparationManager.waitingForOpponent
void waitingForOpponent()
Definition: GamePreparationManager.cs:220
GamePreparationManager.levelList
static List< int > levelList
Definition: GamePreparationManager.cs:51
GamePreparationManager.Awake
void Awake()
Definition: GamePreparationManager.cs:86
GamePreparationManager.currentScore
static long currentScore
Definition: GamePreparationManager.cs:59