예제 #1
0
 public override void AddGoldOnWaveEnd(RunTimeTroopData troopData)
 {
     if (!troopData.isEnemy)
     {
         AddGold(troopData.valDropMoney);
     }
 }
예제 #2
0
    private void Awake()
    {
        construcionsList = new PriorityList <Transform>();

        foreach (GameObject tower in GameObject.FindGameObjectsWithTag("Tower"))
        {
            int towerOrder = tower.GetComponent <TowerAttackOrder>().orderInAttack;

            PriorityPair <Transform> towerPair = new PriorityPair <Transform>(tower.transform, towerOrder);

            construcionsList.Add(towerPair);
        }

        GameObject core           = GameObject.FindGameObjectWithTag("Core");
        int        lastTowerOrder = 0;

        if (construcionsList.GetFirst() != null)
        {
            lastTowerOrder = construcionsList.GetFirst().Priority;
        }

        PriorityPair <Transform> corePair = new PriorityPair <Transform>(core.transform, lastTowerOrder + 1);

        construcionsList.Add(corePair);

        troopData      = GetComponent <RunTimeTroopData>(); //TO:DO adapt to use Troop class with RunTimeData data
        movementAction = GetComponent <TroopMovementActions>();
        attackAction   = GetComponent <TroopAttackActions>();
    }
예제 #3
0
 public override void AddGold(RunTimeTroopData troopData)
 {
     if (troopData.isEnemy)
     {
         AddGold(troopData.valDropMoney);
         playerGoldChangeEvent.Raise(currentGold);
     }
 }
예제 #4
0
    public RangeAttack(IsometricCharacterAnimator isometricCharacterAnimations, RunTimeTroopData troopData,
                       GameObject projectilePrefab, Transform shotingPoint) : base(isometricCharacterAnimations, troopData)
    {
        this.troopData       = troopData;
        this.troopAnimations = isometricCharacterAnimations;

        this.projectilePrefab = projectilePrefab;
        this.shotingPoint     = shotingPoint;
    }
예제 #5
0
    void Start()
    {
        troopRigidBody2d = GetComponent <Rigidbody2D>();
        troopData        = GetComponent <RunTimeTroopData>();
        troopAnimations  = GetComponentInChildren <IsometricCharacterAnimator>();

        actualTarget = transform.position;
        prevTarget   = transform.position;
    }
예제 #6
0
    private void HandleTroopDeath(RunTimeTroopData troop)
    {
        if (troop.isEnemy)
        {
            TroopsKilledScore += troop.valScore;
        }

        TotalScore = CalculeTotalScore();
    }
예제 #7
0
    void Start()
    {
        troopData       = GetComponent <RunTimeTroopData>();
        troopAnimations = GetComponentInChildren <IsometricCharacterAnimator>();

        if (troopData.attackAtDistance)
        {
            attackType = new RangeAttack(troopAnimations, troopData, projectilePrefab, shotingPoint);
        }
        else
        {
            attackType = new PhysicalAttack(troopAnimations, troopData);
        }
    }
예제 #8
0
    private void OnTroopAttackingTower(RunTimeTroopData troop)
    {
        if (troopData.troopObjective == PhaseObjectives.DEFEND)
        {
            Transform enemyAttackingTower = troop.GameObject.transform;

            if (!closeTargets.Contains(enemyAttackingTower))
            {
                closeTargets.Add(enemyAttackingTower);
            }

            if (!attackAction.IsAttacking && ActualTarget == null)
            {
                ActualTarget = PickAnTarget();
            }
        }
    }
예제 #9
0
    private int CountTroopsSurvivedScore()
    {
        int score = 0;

        GameObject[] troopsInGame = GameObject.FindGameObjectsWithTag("Troop");

        foreach (GameObject troop in troopsInGame)
        {
            RunTimeTroopData troopData = troop.GetComponent <RunTimeTroopData>();

            if (!troopData.isEnemy)
            {
                score += troopData.valScore;
            }
        }

        return(score);
    }
    void Start()
    {
        switch (transform.parent.tag)
        {
        case ("Troop"):

            RunTimeTroopData troopData = GetComponentInParent <RunTimeTroopData>();
            attackDistance = troopData.attackDistance;
            break;

        case ("Hero"):

            RunTimeHeroData heroData = GetComponentInParent <RunTimeHeroData>();
            attackDistance = heroData.valAttackDistance;
            break;
        }

        battleCollider        = GetComponent <CircleCollider2D>();
        battleCollider.radius = Mathf.Log10(attackDistance + detectionIncreasedDistance);
    }
    void Start()
    {
        switch (transform.parent.tag)
        {
        case ("Troop"):

            RunTimeTroopData troopData = GetComponentInParent <RunTimeTroopData>();
            isEnemy = troopData.isEnemy;
            break;

        case ("Tower"):

            RunTimeTowerData towerData = GetComponentInParent <RunTimeTowerData>();
            isEnemy = towerData.isEnemy;
            break;

        case ("Hero"):

            RunTimeHeroData heroData = GetComponentInParent <RunTimeHeroData>();
            isEnemy = heroData.isEnemy;
            break;

        case ("Core"):

            RunTimeCoreData coreData = GetComponentInParent <RunTimeCoreData>();
            isEnemy = coreData.isEnemy;
            break;
        }

        if (isEnemy)
        {
            gameObject.layer = 11;
        }
        else
        {
            gameObject.layer = 12;
        }
    }
    private void Start()
    {
        troopData = GetComponent <RunTimeTroopData>();

        Health = troopData.valHp;
    }
예제 #13
0
 public TroopAttackI(IsometricCharacterAnimator isometricCharacterAnimations, RunTimeTroopData troopData)
 {
     troopAnimations = isometricCharacterAnimations;
     attackActions   = troopData.GetComponent <TroopAttackActions>();
 }
예제 #14
0
 public abstract void AddGoldOnWaveEnd(RunTimeTroopData troopData);
예제 #15
0
    private void OnTroopDeath(RunTimeTroopData troop)
    {
        Transform troopTransform = troop.GameObject.transform;

        HandleEnemyLeavedAttackRadio(troopTransform);
    }
예제 #16
0
 public PhysicalAttack(IsometricCharacterAnimator isometricCharacterAnimations, RunTimeTroopData troopData)
     : base(isometricCharacterAnimations, troopData)
 {
     this.troopData       = troopData;
     this.troopAnimations = isometricCharacterAnimations;
 }