GameManager.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using UnityEngine;
  2. using UnityEngine.SceneManagement;
  3. public class GameManager : MonoBehaviour
  4. {
  5. private GameData data;
  6. private SaveManager saveManager;
  7. private TimeManager timeManager;
  8. private MapGenerator mapGenerator;
  9. private GameObject player;
  10. // Start is called once before the first execution of Update after the MonoBehaviour is created
  11. void Start()
  12. {
  13. //Get the player
  14. player = GameObject.Find("Player");
  15. if (player == null) return;
  16. //Get components
  17. saveManager = GetComponent<SaveManager>();
  18. timeManager = GetComponent<TimeManager>();
  19. mapGenerator = GameObject.Find("Map Generator").GetComponent<MapGenerator>();
  20. data = saveManager.LoadGame();
  21. //reset light settings
  22. RenderSettings.skybox.SetTexture("_Texture1", timeManager.skyboxNight);
  23. RenderSettings.skybox.SetTexture("_Texture2", timeManager.skyboxSunrise);
  24. RenderSettings.skybox.SetFloat("_Blend", 0);
  25. timeManager.globalLight.color = timeManager.gradientNightToSunrise.Evaluate(0);
  26. RenderSettings.fogColor = timeManager.globalLight.color;
  27. if (data != null)
  28. {
  29. SetData();
  30. }
  31. else
  32. {
  33. data = new GameData();
  34. }
  35. }
  36. // Update is called once per frame
  37. void Update()
  38. {
  39. if (Input.GetKeyDown(KeyCode.F5))
  40. {
  41. Save();
  42. }
  43. if (Input.GetKeyDown(KeyCode.F9))
  44. {
  45. //SceneManager.LoadScene("Game");
  46. }
  47. }
  48. void GetData()
  49. {
  50. data.playerPosition = player.transform.position;
  51. #region DaylightCycle
  52. data.minutes = timeManager.Minutes;
  53. data.hours = timeManager.Hours;
  54. data.skybox = RenderSettings.skybox;
  55. data.globalLightColor = timeManager.globalLight.color;
  56. data.globalLightRotation = timeManager.globalLight.transform.rotation;
  57. #endregion
  58. #region Stamina
  59. data.currentStamina = player.GetComponent<Stamina>().GetCurrentStamina();
  60. data.canSprint = player.GetComponent<Stamina>().GetCanSprint();
  61. #endregion
  62. #region MapGeneration
  63. data.seed = mapGenerator.noiseData.seed;
  64. #endregion
  65. }
  66. void SetData()
  67. {
  68. if (data.playerPosition != Vector3.zero)
  69. player.transform.position = data.playerPosition;
  70. #region DaylightCycle
  71. timeManager.Minutes = data.minutes;
  72. timeManager.Hours = data.hours;
  73. if (data.skybox != null)
  74. RenderSettings.skybox = data.skybox;
  75. if(data.globalLightColor != null)
  76. {
  77. timeManager.globalLight.color = data.globalLightColor;
  78. RenderSettings.fogColor = data.globalLightColor;
  79. }
  80. if (data.globalLightRotation != null)
  81. timeManager.globalLight.transform.rotation = data.globalLightRotation;
  82. #endregion
  83. #region Stamina
  84. if(data.skybox !=null) //because !
  85. player.GetComponent<Stamina>().Reinit(data.currentStamina, data.canSprint);
  86. #endregion
  87. #region MapGeneration
  88. mapGenerator.noiseData.seed = data.seed;
  89. #endregion
  90. }
  91. public void Save()
  92. {
  93. GetData();
  94. saveManager.SaveGame(data);
  95. }
  96. }