Пример #1
0
 private void Update()
 {
     if (isSelected && turnSystem.GetBattleStatus() == BattleStatus.Combat && turnSystem.currentTurn == cardSystem.Player.GetComponent <GetStats>())
     {
         gridGenerator.DestroyTiles(DestroyOption.rangeTiles, true, true);
         gridGenerator.GenerateSkillTiles(getCardInfo.card.ranges, getCardInfo.card.targetType, cardSystem.Player, TypesofValue.relative, true);
     }
 }
Пример #2
0
    public bool cast(Card card, EditedGridGenerator _gridGenerator, GameObject user, BattleStatus battleStatus, GetStats turn)
    {
        targets       = 0;
        gridGenerator = _gridGenerator;

        if (turnSystem.GetBattleStatus() != battleStatus && turnSystem.currentTurn != turn && turnSystem.currentTurn == cardSystem.Player.GetComponent <GetStats>())
        {
            if (turnSystem.currentTurn == player.GetComponent <GetStats>())
            {
                gridGenerator.DestroyTiles(DestroyOption.selectedTiles, true, true);
                Debug.Log("Its not the right stage to play a card");
            }

            return(false);
        }
        if (user.GetComponent <GetStats>().character.currentMana >= card.manaCost)
        {
            foreach (GameObject tile in gridGenerator.selectedTiles)
            {
                foreach (GameObject tile1 in gridGenerator.rangeTiles)
                {
                    //Debug.Log($"{tile.transform.position.x} == {tile1.transform.position.x} && {tile.transform.position.z} == {tile1.transform.position.z} ");
                    if (tile.transform.position.x == tile1.transform.position.x && tile.transform.position.z == tile1.transform.position.z)
                    {
                        parametersObjects.Add(user);
                        parametersObjects.Add(tile);
                        skillInfo.SetCardID(card);
                        user.GetComponent <GetStats>().lastcastedSkill = card;
                        this.SendMessage(card.skill.ToString(), parametersObjects);
                        targets++;

                        if (targets >= card.maxAmountOfTargets)
                        {
                            return(true);
                        }
                    }
                }
            }
            if (targets == 0)
            {
                if (turnSystem.GetBattleStatus() != BattleStatus.Move && turnSystem.currentTurn == cardSystem.Player.GetComponent <GetStats>())
                {
                    Debug.Log("Select valid targets");
                    gridGenerator.DestroyTiles(DestroyOption.all, true, true);
                }
                return(false);
            }
        }
        else
        {
            if (turnSystem.currentTurn == cardSystem.Player.GetComponent <GetStats>())
            {
                Debug.Log("You dont have enough mana for this ability");
            }
            return(false);
        }
        return(false);
    }
Пример #3
0
    public bool cast(Card card, List <GameObject> selectedTiles, List <GameObject> rangeTiles, GameObject user, BattleStatus battleStatus)
    {
        targets = 0;

        if (turnSystem.GetBattleStatus() != battleStatus)
        {
            Debug.Log("Its not your turn");
            return(false);
        }

        if (user.GetComponent <GetStats>().character.currentMana >= card.manaCost)
        {
            foreach (GameObject tile in selectedTiles)
            {
                foreach (GameObject tile1 in rangeTiles)
                {
                    //Debug.Log($"{tile.transform.position.x} == {tile1.transform.position.x} && {tile.transform.position.z} == {tile1.transform.position.z} ");
                    if (tile.transform.position.x == tile1.transform.position.x && tile.transform.position.z == tile1.transform.position.z)
                    {
                        parametersObjects.Add(user);
                        parametersObjects.Add(tile);
                        user.GetComponent <GetStats>().lastcastedSkill = card;
                        this.SendMessage(card.skill.ToString(), parametersObjects);
                        targets++;

                        if (targets >= card.maxAmountOfTargets)
                        {
                            return(true);
                        }
                    }
                }
            }
            if (targets == 0)
            {
                Debug.Log("Select valid targets");
                if (turnSystem.GetBattleStatus() != BattleStatus.PlayerMove)
                {
                    gridGenerator.DestroyTiles(DestroyOption.all, true, true);
                }
                return(false);
            }
        }
        else
        {
            Debug.Log("You dont have enough mana for this ability");
            return(false);
        }
        return(false);
    }
