示例#1
0
    void Awake()
    {
        instance = this;

        turnID     = -1;
        turnIDLoop = 1;

        AbilityManagerTB.LoadUnitAbility();

        roundCounter = 0;
        battleEnded  = false;

        if (playerFactionID.Count == 0)
        {
            playerFactionID.Add(0);
        }
    }
示例#2
0
    void Hit()
    {
        if (type == _ShootObjectType.Effect)
        {
            if (hitEffect != null)
            {
                if (!attMissed)
                {
                    Instantiate(hitEffect, thisT.position, hitEffect.transform.rotation);
                }
                else if (showHitEffectWhenMissed)
                {
                    Instantiate(hitEffect, thisT.position, hitEffect.transform.rotation);
                }
            }
        }
        else
        {
            if (hitEffect != null)
            {
                if (!attMissed)
                {
                    Instantiate(hitEffect, thisT.position, hitEffect.transform.rotation);
                }
                else if (showHitEffectWhenMissed)
                {
                    Instantiate(hitEffect, thisT.position, hitEffect.transform.rotation);
                }
            }
        }

        if (attInstance != null)
        {
            if (attInstance.unitAbility != null)
            {
                UnitAbility uAB = attInstance.unitAbility;


                if (attInstance.unitAbility.shootMode == _AbilityShootMode.ShootToAll)
                {
                    if (uAB.targetType == _AbilityTargetType.AllUnits)
                    {
                        if (targetTile.unit != null)
                        {
                            StartCoroutine(targetTile.unit.ApplyAbilityDelay(uAB.Clone()));
                        }
                    }
                    if (uAB.targetType == _AbilityTargetType.Friendly)
                    {
                        if (targetTile.unit != null && targetTile.unit.factionID == uAB.factionID)
                        {
                            StartCoroutine(targetTile.unit.ApplyAbilityDelay(uAB.Clone()));
                        }
                    }
                    else if (uAB.targetType == _AbilityTargetType.Hostile)
                    {
                        if (targetTile.unit != null && targetTile.unit.factionID != uAB.factionID)
                        {
                            StartCoroutine(targetTile.unit.ApplyAbilityDelay(uAB.Clone()));
                        }
                    }
                    else if (uAB.targetType == _AbilityTargetType.AllTile)
                    {
                        targetTile.ApplyAbility(uAB.Clone());
                    }
                }
                else if (uAB.shootMode == _AbilityShootMode.ShootToCenter)
                {
                    foreach (Tile tile in targetTileList)
                    {
                        if (uAB.targetType == _AbilityTargetType.AllUnits)
                        {
                            if (tile.unit != null)
                            {
                                StartCoroutine(tile.unit.ApplyAbilityDelay(uAB.Clone()));
                            }
                        }
                        if (uAB.targetType == _AbilityTargetType.Friendly)
                        {
                            if (tile.unit != null && tile.unit.factionID == uAB.factionID)
                            {
                                StartCoroutine(tile.unit.ApplyAbilityDelay(uAB.Clone()));
                            }
                        }
                        else if (uAB.targetType == _AbilityTargetType.Hostile)
                        {
                            if (tile.unit != null && tile.unit.factionID != uAB.factionID)
                            {
                                StartCoroutine(tile.unit.ApplyAbilityDelay(uAB.Clone()));
                            }
                        }
                        else if (uAB.targetType == _AbilityTargetType.AllTile)
                        {
                            tile.ApplyAbility(uAB.Clone());
                        }
                    }
                }


                for (int i = 0; i < uAB.chainedAbilityIDList.Count; i++)
                {
                    UnitAbility unitAB = AbilityManagerTB.GetUnitAbility(uAB.chainedAbilityIDList[i]);
                    if (unitAB.requireTargetSelection)
                    {
                        unitAB.shootMode = _AbilityShootMode.None;
                        attInstance.srcUnit.SetActiveAbilityPendingTarget(unitAB);
                        GridManager.SetTargetTileSelectMode(abilityTargetTile, unitAB);
                        GridManager.OnHoverEnter(abilityTargetTile);
                        GridManager.Select(abilityTargetTile);
                    }
                    else
                    {
                        attInstance.srcUnit._ActivateAbility(unitAB);
                    }
                }

                attInstance.srcUnit.HitTarget(null, null);
            }
            else
            {
                attInstance.srcUnit.HitTarget(targetUnit, attInstance);
            }
        }

        Destroy(gameObject);
    }