示例#1
0
        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("");
        }
示例#5
0
        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();
        }
示例#8
0
 void Awake()
 {
     instance = (AbilityManagerFaction)target;
 }
示例#9
0
        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;
        }