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; } } }
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); }
public void CheckerWithGameObjectTest() { TurnSystem.InitializeData(); Checker testObj = CheckerManager.BlueCheckers[0]; GameObject gameobj = testObj.GameObj; GameMechanics.ResetGame(); Assert.AreEqual(CheckerManager.CheckerWithGameobject(gameobj), testObj); }
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); }