UPF/Assets/Game/Scripts/Minigame/MatchMaker.cs
2022-12-27 23:00:53 +05:30

164 lines
4.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LightReflectiveMirror;
using TMPro;
using UnityEngine.UI;
using System;
using Mirror;
using UnityEngine.SceneManagement;
using System.Threading.Tasks;
public class MatchMaker : MonoBehaviour
{
public TMP_Text timerTxt;
public Button btn_cancel;
public TMP_Text playerCountTxt;
float timer;
void Start()
{
if(!DBmanager.LoggedIn){
SceneManager.LoadScene(0);
}
btn_cancel.onClick.AddListener(Cancel);
AudioManager.instnace.SetMusic(2);
// StartCoroutine(StartMatchmaking());
}
private void OnClientConnected()
{
Debug.Log("Hey look someone connected!");
}
// Update is called once per frame
float t=0;
float t2=100;
float connectTimeout = 0;
bool loadedScene;
int sgpPlayers;
int euPlayers;
int usPlayers;
void Update()
{
timer+=Time.deltaTime;
timerTxt.text = SceneData.SecondsToText(timer);
if(t < 1){
t += Time.deltaTime;
}else{
t=0;
StartCoroutine(FetchMatchmake());
}
if(t2 < 5){
t2+= Time.deltaTime;
}else{
t2 = 0;
StartCoroutine(FetchPlayerCount("SGP"));
StartCoroutine(FetchPlayerCount("USA"));
StartCoroutine(FetchPlayerCount("EU"));
}
}
IEnumerator FetchPlayerCount(string region){
WWWForm form = new WWWForm();
form.AddField("region", region);
WWW req = new WWW(DBmanager.phpRoot+"get_players_online.php", form);
yield return req;
if(region == "SGP"){
sgpPlayers = int.Parse(req.text);
}else if(region == "USA"){
usPlayers = int.Parse(req.text);
}else if(region == "EU"){
euPlayers = int.Parse(req.text);
}
UpdatePlayerCount();
}
void UpdatePlayerCount(){
playerCountTxt.text = $"EU: {euPlayers}\nSGP: {sgpPlayers}\nUSA: {usPlayers}";
}
IEnumerator FetchMatchmake(){
WWWForm form = new WWWForm();
form.AddField("name", DBmanager.username);
form.AddField("region", RegionManager.selectedServer.name);
WWW req = new WWW(DBmanager.phpRoot+"matchmake.php", form);
yield return req;
Debug.Log(req.text);
// if(req.text.Contains(DBmanager.username) && !loadedScene){
// int port
// //Room created!
// // isServer= req.text.Substring(0,DBmanager.username.Length) == DBmanager.username;
// // serverName=req.text;
// // AutoConnect.serverName = serverName;
// // AutoConnect.isRankedServer = isServer;
// // AutoConnect.isRanked = true;
// Debug.Log($"Room created! [{req.text}] am I the server? : ");
// LoadingScreen.instance.LoadLevel("MinigameRanked");
// }else{
// //Waiting
// }
try{
int port = int.Parse(req.text);
if(port > 5000){
Debug.Log("Got the port, Lets go!");
AutoConnect.serverPort = port;
LoadingScreen.instance.LoadLevel("MinigameRanked");
}
}catch{
}
}
// IEnumerator StartMatchmaking(){
// StartCoroutine(StartLooking());
// yield return new WaitForSeconds(1);
// lrm.serverName=DBmanager.username;
// NetworkManager.singleton.StartHost();
// }
// bool foundServer =false;
// IEnumerator StartLooking(){
// int counter =0;
// while(counter < 3){
// yield return new WaitForSeconds(1);
// lrm.RequestServerList();
// // counter++;
// }
// }
// void OnServerListUpdated(){
// Debug.Log("Found " + lrm.relayServerList.Count + " Servers");
// foreach(Room room in lrm.relayServerList){
// Debug.Log(room.serverName);
// if(!foundServer && room.serverName.Length>0 && room.serverName != DBmanager.username){
// foundServer=true;
// NetworkManager.singleton.networkAddress = room.serverName;
// NetworkManager.singleton.StartClient();
// }
// }
// }
void Cancel(){
LoadingScreen.instance.LoadLevel("GameScene");
}
}