In my code i am trying to check saved last join date with current date. If last join date is not equal to current date i want to make tries count 5. Basic daily login energy fill up system. I stuck in some point. I can’t save dates format with same as internet date format so i can’t compare them. What should i do?
using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using UnityEngine.Advertisements;
using System.Collections;
public class GameManager : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
public int maxPlayCount = 5;
public int currentPlayCount;
public int dailyReward = 5;
public TMPro.TextMeshProUGUI playCountText;
public TMPro.TextMeshProUGUI rewardText;
private DateTime lastPlayDate;
private DateTime dateTime;
private string apiEndpoint = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Istanbul";
private string dateTimeStr;
private bool isAdAvailable = false;
string _adUnitId = null;
[SerializeField] string _androidAdUnitId = "Rewarded_Android";
[SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
[Serializable]
public class TimeData
{
public int year;
public int month;
public int day;
public int hour;
public int minute;
public int seconds;
public int milliSeconds;
public string dateTime;
public string date;
public string time;
public string timeZone;
public string dayOfWeek;
public bool dstActive;
}
void Awake()
{
#if UNITY_IOS
_adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
_adUnitId = _androidAdUnitId;
#endif
}
void Start()
{
// Tarih bilgisini güncelliyoruz.
StartCoroutine(GetCurrentTime());
if (!PlayerPrefs.HasKey("LastPlayDate"))
{
// İlk kez oyun açıldığında tarih bilgisini kaydediyoruz.
SavePlayDate();
}
else
{
// Daha önce kaydedilen son oynama tarihini alıyoruz.
string lastPlayDateStr = PlayerPrefs.GetString("LastPlayDate");
lastPlayDate = DateTime.Parse(lastPlayDateStr);
Debug.Log(lastPlayDate.Date);
if (lastPlayDate.Date == dateTime)
{
// Son oynama tarihi bugün ise, mevcut oynama hakkını yüklüyoruz.
currentPlayCount = PlayerPrefs.GetInt("CurrentPlayCount");
Debug.Log("Son oynama tarihi bugün. Mevcut oynama hakkı yüklendi.");
}
else
{
//Son oynama tarihi bugün değil ise oynama hakkını güncelliyoruz.
currentPlayCount = maxPlayCount;
SavePlayDate();
Debug.Log("Son oynama tarihi bugün değil. Oynama hakkı güncellendi.");
}
}
UpdateUI();
}
void SavePlayDate()
{
// Son oynama tarihini kaydediyoruz.
PlayerPrefs.SetString("LastPlayDate", dateTimeStr);
PlayerPrefs.SetInt("CurrentPlayCount", maxPlayCount);
currentPlayCount = maxPlayCount;
UpdateUI();
}
void UpdateUI()
{
// UI elemanlarını güncelliyoruz.
playCountText.text = "Kalan Enerji: " + currentPlayCount;
rewardText.text = "Ödül: " + dailyReward;
}
public void PlayGame()
{
if (currentPlayCount > 0)
{
currentPlayCount--;
PlayerPrefs.SetInt("CurrentPlayCount", currentPlayCount);
UpdateUI();
Debug.Log("Starting game...");
}
else
{
Debug.Log("You have no play count left. Watch an ad to get a play count.");
ShowAd();
}
}
public void OnUnityAdsAdLoaded(string _adUnitId)
{
Debug.Log("Ad loaded: " + _adUnitId);
isAdAvailable = true;
}
public void OnUnityAdsFailedToLoad(string _adUnitId, UnityAdsLoadError error, string message)
{
Debug.LogWarning("Ad failed to load: " + _adUnitId + " - Error: " + error.ToString() + " - Message: " + message);
isAdAvailable = false;
}
public void OnUnityAdsShowFailure(string _adUnitId, UnityAdsShowError error, string message)
{
Debug.LogWarning("Ad failed to show: " + _adUnitId + " - Error: " + error.ToString() + " - Message: " + message);
}
public void OnUnityAdsShowStart(string _adUnitId)
{
Debug.Log("Ad started: " + _adUnitId);
}
public void OnUnityAdsShowClick(string _adUnitId)
{
Debug.Log("Ad clicked: " + _adUnitId);
}
public void OnUnityAdsShowComplete(string _adUnitId, UnityAdsShowCompletionState showCompletionState)
{
Debug.Log("Ad completed: " + _adUnitId + " - Completion state: " + showCompletionState.ToString());
// Reklam kapatıldıktan sonra oynama hakkını yüklüyoruz.
currentPlayCount++;
PlayerPrefs.SetInt("CurrentPlayCount", currentPlayCount);
UpdateUI();
}
public void OnUnityAdsDidError(string message)
{
Debug.LogError("Ad error: " + message);
}
public void ShowAd()
{
// Reklam göstermek için uygun mu diye kontrol ediyoruz.
if (isAdAvailable)
{
// Reklamı gösteriyoruz ve uygun listener'ları atıyoruz.
Advertisement.Show(_adUnitId, this);
isAdAvailable = false;
}
else
{
// Reklam yüklenmediyse yeniden yüklüyoruz.
Advertisement.Load(_adUnitId, this);
}
}
public void OnAdClosed()
{
// Reklam kapatıldıktan sonra oynama hakkını yüklüyoruz.
UpdateUI();
}
void Update()
{
}
IEnumerator GetCurrentTime()
{
// Tarih bilgisini almak için sunucuya bağlantı isteği gönderiyoruz.
UnityWebRequest webRequest = UnityWebRequest.Get(apiEndpoint);
{
yield return webRequest.SendWebRequest();
if (webRequest.result != UnityWebRequest.Result.ConnectionError || webRequest.result == UnityWebRequest.Result.ProtocolError)
{
// Sunucudan gelen tarih bilgisini alıyoruz.
string jsonResult = webRequest.downloadHandler.text;
TimeData timeData = JsonUtility.FromJson<TimeData>(jsonResult);
string dateTimeStr = timeData.date;
DateTime dateTime = DateTime.Parse(dateTimeStr);
Debug.Log(dateTime);
}
else
{
Debug.Log("Error while fetching date from server: " + webRequest.error);
yield break;
}
}
}
}