public string GetDespUnavailable() { if (status == _Status.InsufficientPP) { return("available after " + minPerkCount + " perks has been purchased"); } if (status == _Status.InsufficientWave) { return("available after wave " + minWave); } if (status == _Status.InsufficientLvl) { return("available in later game"); } if (status == _Status.PrereqNoMet) { string text = "require "; for (int i = 0; i < prereq.Count; i++) { int idx = PerkDB.GetPrefabIndex(prereq[i]); text += (i > 0 ? ", " : "") + PerkDB.GetItem(idx).name; } return(text); } return(""); }
protected float DrawEffectSetting(float startX, float startY, Perk item) { //TDE.Label(startX, startY, spaceX*2, height, "Perk Effect Attribute", "", TDE.headerS); startY+=spaceY; string text = "Perk Effect Attribute "; //+ (!foldStats ? "(show)" : "(hide)"); foldStats = EditorGUI.Foldout(new Rect(startX, startY += spaceY, spaceX, height), foldStats, text, TDE.foldoutS); if (!foldStats) { return(startY + spaceY); } startY += spaceY; startX += 12; if (item.type == _PerkType.NewTower) { TDE.Label(startX, startY, width, height, "New Tower:", "The new tower to be added to game"); item.newTowerPID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), item.newTowerPID, TowerDB.label); TDE.Label(startX, startY += spaceY, width, height, " - Replacing:", "OPTIONAL - exiting tower that will be replaced"); item.replaceTowerPID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), item.replaceTowerPID, TowerDB.label); } else if (item.type == _PerkType.NewAbility) { TDE.Label(startX, startY, width, height, "New Ability:", "The new ability to be added to game"); item.newAbilityPID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), item.newAbilityPID, AbilityDB.label); TDE.Label(startX, startY += spaceY, width, height, " - Replacing:", "OPTIONAL - exiting ability that will be replaced"); item.replaceAbilityPID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), item.replaceAbilityPID, AbilityDB.label); } else if (item.UseGainValue() || item.UseGainList()) { startY = DrawEffectTypeSetting(startX, startY, item); string txtType = item.IsMultiplier() ? "Multiplier:" : "Modifier:"; if (!item.SupportModNMul()) { txtType = "Gain:"; } if (item.UseGainValue()) { string txt = item.UseGainList() ? "Global " : ""; TDE.Label(startX, startY, width, height, txt + txtType); //"Gain Value:", ""); item.gain = EditorGUI.FloatField(new Rect(startX + spaceX, startY, widthS, height), item.gain); startY += spaceY; } if (item.UseGainList()) { if (item.gainList.Count < RscDB.GetCount()) { item.gainList.Add(0); } if (item.gainList.Count > RscDB.GetCount()) { item.gainList.Remove(item.gainList.Count - 1); } for (int i = 0; i < item.gainList.Count; i++) { TDE.DrawSprite(new Rect(startX, startY, height, height), RscDB.GetIcon(i)); TDE.Label(startX + height, startY, width - height, height, " - " + RscDB.GetName(i)); //" - "+txtType, ""); item.gainList[i] = EditorGUI.FloatField(new Rect(startX + spaceX, startY, widthS, height), item.gainList[i]); if (i < item.gainList.Count - 1) { startY += spaceY; } } } else { startY -= spaceY; } } else if (item.UseStats()) { string textItem = ""; if (item.type == _PerkType.ModifyTower) { textItem = "towers"; } if (item.type == _PerkType.ModifyAbility) { textItem = "abilities"; } if (item.type == _PerkType.ModifyEffect) { textItem = "effects"; } TDE.Label(startX, startY, width, height, "Apply To All:", "Check to apply to all " + textItem); item.applyToAll = EditorGUI.Toggle(new Rect(startX + spaceX, startY, widthS, height), item.applyToAll); if (!item.applyToAll) { startY += spaceY; if (item.type == _PerkType.ModifyTower) { TDE.Label(startX, startY, width, height, "Target Tower:", "The target towers which this perk should be applied to"); for (int i = 0; i < item.towerPIDList.Count; i++) { if (item.towerPIDList[i] < 0) { item.towerPIDList.RemoveAt(i); i -= 1; continue; } int index = TowerDB.GetPrefabIndex(item.towerPIDList[i]); index = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), index, TowerDB.label); int prefabID = TowerDB.GetItem(index).prefabID; if (prefabID != item.prefabID && !item.towerPIDList.Contains(prefabID)) { item.towerPIDList[i] = prefabID; } if (GUI.Button(new Rect(startX + spaceX + width + 10, startY, height, height), "-")) { item.towerPIDList.RemoveAt(i); i -= 1; } startY += spaceY; } int newIdx = -1; newIdx = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), newIdx, TowerDB.label); if (newIdx >= 0 && !item.towerPIDList.Contains(TowerDB.GetItem(newIdx).prefabID)) { item.towerPIDList.Add(TowerDB.GetItem(newIdx).prefabID); } } if (item.type == _PerkType.ModifyAbility) { TDE.Label(startX, startY, width, height, "Target Ability:", "The target abilities which this perk should be applied to"); for (int i = 0; i < item.abilityPIDList.Count; i++) { int index = AbilityDB.GetPrefabIndex(item.abilityPIDList[i]); index = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), index, AbilityDB.label); int prefabID = AbilityDB.GetItem(index).prefabID; if (prefabID != item.prefabID && !item.abilityPIDList.Contains(prefabID)) { item.abilityPIDList[i] = prefabID; } if (GUI.Button(new Rect(startX + spaceX + width + 10, startY, height, height), "-")) { item.abilityPIDList.RemoveAt(i); i -= 1; } startY += spaceY; } int newIdx = -1; newIdx = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), newIdx, AbilityDB.label); if (newIdx >= 0 && !item.abilityPIDList.Contains(AbilityDB.GetItem(newIdx).prefabID)) { item.abilityPIDList.Add(AbilityDB.GetItem(newIdx).prefabID); } } if (item.type == _PerkType.ModifyEffect) { TDE.Label(startX, startY, width, height, "Target Effect:", "The target effects which this perk should be applied to"); for (int i = 0; i < item.effectPIDList.Count; i++) { int index = EffectDB.GetPrefabIndex(item.effectPIDList[i]); index = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), index, EffectDB.label); int prefabID = EffectDB.GetItem(index).prefabID; if (prefabID != item.prefabID && !item.effectPIDList.Contains(prefabID)) { item.effectPIDList[i] = prefabID; } if (GUI.Button(new Rect(startX + spaceX + width + 10, startY, height, height), "-")) { item.effectPIDList.RemoveAt(i); i -= 1; } startY += spaceY; } int newIdx = -1; newIdx = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), newIdx, EffectDB.label); if (newIdx >= 0 && !item.effectPIDList.Contains(EffectDB.GetItem(newIdx).prefabID)) { item.effectPIDList.Add(EffectDB.GetItem(newIdx).prefabID); } } } startY += spaceY + 10; startY = DrawEffectTypeSetting(startX, startY, item) - spaceY; startY += spaceY; _EType eType = _EType.PerkT; if (item.type == _PerkType.ModifyAbility) { eType = _EType.PerkA; TDE.Label(startX, startY, width, height, "Use Limit:", "Modify the use limit of the ability"); if (item.effType == Perk._EffType.Multiplier) { TDE.Label(startX + spaceX, startY, widthS, height, "-"); } else { item.gain = EditorGUI.FloatField(new Rect(startX + spaceX, startY, widthS, height), item.gain); } TDE.Label(startX, startY += spaceY, width, height, "Cost:", "Modify/Multiply the activation cost of the ability"); item.costMul = EditorGUI.FloatField(new Rect(startX + spaceX, startY, widthS, height), item.costMul); startY += spaceY; } else if (item.type == _PerkType.ModifyEffect) { eType = _EType.PerkE; TDE.Label(startX, startY, width, height, "Duration:", "Modify the duration of the effect"); item.effect.duration = EditorGUI.FloatField(new Rect(startX + spaceX, startY, widthS, height), item.effect.duration); TDE.Label(startX, startY += spaceY + 5, width, height, "Stun:", "Check to enable the effec to stun. This will only override the default value if it's set to true"); item.effect.stun = EditorGUI.Toggle(new Rect(startX + spaceX, startY, height, height), item.effect.stun); startY += spaceY; } startY = DrawStats(startX - 12, startY, item.effect.stats, eType) - spaceY; } else if (item.IsForPerk()) { TDE.Label(startX, startY, width, height, "Apply To All:", "Check to apply to all perk"); item.applyToAll = EditorGUI.Toggle(new Rect(startX + spaceX, startY, widthS, height), item.applyToAll); if (!item.applyToAll) { TDE.Label(startX, startY += spaceY, width, height, "Target Perk:", "The target perk which this perk affect should be applied to"); for (int i = 0; i < item.perkPIDList.Count; i++) { int index = PerkDB.GetPrefabIndex(item.perkPIDList[i]); index = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), index, PerkDB.label); int prefabID = PerkDB.GetItem(index).prefabID; if (prefabID != item.prefabID && !item.perkPIDList.Contains(prefabID)) { item.perkPIDList[i] = prefabID; } if (GUI.Button(new Rect(startX + spaceX + width + 10, startY, height, height), "-")) { item.perkPIDList.RemoveAt(i); i -= 1; } startY += spaceY; } int newID = -1; newID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), newID, PerkDB.label); if (newID >= 0 && !item.perkPIDList.Contains(newID)) { item.perkPIDList.Add(newID); } startY += spaceY + 10; } TDE.Label(startX, startY, width, height, "Perk Rsc Multiplier:", "Modify/Multiply the purchase cost of the ability"); item.costMul = EditorGUI.FloatField(new Rect(startX + spaceX + 25, startY, widthS, height), item.costMul); if (item.gainList.Count < RscDB.GetCount()) { item.gainList.Add(0); } if (item.gainList.Count > RscDB.GetCount()) { item.gainList.Remove(item.gainList.Count - 1); } for (int i = 0; i < item.gainList.Count; i++) { TDE.DrawSprite(new Rect(startX, startY += spaceY, height, height), RscDB.GetIcon(i)); TDE.Label(startX + height, startY, width - height, height, " - " + RscDB.GetName(i) + ":", ""); item.gainList[i] = EditorGUI.FloatField(new Rect(startX + spaceX + 25, startY, widthS, height), item.gainList[i]); } } return(startY + spaceY); }
protected float DrawBasicSetting(float startX, float startY, Perk item) { //TDE.Label(startX, startY+=spaceY, width, height, "General Setting", "", TDE.headerS); string textF = "General Setting "; //+(!foldBasicSetting ? "(show)" : "(hide)"); foldBasicSetting = EditorGUI.Foldout(new Rect(startX, startY += spaceY, spaceX, height), foldBasicSetting, textF, TDE.foldoutS); if (!foldBasicSetting) { return(startY); } startX += 12; //~ TDE.Label(startX, startY+=spaceY, width, height, "Gained on Wave:", ""); CheckColor(item.autoUnlockOnWave, -1); //~ item.autoUnlockOnWave=EditorGUI.IntField(new Rect(startX+spaceX, startY, widthS, height), item.autoUnlockOnWave); ResetColor(); //~ startY+=10; TDE.Label(startX, startY += spaceY, width, height, "Cost:", "The cost of PerkManager resource required for the perk\nUsed when 'Use RscManager For Cost' is disabled in PerkManager"); item.cost = EditorGUI.IntField(new Rect(startX + spaceX, startY, widthS, height), item.cost); TDE.Label(startX, startY += spaceY, width, height, "Cost (Rsc):", "The cost of RscManager resource required for the perk\nUsed when 'Use RscManager For Cost' is enabled in PerkManager"); //~ while(item.costRsc.Count<RscDB.GetCount()) item.costRsc.Add(0); //~ while(item.costRsc.Count>RscDB.GetCount()) item.costRsc.RemoveAt(item.costRsc.Count-1); RscManager.MatchRscList(item.costRsc, 0); float cachedX = startX; for (int i = 0; i < RscDB.GetCount(); i++) { if (i > 0 && i % 3 == 0) { startX = cachedX; startY += spaceY; } if (i > 0) { startX += widthS + 2; } TDE.DrawSprite(new Rect(startX + spaceX, startY, height, height), RscDB.GetIcon(i), RscDB.GetName(i)); item.costRsc[i] = EditorGUI.FloatField(new Rect(startX + spaceX + height, startY, widthS - height, height), item.costRsc[i]); } startX = cachedX; //TDE.Label(startX, startY+=spaceY, width, height, "Repeatabe:", ""); //item.repeatable=EditorGUI.Toggle(new Rect(startX+spaceX, startY, widthS, height), item.repeatable); startY += 10; TDE.Label(startX, startY += spaceY, width, height, "AutoUnlockOnWave:", "If given a value, the perk will automatically be purchased for the player upon completing the specified wave"); CheckColor(item.autoUnlockOnWave, 0); item.autoUnlockOnWave = EditorGUI.IntField(new Rect(startX + spaceX, startY, widthS, height), item.autoUnlockOnWave); ResetColor(); startY += 10; TDE.Label(startX, startY += spaceY, width, height, "Min Level:", "The minimum level required before the perk becomes available\n\nThis is value of 'Level ID' in GameControl"); CheckColor(item.minLevel, 0); item.minLevel = EditorGUI.IntField(new Rect(startX + spaceX, startY, widthS, height), item.minLevel); ResetColor(); TDE.Label(startX, startY += spaceY, width, height, "Min Wave:", "The minimum wave required before the perk becomes available"); CheckColor(item.minWave, 0); item.minWave = EditorGUI.IntField(new Rect(startX + spaceX, startY, widthS, height), item.minWave); ResetColor(); TDE.Label(startX, startY += spaceY, width, height, "Min Perk Count:", "The minimum number of perk purchased required before the perk becomes available"); CheckColor(item.minPerkCount, 0); item.minPerkCount = EditorGUI.IntField(new Rect(startX + spaceX, startY, widthS, height), item.minPerkCount); ResetColor(); TDE.Label(startX, startY += spaceY, width, height, "Prereq Perk:", "Perk(s) required to be purchased before the perk becomes available"); for (int i = 0; i < item.prereq.Count; i++) { TDE.Label(startX + spaceX - 20, startY, widthS, height, "-"); int index = PerkDB.GetPrefabIndex(item.prereq[i]); if (index < 0) { item.prereq.RemoveAt(i); i -= 1; continue; } index = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), index, PerkDB.label); int prefabID = PerkDB.GetItem(index).prefabID; if (prefabID != item.prefabID && !item.prereq.Contains(prefabID)) { item.prereq[i] = prefabID; } if (GUI.Button(new Rect(startX + spaceX + width + 10, startY, height, height), "-")) { item.prereq.RemoveAt(i); i -= 1; } startY += spaceY; } int newID = -1; CheckColor(item.prereq.Count, 0); newID = EditorGUI.Popup(new Rect(startX + spaceX, startY, width, height), newID, PerkDB.label); if (newID >= 0 && !item.prereq.Contains(newID)) { item.prereq.Add(newID); } startY += 10; ResetColor(); return(startY); }