aeroson

Untitled

May 22nd, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. using System;
  2.  
  3.  
  4. namespace MyGame
  5. {
  6. class GameTimeController
  7. {
  8. public float CurrentHour
  9. {
  10. get
  11. {
  12. return currentDateTime.Hour + currentDateTime.Minute / 60f + currentDateTime.Second / 60f / 60f;
  13. }
  14. set
  15. {
  16. currentDateTime = DateTimeSetHour(currentDateTime, value, moveOnlyForwardInTime: true);
  17. }
  18. }
  19.  
  20. /// <summary>
  21. /// If set to 1 it takes 1 second in real life to pass 1 ingame second.
  22. /// If its set to 10 it takes 1 second in real life to pass 10 ingame second.
  23. /// </summary>
  24. public float CurrentGameTimeSpeed { get; set; }
  25.  
  26.  
  27. DateTime currentDateTime;
  28.  
  29. DateTime dateTimeToSkipTo;
  30. bool doSkipTime;
  31. float skipSpeed;
  32.  
  33.  
  34. public void SkipHourTo(int hourToSkipTo, float skipSpeed = 100f)
  35. {
  36. doSkipTime = true;
  37. this.skipSpeed = skipSpeed;
  38. dateTimeToSkipTo = DateTimeSetHour(currentDateTime, hourToSkipTo, moveOnlyForwardInTime: true);
  39. }
  40.  
  41.  
  42. static DateTime DateTimeSetHour(DateTime dateTime, float targetHour, bool moveOnlyForwardInTime = false)
  43. {
  44. if (dateTime.Hour > targetHour)
  45. {
  46. // hour is alreardy past the one we need, either end day, or rever time
  47. if (moveOnlyForwardInTime)
  48. {
  49. // current hour is too far, must end the day
  50. dateTime.AddHours(24 - dateTime.Hour); // end the day, go to 0:00;
  51. dateTime.AddHours(targetHour); // go to our target hour
  52. } else
  53. {
  54. // lets revert time
  55. dateTime.AddHours(targetHour - dateTime.Hour);
  56. }
  57. }
  58. else
  59. {
  60. // target hour is in the future, add it
  61. dateTime.AddHours(dateTime.Hour - targetHour);
  62. }
  63. return dateTime;
  64. }
  65.  
  66.  
  67.  
  68. void Start()
  69. {
  70. currentDateTime = DateTime.Now;
  71. }
  72.  
  73. void Update()
  74. {
  75. if (doSkipTime)
  76. {
  77. CurrentGameTimeSpeed = skipSpeed;
  78. if (currentDateTime > dateTimeToSkipTo)
  79. {
  80. doSkipTime = false;
  81. CurrentGameTimeSpeed = 1;
  82. }
  83. }
  84.  
  85. currentDateTime.AddSeconds(Time.deltaTime * CurrentGameTimeSpeed);
  86. weatherSystem.azure_PassTime = CurrentGameTimeSpeed;
  87. weatherSystem.azure_TIME_of_DAY = CurrentHour;
  88. }
  89.  
  90. public SkyControl_v2_0_AnimatedCloud weatherSystem;
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment