void Awake(){
			instance = (PerkManager)target;
			
			GetPerk();
			
			EditorUtility.SetDirty(instance);
		}
示例#2
0
		public void Init(){
			if(init) return;
			
			init=true;
			
			if(instance!=null){
				Destroy(gameObject);
				return;
			}
			
			instance=this;
			
			//load your custom/saved purchasedIDList here if you are doing a persistent perk system
			
			List<Perk> dbList=PerkDB.Load();
			for(int i=0; i<dbList.Count; i++){
				if(!unavailableIDList.Contains(dbList[i].ID)){
					Perk perk=dbList[i].Clone();
					perkList.Add(perk);
				}
			}
			
			globalTowerModifier=new PerkTowerModifier();
			globalAbilityModifier=new PerkAbilityModifier();
			globalFPSWeaponModifier=new PerkFPSWeaponModifier();
			
			emptyTowerModifier=new PerkTowerModifier();
			emptyAbilityModifier=new PerkAbilityModifier();
			emptyFPSWeaponModifier=new PerkFPSWeaponModifier();
			
			int rscCount=ResourceManager.GetResourceCount();
			for(int i=0; i<rscCount; i++){
				rscRegen.Add(0);
				rscGain.Add(0);
				rscCreepKilledGain.Add(0);
				rscWaveClearedGain.Add(0);
				rscRscTowerGain.Add(0);
			}
			
			for(int i=0; i<perkList.Count; i++){
				if(purchasedIDList.Contains(perkList[i].ID)){
					if(perkList[i].type==_PerkType.NewTower || perkList[i].type==_PerkType.NewAbility || perkList[i].type==_PerkType.NewFPSWeapon){
						StartCoroutine(DelayPurchasePerk(perkList[i]));
					}
					else _PurchasePerk(perkList[i], false);	//dont use rsc since these are pre-purchased perk
				}
			}
			
			if(persistantProgress){
				transform.parent=null;
				DontDestroyOnLoad(gameObject);
			}
		}
示例#3
0
 public float GetCost()
 {
     return(cost * (1 - PerkManager.GetAbilityCost(ID)));
 }
示例#4
0
 private float GetPerkModCritChance()
 {
     return(IsTower() ? PerkManager.GetTowerCritChance(prefabID) : 0);
 }
示例#5
0
 private float GetPerkModHit()
 {
     return(IsTower() ? PerkManager.GetTowerHit(prefabID) : 0);
 }
示例#6
0
 private float GetPerkMulRange()
 {
     return(IsTower() ? PerkManager.GetTowerRange(prefabID) : 0);
 }
示例#7
0
 private float GetPerkMulClipSize()
 {
     return(IsTower() ? PerkManager.GetTowerClipSize(prefabID) : 0);
 }
示例#8
0
 private float GetPerkMulShieldStagger()
 {
     return(IsTower() ? PerkManager.GetTowerShieldStagger(prefabID) : 0);
 }
示例#9
0
 private InstantKill ModifyInstantKillWithPerkBonus(InstantKill instKill)
 {
     return(IsTower() ? PerkManager.ModifyInstantKillWithPerkBonus(instKill.Clone(), prefabID) : instKill);
 }
示例#10
0
 private float GetUpgradeCostMultiplier()
 {
     return(1 - PerkManager.GetTowerUpgradeCost(prefabID));
 }
示例#11
0
 private float GetBuildCostMultiplier()
 {
     return(1 - PerkManager.GetTowerBuildCost(prefabID));
 }
示例#12
0
 public float GetAOERadius()
 {
     return(aoeRadius * (1 + PerkManager.GetAbilityAOERadius(ID)));
 }
示例#13
0
        public override void Start()
        {
            base.Start();

            if (!PerkManager.IsEnabled())
            {
                thisObj.SetActive(false);
                return;
            }

            if (PerkManager.UseRscManagerForCost())
            {
                for (int i = 0; i < RscManager.GetResourceCount(); i++)
                {
                    if (i > 0)
                    {
                        costItemList.Add(new UIObject(UI.Clone(costItemList[0].rootObj)));
                    }
                    costItemList[i].Init();
                    costItemList[i].imgMain.sprite = RscManager.GetRscIcon(i);
                }
            }
            else
            {
                costItemList[0].Init();
                costItemList[0].imgMain.sprite = PerkDB.GetRscIcon();
            }

            if (customLayout)
            {
                List <Perk> perkList = PerkManager.GetPerkList();
                for (int i = 0; i < itemList.Count; i++)
                {
                    itemList[i].Init();
                    itemList[i].SetCallback(null, null, this.OnItem, null);

                    bool matched = false;
                    for (int n = 0; n < perkList.Count; n++)
                    {
                        if (itemList[i].linkedPerkPID == perkList[n].prefabID)
                        {
                            itemList[i].linkedPerkIdx  = n;    matched = true;
                            itemList[i].imgMain.sprite = perkList[n].icon;
                        }
                    }

                    if (!matched)
                    {
                        Debug.LogWarning("No perk with matching prefab found");
                        itemList[i].rootObj.SetActive(false);
                        continue;
                    }

                    itemList[i].UnparentConnector();
                    itemList[i].UnparentConnectorBase();
                }
            }
            else
            {
                List <Perk> perkList = PerkManager.GetPerkList();
                for (int i = 0; i < perkList.Count; i++)
                {
                    if (i > 0)
                    {
                        itemList.Add(UIPerkItem.Clone(itemList[0].rootObj, "Item" + (i)));
                    }
                    itemList[i].Init();
                    itemList[i].SetCallback(null, null, this.OnItem, null);
                    itemList[i].linkedPerkIdx  = i;
                    itemList[i].imgMain.sprite = perkList[i].icon;
                }
            }

            buttonPurchase.Init();
            buttonPurchase.SetCallback(null, null, this.OnPurchaseButton, null);

            if (UIControl.IsGameScene())
            {
                buttonClose.Init();
                buttonClose.SetCallback(null, null, this.OnCloseButton, null);
            }

            if (!UIControl.IsGameScene())
            {
                canvasGroup.alpha = 1;
                thisObj.SetActive(true);
                StartCoroutine(DelayUpdateList());
            }
            else
            {
                thisObj.SetActive(false);
            }

            OnItem(itemList[0].rootObj);
        }
