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); } }
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); }
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); }
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(); }
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); } }
public void RefreshMoveTiles() { gridGenerator.DestroyTiles(DestroyOption.rangeTiles, true, true); tracked = false; }