Пример #4
0
    public void NextTurn()
    {
        gridGenerator.DestroyTiles(DestroyOption.all, true, true);

        if (index < battleStatusLastIndex)
        {
            index++;
        }
        else
        {
            index = 0;
        }

        if (currentTurnIndex < (turnOrder.Count - 1) && (status == BattleStatus.Combat))
        {
            currentTurnIndex++;
            if (turnOrder[currentTurnIndex].character.relation != turnOrder[currentTurnIndex - 1].character.relation)
            {
                SwitchRelation();
            }
        }
        else if (status == BattleStatus.Combat)
        {
            SetOrder();
            currentTurnIndex = 0;

            if (turnOrder[currentTurnIndex].character.relation != lastTurn.character.relation)
            {
                SwitchRelation();
            }
        }

        status = (BattleStatus)index;

        RefreshOrder();
        //PrintBattleStatus();
    }
Пример #5
0
    private void EnemyMove()
    {
        alreadyWent = true;

        int rotation = (360 - (360 - (int)this.transform.localEulerAngles.y)) / 90;

        for (int i = 0; i < 4; i++)
        {
            gridGenerator.GenerateSkillTiles(getStats.character.movementCard.ranges, getStats.character.movementCard.targetType, gameObject, TypesofValue.relative, false);

            tempList.AddRange(gridGenerator.rangeTiles.ToArray());

            RemoveDuplictas(tempList);

            CheckRotation(gameObject);
        }
        gridGenerator.DestroyTiles(DestroyOption.rangeTiles, true, false);

        foreach (GameObject temptile in tempList)
        {
            for (int m = 0; m < 4; m++)
            {
                placeHolder.transform.position = temptile.transform.position;
                gridGenerator.GenerateSkillTiles(usedCard.ranges, usedCard.targetType, placeHolder, TypesofValue.relative, false);
                foreach (GameObject rangeTile in gridGenerator.rangeTiles)
                {
                    if (rangeTile.GetComponent <GetObjectonTile>().gameObjectOnTile != null)
                    {
                        if (rangeTile.GetComponent <GetObjectonTile>().gameObjectOnTile.GetComponent <GetStats>())
                        {
                            gridGenerator.selectedTiles.Add(temptile);
                        }
                    }
                }
                gridGenerator.DestroyTiles(DestroyOption.rangeTiles, true, false);
                CheckRotation(placeHolder);
            }
            placeHolder.transform.localEulerAngles = new Vector3(0, 270, 0);
        }

        playerPos = FindEnemyPos();

        int indexPlayerPos = Random.Range(0, playerPos.Count - 1);

        closestTile      = tempList[0];
        furthermostTile  = tempList[0];
        smallestDistance = Vector3.Distance(closestTile.transform.position, playerPos[indexPlayerPos]);
        largestDistance  = Vector3.Distance(furthermostTile.transform.position, playerPos[indexPlayerPos]);

        foreach (GameObject rangeTile in tempList)
        {
            if (Vector3.Distance(rangeTile.transform.position, playerPos[indexPlayerPos]) < smallestDistance)
            {
                smallestDistance = Vector3.Distance(rangeTile.transform.position, playerPos[indexPlayerPos]);
                closestTile      = rangeTile;
            }
            if (Vector3.Distance(rangeTile.transform.position, playerPos[indexPlayerPos]) > largestDistance)
            {
                largestDistance = Vector3.Distance(rangeTile.transform.position, playerPos[indexPlayerPos]);
                furthermostTile = rangeTile;
            }
        }

        if (limitHealthPercent != 0)
        {
            if (getStats.character.currentHealth < (getStats.character.health / 100) * limitHealthPercent)
            {
                tempList2.Add(furthermostTile);
            }
            else
            {
                if (gridGenerator.selectedTiles.Count == 0)
                {
                    tempList2.Add(closestTile);
                }

                tempList2.AddRange(gridGenerator.selectedTiles.ToArray());
            }
        }

        RemoveDuplictas(tempList2);
        gridGenerator.DestroyTiles(DestroyOption.allList, true, false);

        for (int i = 0; i < 4; i++)
        {
            int indexTempList2 = Random.Range(0, tempList2.Count - 1);

            gridGenerator.selectedTiles.Add(tempList2[indexTempList2]);
            gridGenerator.GenerateSkillTiles(getStats.character.movementCard.ranges, getStats.character.movementCard.targetType, gameObject, TypesofValue.relative, false);
            if (allSkills.cast(getStats.character.movementCard, gridGenerator, gameObject, BattleStatus.Move, getStats))
            {
                alreadyWent = false;
                break;
            }
            CheckRotation(gameObject);
        }
    }
Пример #6
0
 public void RefreshMoveTiles()
 {
     gridGenerator.DestroyTiles(DestroyOption.rangeTiles, true, true);
     tracked = false;
 }