Basically it’s an Hourly Reward Bonus! and set’s the target time from when the user starts first time to once collected the reward the timer will set a 4 hour timer from the current time.
FIRST I SET THE TARGET TIME AND SAVE!
if (PlayerPrefs.HasKey ("Hourly_Year")) {
HourlyYear = PlayerPrefs.GetInt ("Hourly_Year");
}
else {
HourlyYear = DateTime.Now.Year;
PlayerPrefs.SetInt ("Hourly_Year", HourlyYear);
}
if (PlayerPrefs.HasKey ("Hourly_Month"))
HourlyMonth = PlayerPrefs.GetInt ("Hourly_Month");
else {
HourlyMonth = DateTime.Now.Month;
PlayerPrefs.SetInt ("Hourly_Month", HourlyMonth);
}
if (PlayerPrefs.HasKey ("Hourly_Day"))
HourlyDay = PlayerPrefs.GetInt ("Hourly_Day");
else {
HourlyDay = DateTime.Now.Day;
PlayerPrefs.SetInt ("Hourly_Day", HourlyDay);
}
if (PlayerPrefs.HasKey ("Hourly_Hour"))
HourlyHour = PlayerPrefs.GetInt ("Hourly_Hour");
else {
HourlyHour = DateTime.Now.Hour;
PlayerPrefs.SetInt ("Hourly_Hour", HourlyHour);
}
if (PlayerPrefs.HasKey ("Hourly_Min"))
HourlyMin = PlayerPrefs.GetInt ("Hourly_Min");
else {
HourlyMin = DateTime.Now.Minute;
PlayerPrefs.SetInt ("Hourly_Min", HourlyMin);
}
if (PlayerPrefs.HasKey ("Hourly_Sec"))
HourlySec = PlayerPrefs.GetInt ("Hourly_Sec");
else {
HourlySec = DateTime.Now.Minute;
PlayerPrefs.SetInt ("Hourly_Sec", HourlySec);
}
THEN THIS WILL UPDATE AND CALCULATE THE TIME REMAINING!
DateTime target = new DateTime (HourlyYear, HourlyMonth, HourlyDay, HourlyHour + HourlyRewardHour, HourlyMin + HourlyRewardMinute, HourlySec + HourlyRewardSecond);
DateTime now = DateTime.Now;
TimeSpan remainingTime = target.Subtract (now);
THEN I CHECK TO SEE OF THE TIMERS HAVE REACHED 0!
if (remainingTime.Hours <= 0 && remainingTime.Minutes <= 0 && remainingTime.Seconds <= 0) {
RewardMan.HourlyRewardTimeText.text = "CLAIM BONUS!";
RewardMan.ClaimHourlyButton.interactable = true;
} else {
RewardMan.HourlyRewardTimeText.text = remainingTime.Hours.ToString () + " HOURS, " + remainingTime.Minutes.ToString () + " MINS & " + remainingTime.Seconds.ToString () + " SECS!";
RewardMan.ClaimHourlyButton.interactable = false;
}
THIS IS CALLED ONCE THE USER HAS PRESSED THE BUTTON, IT WILL SET A NEW TARGET TIME FROM 4 HOURS FROM NOW!
//Clear Saves and save fresh, to avoid any errors!
if (PlayerPrefs.HasKey ("Hourly_Year"))
PlayerPrefs.DeleteKey ("Hourly_Year");
if (PlayerPrefs.HasKey ("Hourly_Month"))
PlayerPrefs.DeleteKey ("Hourly_Month");
if (PlayerPrefs.HasKey ("Hourly_Day"))
PlayerPrefs.DeleteKey ("Hourly_Day");
if (PlayerPrefs.HasKey ("Hourly_Hour"))
PlayerPrefs.DeleteKey ("Hourly_Hour");
if (PlayerPrefs.HasKey ("Hourly_Min"))
PlayerPrefs.DeleteKey ("Hourly_Min");
if (PlayerPrefs.HasKey ("Hourly_Sec"))
PlayerPrefs.DeleteKey ("Hourly_Sec");
//SAVE NEW COLLECTED TIME!
HourlyYear = DateTime.Now.Year;
PlayerPrefs.SetInt ("Hourly_Year", HourlyYear);
HourlyMonth = DateTime.Now.Month;
PlayerPrefs.SetInt ("Hourly_Month", HourlyMonth);
HourlyDay = DateTime.Now.Day;
PlayerPrefs.SetInt ("Hourly_Day", HourlyDay);
HourlyHour = DateTime.Now.Hour;
PlayerPrefs.SetInt ("Hourly_Hour", HourlyHour);
HourlyMin = DateTime.Now.Minute;
PlayerPrefs.SetInt ("Hourly_Min", HourlyMin);
HourlySec = DateTime.Now.Minute;
PlayerPrefs.SetInt ("Hourly_Sec", HourlySec);
//Give Reward Item! You can specify a Reward Item by setting the element ID and set true to false, Current settings are set for Random Item from Achievement Reward Item's List!
if (RewardMan != null)
RewardMan.GiveHourlyRewardItem (HourlyRewardID);
THANK YOU FOR YOUR HELP!