Exemplo n.º 1
0
 public override void setAttackTiles(GameBoard.Tile currentTile, int distance)
 {
     if (distance > 0)
     {
         if (currentTile.UP != null)
         {
             this.setAttackTiles(currentTile.UP, distance - 1);
             accessibleTiles.Add(currentTile.UP);
         }
         if (currentTile.DOWN != null)
         {
             this.setAttackTiles(currentTile.DOWN, distance - 1);
             accessibleTiles.Add(currentTile.DOWN);
         }
         if (currentTile.RIGHT != null)
         {
             this.setAttackTiles(currentTile.RIGHT, distance - 1);
             accessibleTiles.Add(currentTile.RIGHT);
         }
         if (currentTile.LEFT != null)
         {
             this.setAttackTiles(currentTile.LEFT, distance - 1);
             accessibleTiles.Add(currentTile.LEFT);
         }
     }
 }
Exemplo n.º 2
0
        public override ArrayList AttackTile(GameBoard.Tile tile)
        {
            ArrayList unitsHit = new ArrayList();

            if (tile.CurrentUnit != null)
            {
                unitsHit.Add(tile.CurrentUnit.UniqueID); //first unit in the list will receive the most healing

                if (level >= 3)
                {
                    getLevelThreeBonusHealedUnits(tile, levelThreeBonus_Range);

                    foreach (Unit u in levelThreeBonus_UnitList)
                    {
                        //u.ApplyDamage(levelThreeBonus_Heal);
                        unitsHit.Add(u.UniqueID);
                    }

                    levelThreeBonus_UnitList.Clear();
                }
            }

            unitsToHeal = unitsHit.Count;
            return(unitsHit);
        }
Exemplo n.º 3
0
        public override void moveUnit(GameBoard.Tile destination)
        {
            currentTile.CurrentUnit = null;
            destination.CurrentUnit = this;
            currentTile             = destination;

            unfocus();
        }
Exemplo n.º 4
0
 bool InTile(GameBoard.Tile tile)
 {
     if ((Math.Abs(transform.position.x - tile.Position.x) > 0.5) ||
         (Math.Abs(transform.position.y - tile.Position.y) > 0.5))
     {
         return(false);
     }
     return(true);
 }
Exemplo n.º 5
0
        public override ArrayList AttackTile(GameBoard.Tile tile)
        {
            ArrayList unitsHit = new ArrayList();

            if (tile.CurrentUnit != null)
            {
                unitsHit.Add(tile.CurrentUnit.UniqueID);
            }

            return(unitsHit);
        }
Exemplo n.º 6
0
        public void getLevelThreeBonusHealedUnits(GameBoard.Tile currentTile, int distance)
        {
            if (distance > 0)
            {
                if (currentTile.UP != null)
                {
                    getLevelThreeBonusHealedUnits(currentTile.UP, distance - 1);

                    if (currentTile.UP.CurrentUnit != null &&
                        currentTile.UP.CurrentUnit.unitAllegiance == this.unitAllegiance &&
                        !levelThreeBonus_UnitList.Contains(currentTile.UP.CurrentUnit))
                    {
                        levelThreeBonus_UnitList.Add(currentTile.UP.CurrentUnit);
                    }
                }
                if (currentTile.DOWN != null)
                {
                    getLevelThreeBonusHealedUnits(currentTile.DOWN, distance - 1);

                    if (currentTile.DOWN.CurrentUnit != null &&
                        currentTile.DOWN.CurrentUnit.unitAllegiance == this.unitAllegiance &&
                        !levelThreeBonus_UnitList.Contains(currentTile.DOWN.CurrentUnit))
                    {
                        levelThreeBonus_UnitList.Add(currentTile.DOWN.CurrentUnit);
                    }
                }
                if (currentTile.RIGHT != null)
                {
                    getLevelThreeBonusHealedUnits(currentTile.RIGHT, distance - 1);

                    if (currentTile.RIGHT.CurrentUnit != null &&
                        currentTile.RIGHT.CurrentUnit.unitAllegiance == this.unitAllegiance &&
                        !levelThreeBonus_UnitList.Contains(currentTile.RIGHT.CurrentUnit))
                    {
                        levelThreeBonus_UnitList.Add(currentTile.RIGHT.CurrentUnit);
                    }
                }
                if (currentTile.LEFT != null)
                {
                    getLevelThreeBonusHealedUnits(currentTile.LEFT, distance - 1);

                    if (currentTile.LEFT.CurrentUnit != null &&
                        currentTile.LEFT.CurrentUnit.unitAllegiance == this.unitAllegiance &&
                        !levelThreeBonus_UnitList.Contains(currentTile.LEFT.CurrentUnit))
                    {
                        levelThreeBonus_UnitList.Add(currentTile.LEFT.CurrentUnit);
                    }
                }
            }
        }
