new Exp pass done
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user