Load balancer + kills text + most time and some other stuff

This commit is contained in:
Sewmina
2022-09-08 02:23:59 +05:30
parent 7cdb3dc451
commit 4493a34565
49 changed files with 174318 additions and 4466 deletions

View File

@@ -9,6 +9,7 @@ public class AutoConnect : MonoBehaviour
void Start()
{
if(isClient){
FindObjectOfType<NetworkManager>().networkAddress = RegionManager.selectedServer.ip;
FindObjectOfType<NetworkManager>().StartClient();
}
}

View File

@@ -0,0 +1,56 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
public class KillText : MonoBehaviour
{
private static KillText instance;
void Awake(){
instance = this;
}
public static void Show(int kills){
if(instance==null){
Debug.LogError("No KillText instance was found!");
return;
}
Debug.Log("Showin kills for " + kills);
instance.m_show((kills > 5) ? 5: kills);
}
private void m_show(int kills){
if(kills < 2){return;}
imgKills.sprite= sprites[kills-2];
instance.anim.CrossFadeInFixedTime("anim",0.1f);
switch(kills){
case 2:
txtKills.text = "Double Kill!";
DBmanager.SetDoubleKills(DBmanager.DoubleKills+1);
break;
case 3:
txtKills.text = "Triple Kill!";
DBmanager.SetTripleKills(DBmanager.TripleKills+1);
break;
case 4:
txtKills.text = "Quad Kill!";
DBmanager.SetQuadKills(DBmanager.QuadKills+1);
break;
case 5:
txtKills.text = "Penta Kill!";
DBmanager.SetPentaKills(DBmanager.PentaKills+1);
break;
}
}
public Animator anim;
public Sprite[] sprites;
public Image imgKills;
public TMP_Text txtKills;
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 74b20ae065c1d6e57ae0380cb25bb83b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -22,6 +22,7 @@ public class MinigameManager : NetworkBehaviour
private void Awake()
{
// if(!DBmanager.LoggedIn){SceneManager.LoadScene(0);}
SceneData.GameManager = this;
instance = this;
@@ -136,21 +137,27 @@ public class MinigameManager : NetworkBehaviour
{
StartCoroutine(setRespawn(player));
}
public void Restart(){
if(SceneData.localPlayer.GetComponent<SpaceshipController>().dead){
SetRespawn(SceneData.localPlayer);
}else{
Debug.LogError("You aren't dead, you can't restart unless you are dead.");
}
}
IEnumerator setRespawn(GameObject player)
{
if (isServer)
{
player.SetActive(false);
yield return new WaitForSeconds(3);
// if (isServer)
// {
// player.SetActive(false);
// yield return new WaitForSeconds(0.1f);
Vector3 RespawnPoint = NetworkManager.startPositions[Random.Range(0, NetworkManager.startPositions.Count - 1)].position;
player.GetComponent<SpaceshipController>().Respawn(RespawnPoint);
}
else
{
// }
// else
// {
yield return new WaitForSeconds(1);
}
// }
}
Vector3 getRandomPositionOnMap()
@@ -174,10 +181,12 @@ public class MinigameManager : NetworkBehaviour
public GameObject loadingScreen;
public async void BackToBase(){
loadingScreen.SetActive(true);
await Task.Delay(1000);
// loadingScreen.SetActive(true);
// await Task.Delay(1000);
LoadingScreen.instance.LoadLevel("GameScene");
NetworkManager.singleton.StopClient();
SceneManager.LoadScene("MinigameMenu");
// SceneManager.LoadScene("GameScene");
}

View File

@@ -7,7 +7,12 @@ using TMPro;
public class SceneDataHolder : MonoBehaviour
{
public Transform trailCollidersParent;
[Header("Deadscreen")]
public GameObject deadScreen;
public GameObject xpEarnings;
public GameObject metalEarnings;
public TMP_Text survivalTimeTxt;
public TMP_Text mostTimeTxt;
public EventTrigger boostBtn;
public TMP_Text timerTxt;
void Awake()
@@ -21,6 +26,16 @@ public class SceneDataHolder : MonoBehaviour
public void OnBoostDown(){
SceneData.OnBoostDown.Invoke();
}
public void ShowDeadscreen(int xpEarned, int metalEarned, double survivalTime){
deadScreen.SetActive(true);
xpEarnings.SetActive(xpEarned > 0); metalEarnings.SetActive(metalEarned > 0);
xpEarnings.GetComponentInChildren<TMP_Text>().text = xpEarned.ToString();
metalEarnings.GetComponentInChildren<TMP_Text>().text = metalEarned.ToString();
survivalTimeTxt.text = SceneData.SecondsToText(survivalTime);
mostTimeTxt.text = SceneData.SecondsToText(DBmanager.MostTime);
}
}
@@ -31,10 +46,13 @@ public static class SceneData{
public static UnityEvent OnBoostDown = new UnityEvent();
public static UnityEvent OnBoostUp = new UnityEvent();
public static void SetTimerTxt(double seconds){
public static void SetTimerTxt(double seconds){
holder.timerTxt.text = SecondsToText(seconds);
}
public static string SecondsToText(double seconds){
int secs = ((int)(seconds % 60));
int mins = Mathf.FloorToInt((float)(seconds/60));
holder.timerTxt.text = mins + ":"+ secs.ToString("00");
return mins + ":"+ secs.ToString("00");
}
}

View File

@@ -6,10 +6,16 @@ using UnityEngine.UI;
public class SpaceshipController : NetworkBehaviour
{
public SpriteRenderer playerImg;
public SkinsData skins;
[SyncVar(hook=nameof(OnSkinChanged))]
public string skinName = null;
[SyncVar(hook=nameof(OnPnameChanged))]
public string pname;
[SyncVar(hook=nameof(OnScoresChanged))]
public int Scores;
[SyncVar(hook=nameof(OnKillsChanged))]
public int Kills;
[SyncVar(hook=nameof(OnTrailTimeChanged))]
public float trailTime;
public float trailIncrementRate = 0.5f;
@@ -48,6 +54,20 @@ public class SpaceshipController : NetworkBehaviour
pnameTxt.text = newName;
}
[Command]
void CmdSetSkin(string newSkin){
skinName = newSkin;
}
void OnSkinChanged(string oldSkin, string newSkin){
ChangeSkin(newSkin);
}
void ChangeSkin(string name){
Sprite newSprite = SkinManagerHelper.getSkinSprite(name,skins);
playerImg.sprite = newSprite;
}
void OnScoresChanged(int oldScores, int newScores){
Debug.Log($"Add scores { newScores - oldScores}, (total: {newScores})");
@@ -89,21 +109,40 @@ public class SpaceshipController : NetworkBehaviour
}
[SyncVar]
double startedTime = 0;
void ResetStats(){
startedXp = DBmanager.Xp;
startedMetal = DBmanager.Metal;
}
void Start()
{
scaleMultiplier=1;
if (isLocalPlayer)
{
ResetStats();
if (joystick == null) { joystick = FindObjectOfType<Joystick>(); }
FindObjectOfType<CameraFollower>().SetTarget(transform);
string myName = PlayerPrefs.GetString("username");
SceneData.localPlayer = gameObject;
SceneData.OnBoostDown.AddListener(OnBoostDown);
SceneData.OnBoostUp.AddListener(OnBoostUp);
//Set username
if(isServer){pname=myName;}else{
CmdSetPname(myName);
}
//Set Skin
if(!DBmanager.SkinsPurchased.Contains(SkinShopManager.GetEquipedSkin())){
//False skin purchase
}else{
if(isServer){
skinName = SkinShopManager.GetEquipedSkin();
}else{
CmdSetSkin(SkinShopManager.GetEquipedSkin());
}
}
pnameTxt.text = myName;
pnameTxt.gameObject.SetActive(false);
@@ -139,7 +178,11 @@ public class SpaceshipController : NetworkBehaviour
CmdCheatKills();
}
// Debug.Log(startedTime-NetworkTime.time);
SceneData.SetTimerTxt((startedTime ==0) ? 0 :NetworkTime.time - startedTime);
double survivalTime = (startedTime ==0) ? 0 :NetworkTime.time - startedTime;
if(DBmanager.MostTime < (int)survivalTime){
DBmanager.SetMostTime((int)survivalTime);
}
SceneData.SetTimerTxt(survivalTime);
}
//Simulate on both client and server
if (isLocalPlayer || isServer)
@@ -401,12 +444,13 @@ public class SpaceshipController : NetworkBehaviour
public void TrailCollided(Collider2D hit){
if(!isServer){
Debug.Log("Got hit : " + hit.name);
// Debug.Log("This cannot run on client, That's illegal!"); // <-- What this log says
return;
}
SpaceshipController deadPlayer = hit.GetComponent<SpaceshipController>();
Debug.Log("got hit by player? : " + deadPlayer != null);
if(deadPlayer!=null && !deadPlayer.dead){ // <-- okay we killed someone | KILLCODE
deadPlayer.Die(pname);
Debug.Log($"{pname} killed {deadPlayer.pname}");
@@ -415,10 +459,24 @@ public class SpaceshipController : NetworkBehaviour
}
void OnKill(){
Kills++;
Scores+= 10; //TODO: Need to change Scores on kills?
scaleMultiplier+=0.05f;
OnScaleChanged(scaleMultiplier,scaleMultiplier);
IncreaseTrail(trailIncrementRate);
RpcOnKill();
}
[ClientRpc]
void RpcOnKill(){
}
void OnKillsChanged(int oldVal, int newVal){
if(isLocalPlayer){
Debug.Log("Show kills for " + newVal);
KillText.Show(newVal);
}
}
void IncreaseTrail(float rate){
@@ -464,13 +522,18 @@ public class SpaceshipController : NetworkBehaviour
scaleMultiplier=1;
dead=true;
Scores=0;
Kills=0;
startedTime=NetworkTime.time;
trailTime = 1;
trailMgr.trail.time = trailTime;
RpcDie(killer);
MinigameManager.instance.SetRespawn(gameObject);
gameObject.SetActive(false);
//MinigameManager.instance.SetRespawn(gameObject);
}
private int startedXp;
private int startedMetal;
[ClientRpc]
public void RpcDie(string killer){
Debug.Log($"{killer} killed {pname} : isItMe? -> {isLocalPlayer}");
@@ -478,11 +541,26 @@ public class SpaceshipController : NetworkBehaviour
gameObject.SetActive(false);
if(isLocalPlayer){
//TODO: Death message goes here
SceneData.holder.deadScreen.SetActive(true);
SceneData.holder.ShowDeadscreen(DBmanager.Xp - startedXp, DBmanager.Metal - startedMetal, NetworkTime.time - startedTime);
}
}
public void Respawn(Vector3 respawnPoint){
Debug.Log("Respawning " + pname);
if(isServer){
respawn(respawnPoint);
}else{
CmdRespawn(respawnPoint);
}
}
[Command]
void CmdRespawn(Vector3 respawnPoint){
respawn(respawnPoint);
}
public void respawn(Vector3 respawnPoint){
dead=false;
trailMgr.trail.emitting =false;
trailMgr.trail.Clear();
@@ -506,6 +584,7 @@ public class SpaceshipController : NetworkBehaviour
if(isLocalPlayer){
SceneData.holder.deadScreen.SetActive(false);
ResetStats();
}
}
}

View File

@@ -4,30 +4,7 @@ using UnityEngine;
public class SpaceshipSkin : MonoBehaviour
{
public SpriteRenderer playerImg;
public SkinsData skinsData;
private bool initialized=false;
void Update()
{
if(!DBmanager.LoggedIn) {
return;
}
if(!initialized){
//Validate the ownership of skin here
if(!DBmanager.SkinsPurchased.Contains(SkinShopManager.GetEquipedSkin())){
return; //False skin purchase
}
Sprite newSprite = SkinManagerHelper.getSkinSprite(SkinShopManager.GetEquipedSkin(),skinsData);
if(newSprite==null){return;}
playerImg.sprite = newSprite;
initialized = true;
}
}
}
public static class SkinManagerHelper{

View File

@@ -17,7 +17,7 @@ public class TrailMgr : MonoBehaviour
// Update is called once per frame
void Update(){
#if PLATFORM_ANDROID
// #if PLATFORM_ANDROID
positions = new Vector3[trail.positionCount];
int length = trail.GetPositions(positions);
if(length > trailsPool.Count){
@@ -38,13 +38,14 @@ public class TrailMgr : MonoBehaviour
trailsPool[i].SetActive(false);
}
}
#endif
// #endif
}
public void OnColliderHit(Collider2D hit){
controller.TrailCollided(hit);
Debug.Log("Got hit:" +hit.name);
}
void OnValidate(){