예제 #1
0
        public static void Move(GameObject checker, Vector3 endPos)
        {
            //Set fields state as free
            FieldManager.ModifyFieldStateUnder(checker, 1);

            //Change field y position to checker y position
            endPos.y = 0.3f;

            //Move checker
            checker.transform.position = Vector3.Lerp(checker.transform.position, endPos, 100);

            //Change field state to occupied
            if (CheckerManager.CheckerWithGameobject(checker).PlayerColor == "Blue")
            {
                FieldManager.ModifyFieldStateUnder(checker, 3);

                if ((int)checker.transform.position.z == 1)
                {
                    CheckerManager.CheckerWithGameobject(checker).IsKing = true;
                }
            }
            if (CheckerManager.CheckerWithGameobject(checker).PlayerColor == "Brown")
            {
                FieldManager.ModifyFieldStateUnder(checker, 2);

                if ((int)checker.transform.position.z == 10)
                {
                    CheckerManager.CheckerWithGameobject(checker).IsKing = true;
                }
            }
        }
예제 #2
0
        public static bool IsMovePossible(GameObject gameObjChecker, GameObject gameObjField)
        {
            //Find checker with selected GameObject
            Checker checker = CheckerManager.CheckerWithGameobject(gameObjChecker);

            //Check if field is free
            if (!IsFieldFree(gameObjField))
            {
                return(false);
            }

            //Check if move has 1 field length
            double distance = Vector3.Distance(gameObjChecker.transform.position, gameObjField.transform.position);

            if (distance > 1.65f || distance < 1.4f)
            {
                return(false);
            }

            //Check if move isnt backwards && checker isnt a king
            if (!checker.IsKing)
            {
                if (checker.PlayerColor == "Brown" && (gameObjField.transform.position.z - gameObjChecker.transform.position.z) < 0)
                {
                    return(false);
                }

                if (checker.PlayerColor == "Blue" && (gameObjField.transform.position.z - gameObjChecker.transform.position.z) > 0)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #3
0
        public void CheckerWithGameObjectTest()
        {
            TurnSystem.InitializeData();

            Checker    testObj = CheckerManager.BlueCheckers[0];
            GameObject gameobj = testObj.GameObj;

            GameMechanics.ResetGame();

            Assert.AreEqual(CheckerManager.CheckerWithGameobject(gameobj), testObj);
        }
예제 #4
0
        public static bool IsJumpPossible(GameObject gameObjChecker, GameObject gameObjField)
        {
            //Search checker and fields array for variable with same GameObject as given as argument
            Checker checker = CheckerManager.CheckerWithGameobject(gameObjChecker);
            Field   field   = FieldManager.FieldWithGameObject(gameObjField);

            //Check if field is free
            if (!IsFieldFree(field.GameObject))
            {
                return(false);
            }


            //Check if jumping distance is correct
            double distance = Vector3.Distance(checker.GameObj.transform.position, field.GameObject.transform.position);

            if (distance > 2.95f || distance < 2.8f)
            {
                return(false);
            }


            //Check if move isnt backwards && checker isnt a king
            if (!checker.IsKing)
            {
                if (checker.PlayerColor == "Brown" && (checker.GameObj.gameObject.transform.position.z - field.GameObject.transform.position.z) > 0)
                {
                    return(false);
                }

                if (checker.PlayerColor == "Blue" && (checker.GameObj.transform.position.z - field.GameObject.transform.position.z) < 0)
                {
                    return(false);
                }
            }

            //Check if enemy is between checker and field
            Vector3 enemyPos = checker.GameObj.transform.position;

            enemyPos.x = (checker.GameObj.transform.position.x + field.GameObject.transform.position.x) / 2;
            enemyPos.z = (checker.GameObj.transform.position.z + field.GameObject.transform.position.z) / 2;
            enemyPos.y = 0.3f;

            //Check if player wants to jump over enemy or over free field
            if (!IsAnyCheckerOnPosition(enemyPos))
            {
                return(false);
            }

            //If player wants to jump over another checker, check if that checker is an enemy
            else
            {
                if (CheckerManager.CheckerOnPosition(enemyPos).PlayerColor == "Blue" && checker.PlayerColor == "Blue")
                {
                    return(false);
                }

                if (CheckerManager.CheckerOnPosition(enemyPos).PlayerColor == "Brown" && checker.PlayerColor == "Brown")
                {
                    return(false);
                }
            }

            return(true);
        }