コード例 #1
0
    public static bool Move(Piece character, int direction, int cost)
    {
        //up
        if (direction == 1)
        {
            bool inWay = false;
            PlayerControls.ClearAllGrids();
            //check for other characters in the way
            for (int i = 0; i < Board.possibleMoveableChars.Length; i++)
            {
                if (Board.possibleMoveableChars[i] == character)
                {
                    continue;
                }
                if (Board.possibleMoveableChars[i].rowPosition == character.rowPosition - 1 && Board.possibleMoveableChars[i].colPosition == character.colPosition)
                {
                    inWay = true;
                }
            }
            for (int i = 0; i < Board.spawnedEnemies.Count; i++)
            {
                if (Board.spawnedEnemies[i].rowPosition == character.rowPosition - 1 &&
                    Board.spawnedEnemies[i].colPosition == character.colPosition)
                {
                    inWay = true;
                }
            }
            //check for dead spaces in the way
            for (int i = 0; i < Board.numDeadSpaces; i++)
            {
                if (Board.deadPoints[i].y == character.rowPosition - 1 &&
                    Board.deadPoints[i].x == character.colPosition)
                {
                    inWay = true;
                }
            }
            //check for cannons in the way
            for (int i = 0; i < Board.numCannons; i++)
            {
                if (Board.allCannons[i].cannon.rowPosition == character.rowPosition - 1 && Board.allCannons[i].cannon.colPosition == character.colPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            //check for generators in the way
            for (int i = 0; i < Board.numGenerators; i++)
            {
                if (Board.generators[i].generator.rowPosition == character.rowPosition - 1 && Board.generators[i].generator.colPosition == character.colPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }

            if (SceneManager.GetActiveScene().buildIndex == 2 && Board.pirateBoss.colPosition == character.colPosition && Board.pirateBoss.rowPosition == character.rowPosition - 1)
            {
                inWay = true;
            }

            if (!inWay && ExperimentalResources.ModifyResource(cost))
            {
                character.prevPos = character.thePiece.transform.position;
                character.SetRowAndCol(character.rowPosition - 1, character.colPosition);
                PlayerControls.UnoccupiedSpaceEnable(character);
                character.currPos = GameObject.Find("gridRow" + (character.rowPosition) + "Column" + (character.colPosition)).transform.position;
                return(true);
            }
        }
        //right
        else if (direction == 2)
        {
            PlayerControls.ClearAllGrids();
            bool inWay = false;
            //check for other characters in the way
            for (int i = 0; i < Board.possibleMoveableChars.Length; i++)
            {
                if (Board.possibleMoveableChars[i] == character)
                {
                    continue;
                }
                if (Board.possibleMoveableChars[i].colPosition == character.colPosition + 1 && Board.possibleMoveableChars[i].rowPosition == character.rowPosition)
                {
                    inWay = true;
                }
            }
            for (int i = 0; i < Board.spawnedEnemies.Count; i++)
            {
                if (Board.spawnedEnemies[i].colPosition == character.colPosition + 1 && Board.spawnedEnemies[i].rowPosition == character.rowPosition)
                {
                    inWay = true;
                }
            }
            //check for dead spaces in the way
            for (int i = 0; i < Board.numDeadSpaces; i++)
            {
                if (Board.deadPoints[i].x == character.colPosition + 1 && Board.deadPoints[i].y == character.rowPosition)
                {
                    inWay = true;
                }
            }
            //check for cannons in the way
            for (int i = 0; i < Board.numCannons; i++)
            {
                if (Board.allCannons[i].cannon.colPosition == character.colPosition + 1 && Board.allCannons[i].cannon.rowPosition == character.rowPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            //check for generators in the way
            for (int i = 0; i < Board.numGenerators; i++)
            {
                if (Board.generators[i].generator.rowPosition == character.rowPosition && Board.generators[i].generator.colPosition == character.colPosition + 1)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            if (SceneManager.GetActiveScene().buildIndex == 2 && Board.pirateBoss.colPosition == character.colPosition + 1 && Board.pirateBoss.rowPosition == character.rowPosition)
            {
                inWay = true;
            }

            if (!inWay && ExperimentalResources.ModifyResource(cost))
            {
                character.prevPos = character.thePiece.transform.position;
                character.SetRowAndCol(character.rowPosition, character.colPosition + 1);
                PlayerControls.UnoccupiedSpaceEnable(character);
                character.currPos = GameObject.Find("gridRow" + (character.rowPosition) + "Column" + (character.colPosition)).transform.position;
                return(true);
            }
        }
        //down
        else if (direction == 3)
        {
            bool inWay = false;
            PlayerControls.ClearAllGrids();
            //check for other characters in the way
            for (int i = 0; i < Board.possibleMoveableChars.Length; i++)
            {
                if (Board.possibleMoveableChars[i] == character)
                {
                    continue;
                }
                if (Board.possibleMoveableChars[i].rowPosition == character.rowPosition + 1 && Board.possibleMoveableChars[i].colPosition == character.colPosition)
                {
                    inWay = true;
                }
            }
            for (int i = 0; i < Board.spawnedEnemies.Count; i++)
            {
                if (Board.spawnedEnemies[i].rowPosition == character.rowPosition + 1 && Board.spawnedEnemies[i].colPosition == character.colPosition)
                {
                    inWay = true;
                }
            }
            //check for dead spaces in the way
            for (int i = 0; i < Board.numDeadSpaces; i++)
            {
                if (Board.deadPoints[i].y == character.rowPosition + 1 && Board.deadPoints[i].x == character.colPosition)
                {
                    inWay = true;
                }
            }
            //check for cannons in the way
            for (int i = 0; i < Board.numCannons; i++)
            {
                if (Board.allCannons[i].cannon.rowPosition == character.rowPosition + 1 && Board.allCannons[i].cannon.colPosition == character.colPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            //check for generators in the way
            for (int i = 0; i < Board.numGenerators; i++)
            {
                if (Board.generators[i].generator.rowPosition == character.rowPosition + 1 && Board.generators[i].generator.colPosition == character.colPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            if (SceneManager.GetActiveScene().buildIndex == 2 && Board.pirateBoss.colPosition == character.colPosition && Board.pirateBoss.rowPosition == character.rowPosition + 1)
            {
                inWay = true;
            }
            if (!inWay && ExperimentalResources.ModifyResource(cost))
            {
                character.prevPos = character.thePiece.transform.position;
                character.SetRowAndCol(character.rowPosition + 1, character.colPosition);
                PlayerControls.UnoccupiedSpaceEnable(character);
                character.currPos = GameObject.Find("gridRow" + (character.rowPosition) + "Column" + (character.colPosition)).transform.position;
                return(true);
            }
        }
        //left
        else
        {
            bool inWay = false;
            PlayerControls.ClearAllGrids();
            for (int i = 0; i < Board.possibleMoveableChars.Length; i++)
            {
                if (Board.possibleMoveableChars[i] == character)
                {
                    continue;
                }
                if (Board.possibleMoveableChars[i].colPosition == character.colPosition - 1 && Board.possibleMoveableChars[i].rowPosition == character.rowPosition)
                {
                    inWay = true;
                }
            }
            for (int i = 0; i < Board.spawnedEnemies.Count; i++)
            {
                if (Board.spawnedEnemies[i].colPosition == character.colPosition - 1 && Board.spawnedEnemies[i].rowPosition == character.rowPosition)
                {
                    inWay = true;
                }
            }
            //check for dead spaces in the way
            for (int i = 0; i < Board.numDeadSpaces; i++)
            {
                if (Board.deadPoints[i].x == character.colPosition - 1 && Board.deadPoints[i].y == character.rowPosition)
                {
                    inWay = true;
                }
            }
            //check for cannons in the way
            for (int i = 0; i < Board.numCannons; i++)
            {
                if (Board.allCannons[i].cannon.colPosition == character.colPosition - 1 && Board.allCannons[i].cannon.rowPosition == character.rowPosition)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            //check for generators in the way
            for (int i = 0; i < Board.numGenerators; i++)
            {
                if (Board.generators[i].generator.rowPosition == character.rowPosition && Board.generators[i].generator.colPosition == character.colPosition - 1)
                {
                    inWay = true;
                    //Board.allCannons[i].UseCannon(Board.spawnedEnemies, 5);
                }
            }
            if (SceneManager.GetActiveScene().buildIndex == 2 && Board.pirateBoss.colPosition == character.colPosition - 1 && Board.pirateBoss.rowPosition == character.rowPosition)
            {
                inWay = true;
            }
            if (!inWay && ExperimentalResources.ModifyResource(cost))
            {
                character.prevPos = character.thePiece.transform.position;
                character.SetRowAndCol(character.rowPosition, character.colPosition - 1);
                PlayerControls.UnoccupiedSpaceEnable(character);
                character.currPos = GameObject.Find("gridRow" + (character.rowPosition) + "Column" + (character.colPosition)).transform.position;
                return(true);
            }
        }
        return(false);
    }
コード例 #2
0
    // Update is called once per frame
    void Update()
    {
        if (!frozenForMinigame)
        {
            MoveCamera();
            CheckRotateCamera();
        }

        if (movingCamera)
        {
            RepositionCamera(cameraRotPosition, prevCameraRotPosition, cameraMovementBetween);
        }

        // if (!TextManager.playerControlsLocked && !TutorialCards.isTutorialRunning)
        if (!DialoguePanelManager.playerControlsLocked && !TutorialCards.isTutorialRunning && !frozenForMinigame)
        {
            CheckClick();
            CheckPlayer();
            if (isPlayerTurn)
            {
                if (selectedUnit != null)
                {
                    MovePlayer();
                }
                if (Input.GetKeyDown(KeyCode.Space) || EndTurnButtonScript.isButtonPressed)// || Input.GetMouseButtonDown(0))
                {
                    //Clearing all highlighted possible moves and selected character.
                    ClearAllGrids();
                    // panelUnderCharacter.GetComponent<PanelUnderCharacter>().visible = false;
                    if (selectedUnit)
                    {
                        DisablePanelUnderCharacter(selectedUnit);
                    }
                    selectedUnit = null;
                    EndTurnButtonScript.isButtonPressed = false;
                    TestButton.isEnable = true;
                    GiveNumbers();
                    isPlayerTurn = false;
                    roundCounter++;
                    if (roundCounter >= 4)
                    {
                        GameObject.Find("GridLevelStuff").GetComponentInChildren <Board>().SpawnEnemy((int)Random.Range(1.0f, 3.99f));
                        roundCounter = 0;
                    }
                    EnemyTurnsActivate();
                }
            }
            else if (EnemyMovesDone())
            {
                turnCount++;
                isPlayerTurn        = true;
                TestButton.isEnable = false;
                //  GameObject.Find("EndTurn").transform.GetComponent<Button>().transition = Navigation.None;
                ExperimentalResources.ReInitializeResources();
                // GameObject.Find("EndTurn").transform.GetComponent<EndButtonToggle>().isVisible = false;

                foreach (var item in Board.spawnedEnemies)
                {
                    item.GetComponent <EnemyAI>().stats.canAttack = false;
                }

                foreach (var item in Board.possibleMoveableChars)
                {
                    if (item.thePiece != null)
                    {
                        item.thePiece.GetComponent <Stats>().canAttack = true;
                    }
                }

                EndButtonToggle.DisableEndTurn();
            }
        }

        if (frozenForMinigame)
        {
            PlayMinigame();
        }
    }