示例#1
0
 public Spell(SpellName name, SpellAreaType areaType, int spellRange, int manaCost, int damage, bool[] spellRune)
 {
     this.name       = name;
     this.areaType   = areaType;
     this.spellRune  = spellRune;
     this.manaCost   = manaCost;
     this.damage     = damage;
     this.spellRange = spellRange;
 }
示例#2
0
        // V V V Makes a list of tiles of AOE
        public List <Tile> AreaType(SpellAreaType mySpellAreaType)
        {
            int[][]     dirList     = new int[4][] { new int[] { 0, 1 }, new int[] { 0, -1 }, new int[] { 1, 0 }, new int[] { -1, 0 } };
            List <Tile> targetTiles = new List <Tile>();

            if (mouseController.selected == null)
            {
                return(targetTiles);
            }
            switch (mySpellAreaType)
            {
            //type linessa spellrange min ei saa olla 0
            case SpellAreaType.Line:
                if (playerBehaviour.currentCharacter.currentTile.z < mouseController.selected.locZ)
                {
                    LineTargets(0, dirList, out targetTiles);
                }
                else if (playerBehaviour.currentCharacter.currentTile.z > mouseController.selected.locZ)
                {
                    LineTargets(1, dirList, out targetTiles);
                }
                else if (playerBehaviour.currentCharacter.currentTile.x > mouseController.selected.locX)
                {
                    LineTargets(3, dirList, out targetTiles);
                }
                else
                {
                    LineTargets(2, dirList, out targetTiles);
                }
                break;

            case SpellAreaType.Cross:

                targetTiles.Add(mouseController.selected);
                for (int i = 1; i <= spellButtons.currentSpell.areaOfEffect; i++)
                {
                    foreach (var c in dirList)
                    {
                        targetTiles.Add(gridController.GetTile(mouseController.selected.locX + c[0] * i, mouseController.selected.locZ + c[1] * i));
                    }
                }
                break;

            case SpellAreaType.Diagonal:
                targetTiles.Add(mouseController.selected);
                for (int i = 1; i <= spellButtons.currentSpell.areaOfEffect; i++)
                {
                    targetTiles.Add(gridController.GetTile(mouseController.selected.locX + i, mouseController.selected.locZ + i));
                    targetTiles.Add(gridController.GetTile(mouseController.selected.locX + i, mouseController.selected.locZ - i));
                    targetTiles.Add(gridController.GetTile(mouseController.selected.locX - i, mouseController.selected.locZ + i));
                    targetTiles.Add(gridController.GetTile(mouseController.selected.locX - i, mouseController.selected.locZ - i));
                }
                break;

            case SpellAreaType.Normal:
                for (int i = 0 - spellButtons.currentSpell.areaOfEffect; i <= spellButtons.currentSpell.areaOfEffect; i++)
                {
                    for (int j = 0 - spellButtons.currentSpell.areaOfEffect; j <= spellButtons.currentSpell.areaOfEffect; j++)
                    {
                        if (Mathf.Abs(i) + Mathf.Abs(j) <= spellButtons.currentSpell.areaOfEffect)
                        {
                            targetTiles.Add(gridController.GetTile(mouseController.selected.locX + j, mouseController.selected.locZ + i));
                        }
                    }
                }
                break;

            // spellrange ei saa olla 0
            case SpellAreaType.Cone:
                if (playerBehaviour.currentCharacter.currentTile.z < mouseController.selected.locZ)
                {
                    ConeTargets(0, dirList, out targetTiles);
                }
                else if (playerBehaviour.currentCharacter.currentTile.z > mouseController.selected.locZ)
                {
                    ConeTargets(1, dirList, out targetTiles);
                }
                else if (playerBehaviour.currentCharacter.currentTile.x > mouseController.selected.locX)
                {
                    ConeTargets(3, dirList, out targetTiles);
                }
                else
                {
                    ConeTargets(2, dirList, out targetTiles);
                }
                break;

            case SpellAreaType.Square:
                for (int i = 0 - spellButtons.currentSpell.areaOfEffect; i <= spellButtons.currentSpell.areaOfEffect; i++)
                {
                    for (int j = 0 - spellButtons.currentSpell.areaOfEffect; j <= spellButtons.currentSpell.areaOfEffect; j++)
                    {
                        targetTiles.Add(gridController.GetTile(mouseController.selected.locX + j, mouseController.selected.locZ + i));
                    }
                }
                break;
            }
            List <Tile> returnables = new List <Tile>();

            foreach (var tile in targetTiles)
            {
                if (tile != null)
                {
                    if (tile.myType == Tile.BlockType.BaseBlock)
                    {
                        returnables.Add(tile);
                    }
                }
            }
            return(returnables);
        }
示例#3
0
    //Enable Spell Overlay Method
    public void setSpellOverlay(SpellAreaType areaType, int size, Vector2 center)
    {
        //Check if Inside Bounds (Bounds X-Axis fixed by Camera)
        if (center.y > -5f && center.y < 4f && center.x > -8.5f && center.x < 8.5f)
        {
            //Get Cell Number
            int horizontalCell = ((int)(center.x + 9f));
            int verticalCell   = ((int)(center.y + 5f));

            //Setup Center
            center = new Vector2(horizontalCell, verticalCell);

            //Check Spell Center
            if (center == currentSpellCenter)
            {
                return;
            }
            else
            {
                currentSpellCenter = center;
            }

            //Reset Spell Overlay
            resetSpellOverlay();

            //Check Area Type
            if (areaType == SpellAreaType.Circle || areaType == SpellAreaType.Cross)
            {
                //Make Center
                GameObject obj = this.transform.GetChild((verticalCell * width) + horizontalCell).gameObject;
                obj.SetActive(true);
                activeOverlays.AddLast(obj);

                //Make Cross
                for (int i = 1; i < size; i++)
                {
                    //UP
                    if (insideArea(verticalCell + i, horizontalCell))
                    {
                        obj = this.transform.GetChild(((verticalCell + i) * width) + horizontalCell).gameObject;
                        obj.SetActive(true);
                        activeOverlays.AddLast(obj);
                    }
                    //DOWN
                    if (insideArea(verticalCell - i, horizontalCell))
                    {
                        obj = this.transform.GetChild(((verticalCell - i) * width) + horizontalCell).gameObject;
                        obj.SetActive(true);
                        activeOverlays.AddLast(obj);
                    }
                    //LEFT
                    if (insideArea(verticalCell, horizontalCell - i))
                    {
                        obj = this.transform.GetChild((verticalCell * width) + horizontalCell - i).gameObject;
                        obj.SetActive(true);
                        activeOverlays.AddLast(obj);
                    }
                    //RIGHT
                    if (insideArea(verticalCell, horizontalCell + i))
                    {
                        obj = this.transform.GetChild((verticalCell * width) + horizontalCell + i).gameObject;
                        obj.SetActive(true);
                        activeOverlays.AddLast(obj);
                    }
                }

                //Make Rest of Circle if Area is Circle
                if (areaType == SpellAreaType.Circle)
                {
                    for (int i = 1; i < size - 1; i++)
                    {
                        if (insideArea(verticalCell + i, horizontalCell + i))
                        {
                            obj = this.transform.GetChild(((verticalCell + i) * width) + horizontalCell + i).gameObject;
                            obj.SetActive(true);
                            activeOverlays.AddLast(obj);
                        }
                        if (insideArea(verticalCell - i, horizontalCell - i))
                        {
                            obj = this.transform.GetChild(((verticalCell - i) * width) + horizontalCell - i).gameObject;
                            obj.SetActive(true);
                            activeOverlays.AddLast(obj);
                        }
                        if (insideArea(verticalCell + i, horizontalCell - i))
                        {
                            obj = this.transform.GetChild(((verticalCell + i) * width) + horizontalCell - i).gameObject;
                            obj.SetActive(true);
                            activeOverlays.AddLast(obj);
                        }
                        if (insideArea(verticalCell - i, horizontalCell + i))
                        {
                            obj = this.transform.GetChild(((verticalCell - i) * width) + horizontalCell + i).gameObject;
                            obj.SetActive(true);
                            activeOverlays.AddLast(obj);
                        }
                    }
                }
            }
        }
    }