コード例 #1
0
 private void OnEnable()
 {
     myScript          = (script_MonsterController)target;
     showAbilityFields = new AnimBool(true);
     showAbilityFields.valueChanged.AddListener(Repaint);
     hasResistances = new AnimBool(true);
     hasResistances.valueChanged.AddListener(Repaint);
 }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }