MIF_E31221325/Assets/Scenes/level1/GameSelesai.cs

296 lines
7.9 KiB
C#

using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using UnityEngine.SceneManagement;
public class GameSelesai : MonoBehaviour
{
public TMP_Text Teks_Score, Teks_TotalScore;
public Level1SkorUploader uploader;
public string BersihkanKarakter(string input)
{
// Hilangkan karakter yang tidak bisa di-encode ke UTF-8
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(input);
return System.Text.Encoding.UTF8.GetString(bytes);
}
void Start()
{
int skorTerakhir = Data.DataScore;
Teks_Score.text = skorTerakhir.ToString();
uploader?.SimpanSkorLevel1(() =>
{
StartCoroutine(AmbilHighScoreDariServer());
//unlock level
Debug.Log("Memanggil UnlockNextLevel...");
UnlockNextLevel();
});
}
IEnumerator AmbilHighScoreDariServer()
{
if (GlobalUser.Instance == null)
{
Debug.LogWarning("GlobalUser tidak ditemukan!");
yield break;
}
int userId = GlobalUser.Instance.userId;
WWWForm form = new WWWForm();
form.AddField("api", "get_highscore");
form.AddField("id", userId);
form.AddField("level", "level1");
string url = "https://wifiapi.wazzgroup.com/api.php";
using (UnityWebRequest www = UnityWebRequest.Post(url, form))
{
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.LogError("Gagal ambil high score: " + www.error);
Teks_TotalScore.text = "0";
}
else
{
string json = www.downloadHandler.text;
Debug.Log("Respon high score: " + json);
try
{
HighScoreResponse res = JsonUtility.FromJson<HighScoreResponse>(json);
if (res.status == "success")
{
Teks_TotalScore.text = res.level1.ToString();
}
else
{
Teks_TotalScore.text = "0";
Debug.LogWarning("Respon gagal: " + res.message);
}
}
catch (System.Exception ex)
{
Debug.LogError("Gagal parsing JSON high score: " + ex.Message);
Teks_TotalScore.text = "0";
}
}
}
}
[System.Serializable]
public class HighScoreResponse
{
public string status;
public int level1;
public string message;
}
//unlock level
// ✅ Fungsi untuk membuka level berikutnya
public void UnlockNextLevel()
{
if (GlobalUser.Instance == null)
{
Debug.LogWarning("GlobalUser belum tersedia!");
return;
}
int userId = GlobalUser.Instance.userId;
// Hitung level sekarang dari scene sebelumnya
int previousSceneIndex = SceneManager.GetActiveScene().buildIndex - 1;
int currentLevel = previousSceneIndex / 12;
string key = $"UnlockedLevel_{userId}";
int unlockedLevel = PlayerPrefs.GetInt(key, 1); // default Level 1
Debug.Log($"[UnlockNextLevel] CurrentLevel: {currentLevel}, Unlocked: {unlockedLevel}");
if (currentLevel + 1 > unlockedLevel)
{
PlayerPrefs.SetInt(key, currentLevel + 1);
PlayerPrefs.Save();
Debug.Log($"✅ User {userId} membuka Level {currentLevel + 1}");
}
else
{
Debug.Log("Level berikutnya sudah terbuka.");
}
}
}
//using TMPro;
//using UnityEngine;
//using UnityEngine.Networking;
//using System.Collections;
//public class GameSelesai : MonoBehaviour
//{
// public TMP_Text Teks_Score, Teks_TotalScore;
// public Level1SkorUploader uploader;
// void Start()
// {
// int skorTerakhir = Data.DataScore;
// Teks_Score.text = skorTerakhir.ToString();
// uploader?.SimpanSkorLevel1();
// StartCoroutine(AmbilHighScoreDariServer());
// }
// IEnumerator AmbilHighScoreDariServer()
// {
// if (GlobalUser.Instance == null)
// {
// Debug.LogWarning("GlobalUser tidak ditemukan!");
// yield break;
// }
// int userId = GlobalUser.Instance.userId;
// WWWForm form = new WWWForm();
// form.AddField("api", "get_highscore");
// form.AddField("id", userId);
// form.AddField("level", "level1");
// string url = "https://wifiapi.wazzgroup.com/api.php";
// using (UnityWebRequest www = UnityWebRequest.Post(url, form))
// {
// yield return www.SendWebRequest();
// if (www.result != UnityWebRequest.Result.Success)
// {
// Debug.LogError("Gagal ambil high score: " + www.error);
// Teks_TotalScore.text = "0";
// }
// else
// {
// string json = www.downloadHandler.text;
// Debug.Log("Respon high score: " + json);
// // Coba parse JSON
// try
// {
// HighScoreResponse res = JsonUtility.FromJson<HighScoreResponse>(json);
// if (res.status == "success")
// {
// Teks_TotalScore.text = res.level1.ToString();
// }
// else
// {
// Teks_TotalScore.text = "0";
// Debug.LogWarning("Respon gagal: " + res.message);
// }
// }
// catch (System.Exception ex)
// {
// Debug.LogError("Gagal parsing JSON high score: " + ex.Message);
// Teks_TotalScore.text = "0";
// }
// }
// }
// }
// [System.Serializable]
// public class HighScoreResponse
// {
// public string status;
// public int level1;
// public string message;
// }
//}
//using MySql.Data.MySqlClient;
//using TMPro;
//using UnityEngine;
//using UnityEngine.UI;
//public class GameSelesai : MonoBehaviour
//{
// public TMP_Text Teks_Score, Teks_TotalScore;
// public Level1SkorUploader uploader;
// private string conn;
// private MySqlConnection koneksi;
// void Start()
// {
// conn = "Server=127.0.0.1; Database=game; User=root; Password=;";
// koneksi = new MySqlConnection(conn);
// int skorTerakhir = Data.DataScore;
// Teks_Score.text = skorTerakhir.ToString();
// uploader?.SimpanSkorLevel1();
// AmbilHighScoreDariDatabase();
// }
// void AmbilHighScoreDariDatabase()
// {
// if (GlobalUser.Instance == null)
// {
// Debug.LogWarning("GlobalUser tidak ditemukan!");
// return;
// }
// int userId = GlobalUser.Instance.userId;
// try
// {
// koneksi.Open();
// string sql = "SELECT level1 FROM high_score WHERE id_score = @user_id";
// MySqlCommand cmd = new MySqlCommand(sql, koneksi);
// cmd.Parameters.AddWithValue("@user_id", userId);
// MySqlDataReader reader = cmd.ExecuteReader();
// if (reader.Read())
// {
// int highScore = reader.GetInt32("level1");
// Teks_TotalScore.text = highScore.ToString();
// }
// else
// {
// Teks_TotalScore.text = "0";
// Debug.LogWarning("Data high score tidak ditemukan untuk user ID: " + userId);
// }
// reader.Close();
// koneksi.Close();
// }
// catch (MySqlException ex)
// {
// Debug.LogError("Gagal mengambil high score: " + ex.Message);
// }
// }
//}