Exemplo n.º 7
0
        public override ArrayList AttackTile(GameBoard.Tile tile)
        {
            ArrayList unitsHit = new ArrayList();
            Unit      unitHit  = tile.CurrentUnit;

            if (unitHit != null)
            {
                unfocus();

                unitFocused = unitHit;
                unitsHit.Add(unitHit.UniqueID);
                if (unitHit.unitAllegiance == unitAllegiance)
                {
                    unitHit.MovementRange += movementSpeedBuff;
                    Console.WriteLine("LOG: Unit {0} has increased Movement Range", unitHit.UniqueID);

                    if (this.level >= 2)
                    {
                        unitHit.Damage += this.attackBuff;
                        Console.WriteLine("LOG: this unit can now do {0} damage", unitHit.Damage);

                        if (this.level >= 3)
                        {
                            unitHit.Armor += this.armorBuff;
                            Console.WriteLine("LOG: this unit takes {0} less damage", unitHit.Armor);
                        }
                    }
                }
                else
                {
                    unitHit.Paralyzed = true;
                    Console.WriteLine("LOG: Unit {0} is paralyzed!", unitHit.UniqueID);

                    if (this.level >= 2)
                    {
                        unitFocused.Armor -= this.armorDebuff;
                        Console.WriteLine("LOG: Unit {0} has {1} armor.", unitFocused.UniqueID, unitFocused.Armor);
                    }
                }
                focused = true;
            }
            return(unitsHit);
        }
Exemplo n.º 8
0
        public override ArrayList AttackTile(GameBoard.Tile tile)
        {
            int xDif = this.currentTile.x - tile.x;
            int yDif = this.currentTile.y - tile.y;

            ArrayList unitsHit = new ArrayList();

            if (tile.CurrentUnit != null)
            {
                unitsHit.Add(tile.CurrentUnit.UniqueID);
            }

            if (this.currentTile.UP == tile)
            {
                if (tile.UP != null)
                {
                    GameBoard.Tile upTile = tile.UP;

                    if (upTile.CurrentUnit != null)
                    {
                        unitsHit.Add(upTile.CurrentUnit.UniqueID);
                    }

                    tile = upTile.RIGHT;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }

                    tile = upTile.LEFT;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }
                }
            }
            else if (this.currentTile.DOWN == tile)
            {
                if (tile.DOWN != null)
                {
                    GameBoard.Tile downTile = tile.DOWN;

                    if (downTile.CurrentUnit != null)
                    {
                        unitsHit.Add(downTile.CurrentUnit.UniqueID);
                    }



                    tile = downTile.RIGHT;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }

                    tile = downTile.LEFT;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }
                }
            }
            else if (this.currentTile.RIGHT == tile)
            {
                if (tile.RIGHT != null)
                {
                    GameBoard.Tile rightTile = tile.RIGHT;

                    if (rightTile.CurrentUnit != null)
                    {
                        unitsHit.Add(rightTile.CurrentUnit.UniqueID);
                    }

                    tile = rightTile.UP;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }

                    tile = rightTile.DOWN;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }
                }
            }
            else if (this.currentTile.LEFT == tile)
            {
                if (tile.LEFT != null)
                {
                    GameBoard.Tile leftTile = tile.LEFT;

                    if (leftTile.CurrentUnit != null)
                    {
                        unitsHit.Add(leftTile.CurrentUnit.UniqueID);
                    }

                    tile = leftTile.UP;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }

                    tile = leftTile.DOWN;

                    if (tile != null && tile.CurrentUnit != null)
                    {
                        unitsHit.Add(tile.CurrentUnit.UniqueID);
                    }
                }
            }

            return(unitsHit);
        }
