Tutorial start
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
public class SkinShopItem : MonoBehaviour
|
||||
@@ -8,19 +9,27 @@ public class SkinShopItem : MonoBehaviour
|
||||
[Tooltip("In order of: normal, rare, legendary. 3 items required")]
|
||||
public GameObject[] banners;
|
||||
public Image frame;
|
||||
public bool Available;
|
||||
public GameObject notPurchasedIndicator;
|
||||
public SkinShopItemData skinData;
|
||||
|
||||
public void Set(SkinShopItemData data){
|
||||
public void Set(SkinShopItemData data, bool available){
|
||||
skinData = data;
|
||||
// newItem.backgroundImg.color = (skinsData.skins[i].skinType==SkinType.Base) ? basicColor : (skinsData.skins[i].skinType==SkinType.Rare ? rareColor : legendaryColor);
|
||||
spaceshipImg.sprite = data.image;
|
||||
|
||||
if(available){spaceshipImg.sprite = data.image;}
|
||||
spaceshipImg.color = available ? Color.white : Color.black;
|
||||
Available = available;
|
||||
UpdateFrame();
|
||||
|
||||
banners[0].SetActive(data.skinType== SkinType.Base);
|
||||
banners[1].SetActive(data.skinType== SkinType.Rare);
|
||||
banners[2].SetActive(data.skinType== SkinType.Legendary);
|
||||
if(data.price <=0){
|
||||
banners[0].SetActive(true);
|
||||
banners[1].SetActive(false);
|
||||
}else{
|
||||
banners[0].SetActive(false);
|
||||
banners[1].SetActive(data.skinType== SkinType.Base);
|
||||
}
|
||||
banners[2].SetActive(data.skinType== SkinType.Rare);
|
||||
banners[3].SetActive(data.skinType== SkinType.Legendary);
|
||||
|
||||
|
||||
}
|
||||
@@ -36,13 +45,17 @@ public class SkinShopItem : MonoBehaviour
|
||||
if(!DBmanager.SkinsPurchased.Contains(skinData.name)){
|
||||
frame.color = Color.red;
|
||||
notPurchasedIndicator.SetActive(true);
|
||||
notPurchasedIndicator.GetComponentInChildren<TMP_Text>().text = skinData.price.ToString();
|
||||
}else{
|
||||
notPurchasedIndicator.SetActive(false);
|
||||
}
|
||||
if(!Available){
|
||||
notPurchasedIndicator.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnClick(){
|
||||
SkinShopManager.instance.SelectItem(skinData);
|
||||
SkinShopManager.instance.SelectItem(skinData,Available);
|
||||
}
|
||||
public void OnSelectionChanged(string selectedItem){
|
||||
if(selectedItem == skinData.name){
|
||||
|
||||
@@ -8,6 +8,8 @@ using UnityEngine.UI;
|
||||
public class SkinShopManager : MonoBehaviour
|
||||
{
|
||||
public static SkinShopManager instance;
|
||||
public static bool availableToUpgrade;
|
||||
public NewSkinDisplay newSkinDisplay;
|
||||
public Building skinShopBuilding;
|
||||
public SkinsData skinsData;
|
||||
public GameObject popup;
|
||||
@@ -17,6 +19,8 @@ public class SkinShopManager : MonoBehaviour
|
||||
public Button btn_Equip;
|
||||
public Button btn_Buy;
|
||||
public static SkinShopItemData selectedSkin;
|
||||
public int[] prices;
|
||||
public static int[] Prices => instance.prices;
|
||||
List<SkinShopItem> skinShopItems=new List<SkinShopItem>();
|
||||
|
||||
void Awake() {
|
||||
@@ -34,8 +38,11 @@ public class SkinShopManager : MonoBehaviour
|
||||
Populate();
|
||||
popup.SetActive(true);
|
||||
}
|
||||
|
||||
List<SkinShopItemData> skinsAvailableToPurchase= new List<SkinShopItemData>();
|
||||
public void Populate(){
|
||||
int purchasedFlagships=0;
|
||||
int flagshipsCount=0;
|
||||
|
||||
//Validate skins list
|
||||
if(DBmanager.SkinsPurchased.Count <=0){
|
||||
foreach(SkinShopItemData skin in skinsData.skins){
|
||||
@@ -52,25 +59,57 @@ public class SkinShopManager : MonoBehaviour
|
||||
for(int i=0;i < listItemsParent.childCount;i++){
|
||||
Destroy(listItemsParent.GetChild(i).gameObject);
|
||||
}
|
||||
skinsAvailableToPurchase = new List<SkinShopItemData>();
|
||||
skinShopItems = new List<SkinShopItem>();
|
||||
for(int i=0; i<skinsData.skins.Length;i++){
|
||||
int rarity = 0;
|
||||
if(skinsData.skins[i].skinType == SkinType.Rare){rarity=1;}
|
||||
if(skinsData.skins[i].skinType == SkinType.Legendary){rarity=2;}
|
||||
int rarity = getRarityInt(skinsData.skins[i]);
|
||||
bool isAvailable = skinShopBuilding.curLevel >= rarity;
|
||||
if(!isAvailable){continue;}
|
||||
|
||||
if(skinShopBuilding.curLevel < rarity){
|
||||
continue;
|
||||
bool isOwned = DBmanager.SkinsPurchased.Contains(skinsData.skins[i].name);
|
||||
|
||||
|
||||
if(skinShopBuilding.curLevel == rarity){
|
||||
flagshipsCount++;
|
||||
if(isOwned){
|
||||
purchasedFlagships++;
|
||||
}
|
||||
}
|
||||
SkinShopItem newItem = Instantiate(listItemPrefab, listItemsParent).GetComponent<SkinShopItem>();
|
||||
newItem.Set(skinsData.skins[i]);
|
||||
skinShopItems.Add(newItem);
|
||||
|
||||
if(!isOwned){
|
||||
skinsAvailableToPurchase.Add(skinsData.skins[i]);
|
||||
}else{
|
||||
SkinShopItem newItem = Instantiate(listItemPrefab, listItemsParent).GetComponent<SkinShopItem>();
|
||||
|
||||
newItem.Set(skinsData.skins[i],isOwned);
|
||||
skinShopItems.Add(newItem);
|
||||
}
|
||||
|
||||
|
||||
// newItem.backgroundImg.color = (skinsData.skins[i].skinType==SkinType.Base) ? basicColor : (skinsData.skins[i].skinType==SkinType.Rare ? rareColor : legendaryColor);
|
||||
}
|
||||
Debug.Log("Question ships: " +skinsAvailableToPurchase.Count);
|
||||
foreach(SkinShopItemData skin in skinsAvailableToPurchase){
|
||||
int rarity = getRarityInt(skin);
|
||||
SkinShopItem newItem = Instantiate(listItemPrefab, listItemsParent).GetComponent<SkinShopItem>();
|
||||
newItem.Set(skin,false);
|
||||
skinShopItems.Add(newItem);
|
||||
}
|
||||
|
||||
SelectItem(selectedSkin);
|
||||
availableToUpgrade = purchasedFlagships >= ((float)flagshipsCount/2f);
|
||||
|
||||
SelectItem(selectedSkin,true);
|
||||
}
|
||||
|
||||
public void SelectItem(SkinShopItemData data){
|
||||
int getRarityInt(SkinShopItemData skin){
|
||||
int rarity = 0;
|
||||
if(skin.skinType == SkinType.Rare){rarity=1;}
|
||||
if(skin.skinType == SkinType.Legendary){rarity=2;}
|
||||
|
||||
return rarity;
|
||||
}
|
||||
|
||||
public void SelectItem(SkinShopItemData data, bool Available){
|
||||
selectedSkin = data;
|
||||
if(data==null){
|
||||
btn_Equip.gameObject.SetActive(false); btn_Buy.gameObject.SetActive(false);
|
||||
@@ -99,10 +138,24 @@ public class SkinShopManager : MonoBehaviour
|
||||
Populate();
|
||||
}
|
||||
|
||||
void onBuy(){
|
||||
DBmanager.PurchaseSkin(selectedSkin);
|
||||
public void EquipSkin(SkinShopItemData skin){
|
||||
EquipSkin(skin.name);
|
||||
Populate();
|
||||
}
|
||||
|
||||
void onBuy(){
|
||||
List<SkinShopItemData> skinsInSameRarity = new List<SkinShopItemData>();
|
||||
foreach(SkinShopItemData skin in skinsAvailableToPurchase){
|
||||
if(skin.skinType == selectedSkin.skinType){
|
||||
skinsInSameRarity.Add(skin);
|
||||
}
|
||||
}
|
||||
|
||||
SkinShopItemData randomSkin = skinsInSameRarity[UnityEngine.Random.Range(0,skinsInSameRarity.Count)];
|
||||
|
||||
DBmanager.PurchaseSkin(randomSkin);
|
||||
SkinShopManager.instance.Populate();
|
||||
newSkinDisplay.Show(randomSkin);
|
||||
}
|
||||
|
||||
public static void EquipSkin(string skin){
|
||||
@@ -117,6 +170,17 @@ public class SkinShopManager : MonoBehaviour
|
||||
|
||||
return "Default";
|
||||
}
|
||||
|
||||
public static Color getRarityColor(SkinShopItemData skin){
|
||||
Color color = new Color(0,1,0);
|
||||
if(skin.skinType == SkinType.Rare){
|
||||
color = new Color(0,1,1);
|
||||
}else if(skin.skinType == SkinType.Legendary){
|
||||
color = new Color(1,0,0);
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
|
||||
@@ -21,6 +21,8 @@ public class SpaceshipController : NetworkBehaviour
|
||||
public int Kills;
|
||||
[SyncVar(hook = nameof(OnTrailTimeChanged))]
|
||||
public float trailTime;
|
||||
public float minTrailTime;
|
||||
public float maxTrailTime;
|
||||
[SyncVar]
|
||||
public int moonsCollected;
|
||||
public float trailIncrementRate = 0.5f;
|
||||
@@ -102,8 +104,9 @@ public class SpaceshipController : NetworkBehaviour
|
||||
trailMgr.trail.time = newValue;
|
||||
if (isLocalPlayer)
|
||||
{
|
||||
SceneData.holder.boostBtn.gameObject.SetActive(scale > 1);
|
||||
if(scale <=1 && boosting){
|
||||
bool isBoostAvailable= trailTime > minTrailTime;
|
||||
SceneData.holder.boostBtn.gameObject.SetActive(isBoostAvailable);
|
||||
if(!isBoostAvailable&& boosting){
|
||||
CmdSetBoosting(false);
|
||||
}
|
||||
}
|
||||
@@ -195,6 +198,8 @@ public class SpaceshipController : NetworkBehaviour
|
||||
if (isServer)
|
||||
{
|
||||
startedTime = NetworkTime.time;
|
||||
trailTime =0;
|
||||
DecreaseTrail(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,14 +551,14 @@ public class SpaceshipController : NetworkBehaviour
|
||||
|
||||
void IncreaseTrail(float rate)
|
||||
{
|
||||
trailTime = trailMgr.trail.time + rate;
|
||||
trailTime = Mathf.Clamp(trailMgr.trail.time + rate,minTrailTime,maxTrailTime);
|
||||
trailMgr.trail.time = trailTime;
|
||||
// Debug.Log("Increasing trail of" + pname);
|
||||
}
|
||||
|
||||
public void DecreaseTrail(float rate)
|
||||
{
|
||||
trailTime = Mathf.Clamp(trailMgr.trail.time - rate,0,float.MaxValue);
|
||||
trailTime = Mathf.Clamp(trailMgr.trail.time - rate,minTrailTime,maxTrailTime);
|
||||
trailMgr.trail.time = trailTime;
|
||||
// Debug.Log("Decreasing trail of" + pname);
|
||||
}
|
||||
@@ -608,7 +613,7 @@ public class SpaceshipController : NetworkBehaviour
|
||||
Scores = 0;
|
||||
Kills = 0;
|
||||
startedTime = NetworkTime.time;
|
||||
trailTime = 1;
|
||||
DecreaseTrail(trailTime);
|
||||
trailMgr.trail.time = trailTime;
|
||||
RpcDie(killer);
|
||||
gameObject.SetActive(false);
|
||||
|
||||
Reference in New Issue
Block a user