private void OnEnable() { myScript = (script_MonsterController)target; showAbilityFields = new AnimBool(true); showAbilityFields.valueChanged.AddListener(Repaint); hasResistances = new AnimBool(true); hasResistances.valueChanged.AddListener(Repaint); }
private void Update() { if (Input.GetKeyUp(KeyCode.Tab)) { foreach (var monster in monsters) { monster.GetComponent <script_MonsterController>().ToggleHealthbar(); } } if (beginMyTurn) { print("Begiiiin!!"); _monsterPoints.text = (monsterCap - monsterCost).ToString(); _trapPoints.text = (trapCap - trapCost).ToString(); _myCanvas.gameObject.SetActive(true); //TODO Remove dead monsters //TODO for every monster reset movement foreach (var monster in monsters) { if (monster == null) { monsters.Remove(null); continue; } monster.GetComponent <script_MonsterController>().myRemainingMovement = 8; monster.GetComponent <script_MonsterController>().myDirection = Enumerations.Direction.Choose; monster.GetComponent <script_MonsterController>().attackedThisTurn = false; } availableMovement = Utilities.RollDice(movementDice); _availableMovementField.text = "Available:" + availableMovement; beginMyTurn = false; } else if (isMyTurn) { if (script_GameManager.preparationPhase) { if (Input.GetKeyUp(KeyCode.I)) { ToggleTrapMenu(); } if (Input.GetKeyUp(KeyCode.N)) { EndPreparation(); } if (Input.GetMouseButtonUp(1)) { altSelected = script_SelectObject.ReturnAlternateClick(); if (altSelected != null && CheckTrapSquareEligibility(altSelected)) //TODO Selected.tag in allowed squares for trap { var tileScript = altSelected.GetComponent <script_Tile>(); if (tileScript.myTrap != null) { //TODO Remove from my list trapCost -= tileScript.myTrap.GetComponent <script_Trap>().trapCost; Destroy(tileScript.myTrap); tileScript.myTrap = null; _trapPoints.text = (trapCap - trapCost).ToString(); } else { if (trapCap >= selectedTrapType.GetComponent <script_Trap>().trapCost + trapCost) { traps.Add(PlaceTrap(selectedTrapType, altSelected, tileScript)); trapCost += selectedTrapType.GetComponent <script_Trap>().trapCost; _trapPoints.text = (trapCap - trapCost).ToString(); } } } } if (Input.GetMouseButtonUp(2)) { altSelected = script_SelectObject.ReturnAlternateClick(); if (altSelected != null && CheckTrapSquareEligibility(altSelected)) //TODO Selected.tag in allowed squares for trap { var tileScript = altSelected.GetComponent <script_Tile>(); if (tileScript.myTrap != null) { //TODO Remove from my list trapCost -= tileScript.myTrap.GetComponent <script_Trap>().trapCost; Destroy(tileScript.myTrap); tileScript.myTrap = null; _trapPoints.text = (trapCap - trapCost).ToString(); } else { if (trapCap >= selectedTrapType.GetComponent <script_Trap>().trapCost + trapCost) { traps.Add(PlaceTrap(selectedTrapType, altSelected, tileScript)); trapCost += selectedTrapType.GetComponent <script_Trap>().trapCost; _trapPoints.text = (trapCap - trapCost).ToString(); } } } } } else { if (Input.GetKeyUp(KeyCode.N)) { EndTurn(); return; } if (Input.GetKeyUp(KeyCode.I)) { ToggleMonsterMenu(); } if (Input.GetKeyUp(KeyCode.Space)) { //Check if the tile is occupied _myTile = selected; if (selected.tag == "MonsterSpawn" && _myTile.GetComponent <script_Tile>().occupied == false) { if (monsterCap >= monsterCost + selectedMonsterType.GetComponent <script_MonsterController>().monsterCost) { monsterCost += selectedMonsterType.GetComponent <script_MonsterController>().monsterCost; monsters.Add(Instantiate(selectedMonsterType, _myTile.transform.position, Quaternion.identity)); monsters[numberOfMonsters].GetComponent <script_MonsterController>().myTile = _myTile; numberOfMonsters++; _monsterPoints.text = (monsterCap - monsterCost).ToString(); _myTile.GetComponent <script_Tile>().occupied = true; _myTile.GetComponent <script_Tile>().occupier = monsters[numberOfMonsters - 1]; } } } if (previousSelected != null && previousSelected.tag == "Monster" && selected != previousSelected) { try { script_MovementPainter.RemoveAllowedMovementMarker(_allowedMovement); } catch { } previousSelected.GetComponent <script_MonsterController>().Unselected(); } if (selected != null && selected.tag == "Monster") { _myScript_MonsterController = selected.GetComponent <script_MonsterController>(); _myScript_MovementParser = selected.GetComponent <script_MovementParser>(); _myScript_MonsterController.SelectedUpdate(); if (_myScript_MonsterController.myDirection != Enumerations.Direction.Choose) { try { script_MovementPainter.RemoveAllowedMovementMarker(_allowedMovement); } catch { } } if (_myScript_MonsterController.myRemainingMovement < availableMovement) { _allowedMovement = _myScript_MovementParser.GetAllowedMovement(selected, ref _myScript_MonsterController.myDirection, _myScript_MonsterController.myRemainingMovement); } else { _allowedMovement = _myScript_MovementParser.GetAllowedMovement(selected, ref _myScript_MonsterController.myDirection, availableMovement); } script_MovementPainter.AddAllowedMovementMarker(_allowedMovement); if (Input.GetMouseButtonUp(1)) { if (_allowedMovement.Count != 0) { altSelected = script_SelectObject.ReturnAlternateClick(); if (_allowedMovement.Contains(altSelected)) { if (script_BoardController.GetTileDistance(selected, altSelected) <= availableMovement) { availableMovement -= _myScript_MonsterController.Move(altSelected, _allowedMovement); _availableMovementField.text = "Available:" + availableMovement; } } } } } if (Input.GetMouseButtonUp(0)) { if (selected != null && selected.tag == "Player" && previousSelected.tag != null && previousSelected.tag == "Monster" && script_BoardController.GetTileDistance(previousSelected, selected) <= previousSelected.GetComponent <script_MonsterController>().range) { print("Called"); previousSelected.GetComponent <script_MonsterController>().Attack(selected.GetComponent <ICombatant>(), Enumerations.DamageType.Physical); } foreach (var monster in monsters) { _myScript_MonsterController = monster.GetComponent <script_MonsterController>(); if ((selected.tag == "Door" || selected.tag == "OpenDoor") && script_BoardController.GetTileDistance(_myScript_MonsterController.myTile, selected) <= 1) { // selected.GetComponent<scr_Door>().ToggleDoor(); break; } } } //TODO this should get moved to the MonsterController if (Input.GetKeyUp(KeyCode.C)) { if (selected != null && selected.tag == "Player" && previousSelected.tag != null && previousSelected.tag == "Monster") { script_AbilityCaster.CastAbility("heal", selected, gameObject); } } } } }