public void Trigger(Unit unit) { if (!destroyTriggerEffect) { ObjectPoolManager.Spawn(triggerEffectObj, transform.position, Quaternion.identity); } else { ObjectPoolManager.Spawn(triggerEffectObj, transform.position, Quaternion.identity, triggerEffectDuration); } if (facAbilityIDList.Count > 0) { int facAbilityID = facAbilityIDList[Random.Range(0, facAbilityIDList.Count)]; FactionAbility ability = AbilityManagerFaction.GetFactionAbility(facAbilityID); if (ability != null) { if (!ability.requireTargetSelection) { AbilityManager.ApplyAbilityEffect(null, ability.Clone(), (int)ability.type); } else { AbilityManager.ApplyAbilityEffect(unit.tile, ability.Clone(), (int)ability.type); } } } unit.ApplyEffect(CloneEffect()); CollectibleManager.TriggerCollectible(this); Destroy(gameObject); }
private int currentButtonID = -1; //last touched button, for touch mode only public void OnAbilityButton(GameObject butObj, int pointerID = -1) { int ID = GetButtonID(butObj); if (UIMainControl.InTouchMode()) { if (currentButtonID >= 0) { buttonList[currentButtonID].imgHighlight.enabled = false; } if (currentButtonID != ID) { currentButtonID = ID; buttonList[ID].imgHighlight.enabled = true; OnHoverButton(butObj); return; } ClearTouchModeButton(); } string exception = AbilityManagerFaction.SelectAbility(ID); if (exception != "") { UIMessage.DisplayMessage(exception); } buttonList[ID].imgHighlight.enabled = true; }
void UpdateEnergyDisplay() { float energy = AbilityManagerFaction.GetFactionEnergy(FactionManager.GetSelectedFactionID()); float energyFull = AbilityManagerFaction.GetFactionEnergyFull(FactionManager.GetSelectedFactionID()); lbEnergy.text = energy + "/" + energyFull; sliderEnergy.value = energy / energyFull; }
public virtual string IsAvailable() { if (AbilityManagerFaction.GetFactionEnergy(factionID) < GetCost()) { return("Insufficient AP"); } if (!currentCD.Due()) { return(name + " Ability on cooldown "); //+currentCD.duration; } int limit = GetUseLimit(); if (limit >= 1 && useCount >= limit) { return("Ability is used up"); } return(""); }
public string _PurchasePerk(Perk perk, bool useCurrency = true) { string text = perk.Purchase(useCurrency); if (text != "") { return(text); } SavePerkProgress(); TBTK.OnPerkPurchased(perk); //process the prereq for other perk for (int i = 0; i < perkList.Count; i++) { Perk perkTemp = perkList[i]; if (perkTemp.purchased || perkTemp.prereq.Count == 0) { continue; } perkTemp.prereq.Remove(perk.prefabID); } perkPoint += 1; TBTK.OnPerkPoint(perkPoint); if (perk.type == _PerkType.NewUnitAbility) { if (perk.addAbilityToAllUnit) { AbilityManagerUnit.PerkUnlockNewAbility(null, perk.newUnitAbilityID, perk.subUnitAbilityID); globalUnitModifier.abilityIDList.Add(perk.newUnitAbilityID); globalUnitModifier.abilityXIDList.Add(perk.subUnitAbilityID); } else { AbilityManagerUnit.PerkUnlockNewAbility(perk.newABUnitIDList, perk.newUnitAbilityID, perk.subUnitAbilityID); for (int i = 0; i < perk.newABUnitIDList.Count; i++) { int index = UnitModifierExist(perk.newABUnitIDList[i]); if (index == -1) { PerkUnitModifier unitModifier = new PerkUnitModifier(); unitModifier.prefabID = perk.newABUnitIDList[i]; unitModifierList.Add(unitModifier); index = unitModifierList.Count - 1; } unitModifierList[index].abilityIDList.Add(perk.newUnitAbilityID); unitModifierList[index].abilityXIDList.Add(perk.subUnitAbilityID); } } } else if (perk.type == _PerkType.NewFactionAbility) { AbilityManagerFaction.PerkUnlockNewAbility(perk.newFacAbilityID, perk.subFacAbilityID); factionAbilityIDList.Add(perk.newFacAbilityID); factionAbilityXIDList.Add(perk.subFacAbilityID); } else if (perk.type == _PerkType.Unit) { for (int i = 0; i < perk.unitIDList.Count; i++) { int index = UnitModifierExist(perk.unitIDList[i]); if (index == -1) { PerkUnitModifier unitModifier = new PerkUnitModifier(); unitModifier.prefabID = perk.unitIDList[i]; unitModifierList.Add(unitModifier); index = unitModifierList.Count - 1; } ModifyUnitModifierInList(index, perk); } } else if (perk.type == _PerkType.Unit_All) { ModifyUnitModifier(globalUnitModifier, perk); } else if (perk.type == _PerkType.UnitAbility) { for (int i = 0; i < perk.unitAbilityIDList.Count; i++) { int index = UnitAbilityModifierExist(perk.unitAbilityIDList[i]); if (index == -1) { PerkAbilityModifier abilityModifier = new PerkAbilityModifier(); abilityModifier.prefabID = perk.unitAbilityIDList[i]; unitAbilityModifierList.Add(abilityModifier); index = unitAbilityModifierList.Count - 1; } ModifyUnitAbilityModifierInList(index, perk); } } else if (perk.type == _PerkType.UnitAbility_All) { ModifyUnitAbilityModifier(globalUnitAbilityModifier, perk); } else if (perk.type == _PerkType.FactionAbility) { for (int i = 0; i < perk.facAbilityIDList.Count; i++) { int index = FactionAbilityModifierExist(perk.facAbilityIDList[i]); if (index == -1) { PerkAbilityModifier abilityModifier = new PerkAbilityModifier(); abilityModifier.prefabID = perk.facAbilityIDList[i]; factionAbilityModifierList.Add(abilityModifier); index = factionAbilityModifierList.Count - 1; } ModifyFactionAbilityModifierInList(index, perk); } } else if (perk.type == _PerkType.FactionAbility_All) { ModifyFactionAbilityModifier(globalFactionAbilityModifier, perk); } return(""); }
//load up the ability and setup the energy public void Init(int facID, bool startWithFullEnergy = false, bool isPlayerFaction = true) { factionID = facID; if (startWithFullEnergy) { energy = energyFull; } List <FactionAbility> dbList = AbilityManagerFaction.GetAbilityDBList(); abilityList = new List <FactionAbility>(); for (int i = 0; i < dbList.Count; i++) { if (dbList[i].onlyAvailableViaPerk) { continue; } if (availableIDList.Contains(dbList[i].prefabID)) { abilityList.Add(dbList[i].Clone()); } //if(!unavailableIDList.Contains(dbList[i].prefabID)) abilityList.Add(dbList[i].Clone()); } //add ability unlocked via perk (PerkManager is carried forth from last level) if (isPlayerFaction) { List <int> perkAbilityXIDList = PerkManager.GetFactionAbilityXIDList(); for (int n = 0; n < perkAbilityXIDList.Count; n++) { for (int i = 0; i < abilityList.Count; i++) { if (perkAbilityXIDList[n] == abilityList[i].prefabID) { abilityList.RemoveAt(i); i -= 1; } } } List <int> perkAbilityIDList = PerkManager.GetFactionAbilityIDList(); for (int n = 0; n < perkAbilityIDList.Count; n++) { for (int i = 0; i < dbList.Count; i++) { if (dbList[i].prefabID == perkAbilityIDList[n]) { abilityList.Add(dbList[i].Clone()); break; } } } } for (int i = 0; i < abilityList.Count; i++) { abilityList[i].Init(factionID); } }
public void Init() { instance = this; facAbilityDBList = FactionAbilityDB.Load(); }
void Awake() { instance = (AbilityManagerFaction)target; }
void Awake() { instance = this; TBData.ClearEndData(); SettingDB settingDB = InitSetting(); if (enableCover) { CoverSystem.SetFullCoverDodgeBonus(fullCoverBonus); CoverSystem.SetHalfCoverDodgeBonus(halfCoverBonus); CoverSystem.SetExposedCritChanceBonus(exposedCritBonus); } //get the instance of each component and initiate them, the order in which these component matters PerkManager perkManager = (PerkManager)FindObjectOfType(typeof(PerkManager)); if (perkManager != null) { perkManager.Init(); } AbilityManagerUnit abManagerUnit = (AbilityManagerUnit)FindObjectOfType(typeof(AbilityManagerUnit)); if (abManagerUnit != null) { abManagerUnit.Init(); } AbilityManagerFaction abManagerFac = (AbilityManagerFaction)FindObjectOfType(typeof(AbilityManagerFaction)); if (abManagerFac != null) { abManagerFac.Init(); } TurnControl turnControl = (TurnControl)FindObjectOfType(typeof(TurnControl)); turnControl.Init(); if (settingDB != null) { turnControl.turnMode = settingDB.turnMode; turnControl.moveOrder = settingDB.moveOrder; } GridManager gridManager = (GridManager)FindObjectOfType(typeof(GridManager)); if (settingDB != null) { gridManager.generateGridOnStart = settingDB.generateGridOnStart; } gridManager.Init(); FactionManager factionManager = (FactionManager)FindObjectOfType(typeof(FactionManager)); if (settingDB != null) { factionManager.generateUnitOnStart = settingDB.generateUnitOnStart; } factionManager.Init(); CollectibleManager collectibleManager = (CollectibleManager)FindObjectOfType(typeof(CollectibleManager)); if (settingDB != null) { collectibleManager.generateCollectibleOnStart = settingDB.generateCollectibleOnStart; } collectibleManager.Init(); GridManager.SetupGridForFogOfWar(); OverlayManager overlayManager = (OverlayManager)FindObjectOfType(typeof(OverlayManager)); overlayManager.Init(); defaultShootObject = Resources.Load("ScenePrefab/DefaultShootObject", typeof(GameObject)) as GameObject; gamePhase = _GamePhase.Initialization; }