示例#14
0
 public InstantKill GetInstantKill()
 {
     return(PerkManager.ModifyInstantKillWithPerkBonus(stats[currentActiveStat].instantKill.Clone(), prefabID, 1));
 }
示例#15
0
 public Dot GetDot()
 {
     return(PerkManager.ModifyDotWithPerkBonus(stats[currentActiveStat].dot.Clone(), prefabID, 1));
 }
示例#16
0
        }                                                                                                                                       //pass 1 to indicate this is for FPSWeapon

        public Slow GetSlow()
        {
            return(PerkManager.ModifySlowWithPerkBonus(stats[currentActiveStat].slow.Clone(), prefabID, 1));
        }
示例#17
0
 private float GetPerkMulShieldRegen()
 {
     return(IsTower() ? PerkManager.GetTowerShieldRegen(unitT.prefabID) : 0);
 }
示例#18
0
 private float GetPerkMulHPRegen()
 {
     return(IsTower() ? PerkManager.GetTowerHPRegen(prefabID) : 0);
 }
示例#19
0
 private float GetPerkMulDamage()
 {
     return(IsTower() ? PerkManager.GetTowerDamage(unitT.prefabID) : 0);
 }
示例#20
0
 private float GetPerkMulCooldown()
 {
     return(IsTower() ? PerkManager.GetTowerCD(prefabID) : 0);
 }
示例#21
0
 private float GetPerkModShieldBreak()
 {
     return(IsTower() ? PerkManager.GetTowerShieldBreakMultiplier(unitT.prefabID) : 0);
 }
示例#22
0
 private float GetPerkMulReloadDuration()
 {
     return(IsTower() ? PerkManager.GetTowerReloadDuration(prefabID) : 0);
 }
示例#23
0
 private float GetPerkMulHPStagger()
 {
     return(IsTower() ? PerkManager.GetTowerHPStagger(unitT.prefabID) : 0);
 }
示例#24
0
 private float GetPerkMulAOERadius()
 {
     return(IsTower() ? PerkManager.GetTowerAOERadius(prefabID) : 0);
 }
示例#25
0
 private float GetPerkModCritMul()
 {
     return(IsTower() ? PerkManager.GetTowerCritMultiplier(prefabID) : 0);
 }
示例#26
0
 private float GetPerkModDodge()
 {
     return(IsTower() ? PerkManager.GetTowerDodge(prefabID) : 0);
 }
示例#27
0
 private float GetPerkModShieldPierce()
 {
     return(IsTower() ? PerkManager.GetTowerShieldPierceMultiplier(prefabID) : 0);
 }
示例#28
0
 private Stun ModifyStunWithPerkBonus(Stun stun)
 {
     return(IsTower() ? PerkManager.ModifyStunWithPerkBonus(stun.Clone(), prefabID) : stun);
 }
示例#29
0
 private Slow ModifySlowWithPerkBonus(Slow slow)
 {
     return(IsTower() ? PerkManager.ModifySlowWithPerkBonus(slow.Clone(), prefabID) : slow);
 }
示例#30
0
 public float GetCooldown()
 {
     return(cooldown * (1 - PerkManager.GetAbilityCooldown(ID)));
 }
示例#31
0
 private Dot ModifyDotWithPerkBonus(Dot dot)
 {
     return(IsTower() ? PerkManager.ModifyDotWithPerkBonus(dot.Clone(), prefabID) : dot);
 }
示例#32
0
		void OnDestroy(){ 
			if(!persistantProgress) instance=null;
		}
示例#33
0
 public Stun GetStun()
 {
     return(PerkManager.ModifyStunWithPerkBonus(stats[currentActiveStat].stun.Clone(), prefabID, 1));
 }                                                                                                                                       //pass 1 to indicate this is for FPSWeapon