Exemplo n.º 9
0
        public override ArrayList AttackTile(GameBoard.Tile tile)
        {
            int xDif = this.currentTile.x - tile.x;
            int yDif = this.currentTile.y - tile.y;

            GameBoard.Tile temp = this.currentTile;

            ArrayList unitsHit = new ArrayList();

            if (xDif < 0)
            {
                for (int i = -1; i >= xDif; i--)
                {
                    Console.WriteLine("i:{0} , xDif:{1}", i, xDif);
                    temp = temp.UP;

                    if (temp.CurrentUnit != null)
                    {
                        Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID);
                        unitsHit.Add(temp.CurrentUnit.UniqueID);

                        if (level < 3)
                        {
                            return(unitsHit);
                        }
                    }
                }
            }
            else if (xDif > 0)
            {
                for (int i = 1; i <= xDif; i++)
                {
                    Console.WriteLine("i:{0} , yDif:{1}", i, xDif);
                    temp = temp.DOWN;

                    if (temp.CurrentUnit != null)
                    {
                        Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID);
                        unitsHit.Add(temp.CurrentUnit.UniqueID);

                        if (level < 3)
                        {
                            return(unitsHit);
                        }
                    }
                }
            }

            if (yDif > 0)
            {
                for (int i = 1; i <= yDif; i++)
                {
                    Console.WriteLine("i:{0} , yDif:{1}", i, yDif);
                    temp = temp.RIGHT;

                    if (temp.CurrentUnit != null)
                    {
                        Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID);
                        unitsHit.Add(temp.CurrentUnit.UniqueID);

                        if (level < 3)
                        {
                            return(unitsHit);
                        }
                    }
                }
            }
            else if (yDif < 0)
            {
                for (int i = -1; i >= yDif; i--)
                {
                    Console.WriteLine("i:{0} , yDif:{1}", i, yDif);
                    temp = temp.LEFT;

                    if (temp.CurrentUnit != null)
                    {
                        Console.WriteLine("Unit Hit: {0}", temp.CurrentUnit.UniqueID);
                        unitsHit.Add(temp.CurrentUnit.UniqueID);


                        if (level < 3)
                        {
                            return(unitsHit);
                        }
                    }
                }
            }



            return(unitsHit);
        }
Exemplo n.º 10
0
 public override ArrayList AttackTile(GameBoard.Tile tile)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 11
0
 public override ArrayList AttackTile(GameBoard.Tile tile)
 {
     return(null);
 }
Exemplo n.º 12
0
 public override void setAccessibleTiles(GameBoard.Tile currentTile, int distance)
 {
     //do nothing
 }
    public void SpawnEnemy(int wave)
    {
        List <GridSystem.Cell> entrances = GameManager.Instance.CurrentLevelManager.GameBoardSystem.GameGridSystem.MainGameGrid.Entrances;
        int entrance = Random.Range(0, entrances.Count);

        int temp = Random.Range(0, 4);

        if (wave == 1)
        {
            temp = 0;
        }
        if (wave == 2)
        {
            temp = 1;
        }
        if (wave == 3)
        {
            temp = 2;
        }
        if (wave == 4)
        {
            temp = 3;
        }
        if (wave % 5 == 0)
        {
            temp = Random.Range(4, 7);
        }
        List <GridSystem.Cell> path;

        if ((Enemy.Type)temp != Enemy.Type.Flying && (Enemy.Type)temp != Enemy.Type.BossFly)
        {
            path = GameManager.Instance.SearchPathFrom(entrances[entrance].X, entrances[entrance].Y);
        }
        else
        {
            path = GameManager.Instance.SearchFlyingPath(entrances[entrance].X, entrances[entrance].Y);
        }
        var tiles = new List <GameBoard.Tile>();

        foreach (GridSystem.Cell t in path)
        {
            tiles.Add(_gameBoard.BoardTiles[t.X, t.Y]);
        }

        GridSystem.Cell startCell = entrances[0];
        GameBoard.Tile  startTile = tiles[0];


        Vector3 spawnPosition = startTile.Position;

        GameObject enemeyGameObject = Instantiate(Enemies[temp], spawnPosition, Quaternion.identity) as GameObject;

        if (enemeyGameObject != null)
        {
            enemeyGameObject.transform.SetParent(this.transform);
            //Enemies.Add(enemeyGameObject);
            Enemy enemy = enemeyGameObject.GetComponent <Enemy>();
            _enemies.Add(enemy);
            enemy.SetupEnemy(startCell.X, startCell.Y, tiles, path, (Enemy.Type)temp);
            _gameBoard.AddEnemy(enemy);
        }
    }