PotatoPlan/Game1/Sources/Objects/DayNightCycle.cs

124 lines
3.1 KiB
C#
Raw Normal View History

2020-05-06 16:22:30 +02:00
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;
2020-05-06 20:48:20 +02:00
private int lengthOfDay = 20000;
private int lengthOfNight = 20000;
private int Days;
2020-05-06 16:22:30 +02:00
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;
2020-05-06 20:48:20 +02:00
Days++;
2020-05-06 16:22:30 +02:00
}
}
}
}
public string getDayNight()
{
if (Time)
{
return "Day";
}
else
{
return "Night";
}
}
public Color GetTimeOfDay()
{
2020-05-06 20:48:20 +02:00
int blue, red, brightness;
if (nightTime == 0 && dayTime == 0)
2020-05-06 16:22:30 +02:00
{
2020-05-06 20:48:20 +02:00
red = 1;
2020-05-06 16:22:30 +02:00
blue = 1;
2020-05-06 20:48:20 +02:00
brightness = 1;
2020-05-06 16:22:30 +02:00
}
else
{
2020-05-06 20:48:20 +02:00
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);
}
}
2020-05-06 16:22:30 +02:00
}
2020-05-06 20:48:20 +02:00
return Color.FromNonPremultiplied(red, 255, blue, brightness);
2020-05-06 16:22:30 +02:00
}
public int GetTimeOfDayInt()
{
if (Time)
{
2020-05-06 20:48:20 +02:00
return (int)(100 * ((float)(dayTime + nightTime) / (lengthOfDay + lengthOfNight))) + 1;
2020-05-06 16:22:30 +02:00
}
else
{
2020-05-06 20:48:20 +02:00
return (int)(100 * ((float)(lengthOfDay + nightTime) / (lengthOfDay + lengthOfNight))) + 1;
2020-05-06 16:22:30 +02:00
}
2020-05-06 20:48:20 +02:00
}
public int getDays()
{
return Days;
2020-05-06 16:22:30 +02:00
}
}