using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Xna.Framework; class DayNightCycle { private bool Time = true; private int nightTime = 0; private int dayTime = 0; private int lengthOfDay = 20000; private int lengthOfNight = 20000; private int Days = 1; public void updateTime(int Speed) { for (int i = 0; i < Speed; i++) { if (Time) { dayTime++; if (dayTime == lengthOfDay) { Time = false; dayTime = 0; } } else { nightTime++; if (nightTime == lengthOfNight) { Time = true; nightTime = 0; Days++; } } } } public string getDayNight() { if (Time) { return "Day"; } else { return "Night"; } } public Color GetTimeOfDay() { int blue, red, brightness; if (nightTime == 0 && dayTime == 0) { red = 1; blue = 1; brightness = 1; } else { if ((float)dayTime / lengthOfDay < 0.5) { blue = (int)(((float)nightTime / lengthOfNight) * 255) + (int)((1.0f - (float)dayTime / lengthOfDay) * 255); } else { blue = (int)(((float)nightTime / lengthOfNight) * 255) + (int)(((float)dayTime / lengthOfDay) * 255); } if ((float)nightTime / lengthOfNight < 0.5) { red = (int)((1.0 - (float)nightTime / lengthOfNight) * 255) + (int)(((float)dayTime / lengthOfDay) * 255); } else { red = (int)(((float)nightTime / lengthOfNight) * 255) + (int)(((float)dayTime / lengthOfDay) * 255); } if (Time) { brightness = 255; } else { if ((float)nightTime / lengthOfNight < 0.5) { brightness = (int)((1.0 - (float)nightTime / lengthOfNight) * 255) + (int)(((float)dayTime / lengthOfDay) * 255); } else { brightness = (int)(((float)nightTime / lengthOfNight) * 255) + (int)(((float)dayTime / lengthOfDay) * 255); } } } return Color.FromNonPremultiplied(red, 255, blue, brightness); } public int GetTimeOfDayInt() { if (Time) { return (int)(100 * ((float)(dayTime + nightTime) / (lengthOfDay + lengthOfNight))) + 1; } else { return (int)(100 * ((float)(lengthOfDay + nightTime) / (lengthOfDay + lengthOfNight))) + 1; } } public int getDays() { return Days; } }