bool IsPerkTypeUsesRsc(_PerkType type) { if (type == _PerkType.RscCap) { return(true); } else if (type == _PerkType.RscRegen) { return(true); } else if (type == _PerkType.RscGain) { return(true); } else if (type == _PerkType.RscCreepKilledGain) { return(true); } else if (type == _PerkType.RscWaveClearedGain) { return(true); } else if (type == _PerkType.RscResourceTowerGain) { return(true); } return(false); }
bool IsPerkTypeUsesUnitStats(_PerkType type) { if (type == _PerkType.Tower) { return(true); } else if (type == _PerkType.TowerSpecific) { return(true); } else if (type == _PerkType.Ability) { return(true); } else if (type == _PerkType.AbilitySpecific) { return(true); } return(false); }
/// <summary> /// /// </summary> /// <param name="startX"></param> /// <param name="startY"></param> /// <param name="perk"></param> /// <param name="level"></param> /// <returns></returns> Vector2 DrawLevelDetail(float startX, float startY, Perk perk, int level) { _PerkType perkType = perk.type; // cost cont = new GUIContent("Upgrage Cost:", "The resource required to build/upgrade to this level"); EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont); perk.perkLevel[level].cost = EditorGUI.IntField(new Rect(startX + 100, startY, 85, height), perk.perkLevel[level].cost); // stats level startX += 10; if (perkType == _PerkType.GainLife) { GUIContent cont1 = new GUIContent(" - Min value:", "Minimum value"); GUIContent cont2 = new GUIContent(" - Max value:", "Maximum value"); DrawValueMinMax(startX, startY, perk, level, cont1, cont2); startY += spaceY; } else if (perkType == _PerkType.LifeCap) { cont = new GUIContent(" - Increase Value:", "value used to modify the existing maximum life capacity"); DrawValue(startX, startY, perk, level, cont); } else if (perkType == _PerkType.LifeRegen) { cont = new GUIContent(" - Increase Value:", "value used to modify the existing life regeneration rate"); DrawValue(startX, startY, perk, level, cont); } else if (perkType == _PerkType.LifeWaveClearedBonus) { GUIContent cont1 = new GUIContent(" - Min value:", "Minimum value"); GUIContent cont2 = new GUIContent(" - Max value:", "Maximum value"); DrawValueMinMax(startX, startY, perk, level, cont1, cont2); startY += spaceY; } else if (IsPerkTypeUsesRsc(perkType)) { if (perkType == _PerkType.RscCap) { cont = new GUIContent(" - Gain:", "The resource to be gain upon purchasing this perk"); } else if (perkType == _PerkType.RscRegen) { cont = new GUIContent(" - Rate modifier:", "The resource to be gain upon purchasing this perk"); } else if (perkType == _PerkType.RscGain) { cont = new GUIContent(" - Gain multiplier:", "The resource to be gain upon purchasing this perk"); } else if (perkType == _PerkType.RscCreepKilledGain) { cont = new GUIContent(" - Gain multiplier:", "The resource to be gain upon purchasing this perk"); } else if (perkType == _PerkType.RscWaveClearedGain) { cont = new GUIContent(" - Gain multiplier:", "The resource to be gain upon purchasing this perk"); } else if (perkType == _PerkType.RscResourceTowerGain) { cont = new GUIContent(" - Gain multiplier:", "The resource to be gain upon purchasing this perk"); } //cont=new GUIContent("Gain:", "The resource to be gain upon purchasing this perk"); EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont); startY += spaceY; float cachedX = startX; EditorUtilities.DrawSprite(new Rect(startX + 15, startY - 1, 20, 20), EditorDBManager.iconRsc); perk.perkLevel[level].valueRsc = EditorGUI.FloatField(new Rect(startX + 35, startY, 40, height), perk.perkLevel[level].valueRsc); startX = cachedX; startY += 5; } //~ if(IsPerkTypeUsesUnitStats(perkType)){ if (perkType == _PerkType.Tower || perkType == _PerkType.TowerSpecific) { Vector2 v2; v2 = DrawTowerStat(startX, startY, perk, level); startY = v2.y; } if (perkType == _PerkType.Ability || perkType == _PerkType.AbilitySpecific) { Vector2 v2 = DrawAbilityStat(startX, startY, perk, level); startY = v2.y; } else if (perkType == _PerkType.EnergyRegen) { cont = new GUIContent(" - Increase Value:", "value used to modify the existing energy regeneration rate"); DrawValue(startX, startY, perk, level, cont); } else if (perkType == _PerkType.EnergyIncreaseCap) { cont = new GUIContent(" - Increase Value:", "value used to modify the existing maximum energy capacity"); DrawValue(startX, startY, perk, level, cont); } else if (perkType == _PerkType.EnergyCreepKilledBonus) { GUIContent cont1 = new GUIContent(" - Min value:", "Minimum value"); GUIContent cont2 = new GUIContent(" - Max value:", "Maximum value"); DrawValueMinMax(startX, startY, perk, level, cont1, cont2); startY += spaceY; } else if (perkType == _PerkType.EnergyWaveClearedBonus) { GUIContent cont1 = new GUIContent(" - Min value:", "Minimum value"); GUIContent cont2 = new GUIContent(" - Max value:", "Maximum value"); DrawValueMinMax(startX, startY, perk, level, cont1, cont2); startY += spaceY; } // des level startY += spaceY; GUIStyle style = new GUIStyle("TextArea"); style.wordWrap = true; cont = new GUIContent("Level Description:", "Level Description"); EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont); perk.perkLevel[level].desp = EditorGUI.TextArea(new Rect(startX, startY + spaceY - 3, 175, 75), perk.perkLevel[level].desp, style); startY += 75; // return(new Vector2(startX, startY)); }
Vector2 DrawPerkType(float startX, float startY, Perk perk) { // type int type = (int)perk.type; cont = new GUIContent("Perk Type:", "What the perk does"); EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont); contL = new GUIContent[perkTypeLabel.Length]; for (int i = 0; i < contL.Length; i++) { contL[i] = new GUIContent(perkTypeLabel[i], perkTypeTooltip[i]); } type = EditorGUI.Popup(new Rect(startX + spaceX - 20, startY, width, 15), new GUIContent(""), type, contL); perk.type = (_PerkType)type; _PerkType perkType = perk.type; Vector2 v2; if (perkType == _PerkType.TowerSpecific) { v2 = DrawItemIDTower(startX, startY, perk, 3); startY = v2.y; } if (perkType == _PerkType.AbilitySpecific) { DrawItemIDAbility(startX, startY, perk); startY += spaceY; } // level perk.level = Mathf.Clamp(perk.level, 0, perk.perkLevel.Count - 1); int level = perk.level; cont = new GUIContent("Perk Level:", "Level of perk"); EditorGUI.LabelField(new Rect(startX, startY += spaceY, width, height), cont); contL = new GUIContent[perk.perkLevel.Count]; for (int i = 0; i < contL.Length; i++) { contL[i] = new GUIContent((i + 1).ToString(), ""); } level = EditorGUI.Popup(new Rect(startX + spaceX - 20, startY, 50, 15), new GUIContent(""), level, contL); perk.level = level; if (GUI.Button(new Rect(startX + spaceX + 40, startY, 40, 15), "-1")) { if (perk.perkLevel.Count > 1) { perk.perkLevel.RemoveAt(perk.perkLevel.Count - 1); } } if (GUI.Button(new Rect(startX + spaceX + 90, startY, 40, 15), "+1")) { perk.perkLevel.Add(perk.perkLevel[perk.perkLevel.Count - 1].Clone()); } // Detail level startY += spaceY * 2; minimiseStat = EditorGUI.Foldout(new Rect(startX, startY, width, height), minimiseStat, "Show Stats"); float offsetDetail = 220; float maxHeight = startY; float maxWidth = startX + offsetDetail * (perk.perkLevel.Count - 1); if (!minimiseStat) { startY += spaceY; startX += 15; for (int i = 0; i < perk.perkLevel.Count; i++) { EditorGUI.LabelField(new Rect(startX + offsetDetail * i, startY, width, height), "Level " + (i + 1) + " Stats"); float _height = DrawLevelDetail(startX + offsetDetail * i, startY, perk, i).y; if (_height > maxHeight) { maxHeight = _height; } } } return(new Vector2(maxWidth, maxHeight)); }
bool IsPerkTypeUsesUnitStats(_PerkType type){ if(type==_PerkType.Tower) return true; else if(type==_PerkType.TowerSpecific) return true; else if(type==_PerkType.Ability) return true; else if(type==_PerkType.AbilitySpecific) return true; else if(type==_PerkType.FPSWeapon) return true; else if(type==_PerkType.FPSWeaponSpecific) return true; return false; }
bool IsPerkTypeUsesRsc(_PerkType type){ if(type==_PerkType.GainRsc) return true; else if(type==_PerkType.RscRegen) return true; else if(type==_PerkType.RscGain) return true; else if(type==_PerkType.RscCreepKilledGain) return true; else if(type==_PerkType.RscWaveClearedGain) return true; else if(type==_PerkType.RscResourceTowerGain) return true; return false; }