Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3.  
  4. public class GameManager : MonoBehaviour
  5. {
  6. private Dictionary<StrategyType, StrategyBase> _strategies;
  7.  
  8. private StrategyType _activeStrategy, _lastStrategy;
  9. private bool _strategyChangePending;
  10.  
  11. void OnEnable()
  12. {
  13. _strategies = new Dictionary<StrategyType, StrategyBase>
  14. {
  15. {StrategyType.MainMenu, GetComponent<StrategyMainMenu>()},
  16. {StrategyType.Game, GetComponent<StrategyGame>()},
  17. {StrategyType.Editor, GetComponent<StrategyEditor>()}
  18. };
  19.  
  20. foreach (var strategy in _strategies.Values)
  21. {
  22. strategy.Init(this);
  23. }
  24. }
  25.  
  26. void Start()
  27. {
  28. LevelIndex.LoadLevels();
  29.  
  30. EnterMainMenu();
  31. //EnterGame();
  32. }
  33.  
  34. void Update()
  35. {
  36. if (_strategyChangePending)
  37. {
  38. _strategies[_lastStrategy].Leave();
  39. _strategies[_activeStrategy].Enter(_lastStrategy);
  40. _strategyChangePending = false;
  41. }
  42. }
  43.  
  44. public void Enter(StrategyType strategyType)
  45. {
  46. _lastStrategy = _activeStrategy;
  47. _activeStrategy = strategyType;
  48. _strategyChangePending = true;
  49. }
  50.  
  51. public void EnterMainMenu()
  52. {
  53. Enter(StrategyType.MainMenu);
  54. }
  55.  
  56. public void EnterGame()
  57. {
  58. Enter(StrategyType.Game);
  59. }
  60.  
  61. public void EnterGame(string levelName)
  62. {
  63. var game = _strategies[StrategyType.Game] as StrategyGame;
  64. game.Level.Init(LevelIndex.Levels[levelName]);
  65. Enter(StrategyType.Game);
  66. }
  67.  
  68. public void EnterEditor(string levelName)
  69. {
  70. EnterEditor(LevelIndex.Levels[levelName]);
  71. }
  72.  
  73. public void EnterEditor(LevelData data)
  74. {
  75. var game = _strategies[StrategyType.Game] as StrategyGame;
  76. game.Level.Init(data, true);
  77. Enter(StrategyType.Editor);
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement