new Exp pass done

This commit is contained in:
Sewmina
2022-08-30 02:14:03 +05:30
parent 12c04104e4
commit 47b339fb24
34 changed files with 26194 additions and 3439 deletions

View File

@@ -34,5 +34,7 @@ public static class SceneData{
public static void SetTimerTxt(double seconds){
int secs = ((int)(seconds % 60));
int mins = Mathf.FloorToInt((float)(seconds/60));
holder.timerTxt.text = mins + ":"+ secs.ToString("00");
}
}

View File

@@ -123,7 +123,6 @@ public class SpaceshipController : NetworkBehaviour
{
distanceFromCenter = Vector3.Distance(transform.position, Vector3.zero);
pnameTxt.rectTransform.rotation = Quaternion.Euler(Vector3.zero);
SceneData.SetTimerTxt(startedTime-NetworkTime.time);
//Update size of trail and spaceship
transform.localScale = Vector3.Lerp(transform.localScale,new Vector3(scaleMultiplier,scaleMultiplier,scaleMultiplier),0.1f);
@@ -139,6 +138,8 @@ public class SpaceshipController : NetworkBehaviour
if(Input.GetKeyDown(KeyCode.F)){
CmdCheatKills();
}
// Debug.Log(startedTime-NetworkTime.time);
SceneData.SetTimerTxt((startedTime ==0) ? 0 :NetworkTime.time - startedTime);
}
//Simulate on both client and server
if (isLocalPlayer || isServer)
@@ -463,6 +464,7 @@ public class SpaceshipController : NetworkBehaviour
scaleMultiplier=1;
dead=true;
Scores=0;
startedTime=NetworkTime.time;
trailTime = 1;
trailMgr.trail.time = trailTime;
RpcDie(killer);

View File

@@ -6,9 +6,15 @@ using UnityEngine.UI;
public class XpPass : MonoBehaviour
{
public TMP_Text nextLevelTxt;
public float sliderWidthPerLevel = 450;
public Slider levelSlider;
public int maxLevels;
[SerializeField]
public XpPassReward[] rewards;
public Sprite goldRewardIcon, gemRewardIcon;
public GameObject rewardCardPrefab;
public GameObject xpLevelPointPrefab;
public Sprite disabledXpPointIcon;
public Transform xpLevelPointsParent, rewardCardsParent;
void Start()
{
Refresh();
@@ -25,6 +31,86 @@ public class XpPass : MonoBehaviour
void Refresh(){
nextLevelTxt.text = (DBmanager.LevelInt +1).ToString();
levelSlider.value = DBmanager.Level / (float)maxLevels;
//Sort Rewards by Level
XpPassReward temp;
for (int j = 0; j <= rewards.Length - 2; j++) {
for (int i = 0; i <= rewards.Length - 2; i++) {
if (rewards[i].level > rewards[i + 1].level) {
temp= rewards[i + 1];
rewards[i + 1] = rewards[i];
rewards[i] = temp;
}
}
}
//Clear current items
rewardCardPrefab.SetActive(false); xpLevelPointPrefab.SetActive(false);
for(int i=0; i < xpLevelPointsParent.childCount;i++){
if(xpLevelPointsParent.GetChild(i)== xpLevelPointPrefab.transform){continue;}
Destroy(xpLevelPointsParent.GetChild(i).gameObject);
}
for(int i=0; i < rewardCardsParent.childCount;i++){
if(rewardCardsParent.GetChild(i) == rewardCardPrefab.transform){continue;}
Destroy(rewardCardsParent.GetChild(i).gameObject);
}
rewardCardPrefab.SetActive(true); xpLevelPointPrefab.SetActive(true);
Instantiate(xpLevelPointPrefab, xpLevelPointsParent).GetComponentInChildren<TMP_Text>().text="1";
foreach(XpPassReward reward in rewards){
GameObject rewardCard = Instantiate(rewardCardPrefab, rewardCardsParent);
GameObject xpLevelPoint = Instantiate(xpLevelPointPrefab, xpLevelPointsParent);
xpLevelPoint.GetComponentInChildren<TMP_Text>().text = reward.level.ToString();
rewardCard.transform.GetChild(1).GetComponent<Image>().sprite = (reward.rewardType == XpRewardType.Gold) ? goldRewardIcon : gemRewardIcon;
rewardCard.GetComponentInChildren<TMP_Text>().text = (reward.amount >=1000) ? reward.amount.ToString("0,000") : reward.amount.ToString();
if(reward.level > DBmanager.Level){
xpLevelPoint.GetComponent<Image>().sprite = disabledXpPointIcon;
rewardCard.GetComponent<Button>().interactable=false;
}
//If Collected already
if(DBmanager.ExpPassCollected.Contains(reward.level)){
rewardCard.GetComponent<Button>().interactable=false;
rewardCard.transform.GetChild(3).gameObject.SetActive(true);
}
rewardCard.GetComponent<Button>().onClick.AddListener(()=>OnRewardCollect(reward.level));
}
levelSlider.GetComponent<RectTransform>().sizeDelta = new Vector2(sliderWidthPerLevel * rewards.Length-2 ,levelSlider.GetComponent<RectTransform>().sizeDelta.y);
rewardCardPrefab.SetActive(false); xpLevelPointPrefab.SetActive(false);
levelSlider.value = DBmanager.Level / (float)rewards[rewards.Length-1].level;
}
public void OnRewardCollect(int level){
if(DBmanager.ExpPassCollected.Contains(level)){return;} //False call
foreach(XpPassReward reward in rewards){
if(reward.level == level){
DBmanager.AddCollectedExpPass(level);
if(reward.rewardType== XpRewardType.Gold){
DBmanager.SetCoins(DBmanager.Coins+ reward.amount);
}else if(reward.rewardType == XpRewardType.Gems){
DBmanager.SetGems(DBmanager.Gems + reward.amount);
}
break;
}
}
Refresh();
}
}
[System.Serializable]
public class XpPassReward{
string name => level.ToString();
public int level;
public XpRewardType rewardType;
public int amount;
}
public enum XpRewardType{
Gold,
Gems
}