private void Update() { whiteKingFreeMove = checkKingFreeMove(true); blackKingFreeMove = checkKingFreeMove(false); UpdateSelection(); DrawChessboard(); if (isMoving) { //Debug.Log("in ismoving"); if (selectedChessman.transform.position != target) { selectedChessman.transform.position = Vector3.MoveTowards(selectedChessman.transform.position, target, smoothing * Time.deltaTime); } else { BoardHighlight.Instance.Hidehighlights(); isMoving = false; Chessmans[selectedChessman.CurrentX, selectedChessman.CurrentZ] = null; Chessmans[(int)target.x, (int)target.z] = selectedChessman; selectedChessman.setPosition((int)target.x, (int)target.z); if (selectedChessman.GetType() == typeof(Pawn) && ((int)target.z == 7 || (int)target.z == 0)) { if (selectedChessman.isWhite) { SpawnChessman(1, (int)target.x, (int)target.z); } else { SpawnChessman(7, (int)target.x, (int)target.z); } activeChessmans.Remove(selectedChessman.gameObject); Destroy(selectedChessman.gameObject); } selectedChessman = null; isWhiteTurn = !isWhiteTurn; if (isWhiteTurn) { Invoke("MoveCamera_To_White", 0.5f); } else { Invoke("MoveCamera_To_Black", 0.5f); } } } else if (Input.GetMouseButtonDown(0)) { //Debug.Log("mouseclick"); //print("pint"); //if (Input.GetMouseButtonDown(0)) //if(Input.GetKeyDown(KeyCode.Space)) //Debug.Log(selectionX + " " + selectionZ); if (selectionX >= 0 && selectionZ >= 0) { if (selectedChessman == null) { //Debug.Log("selecting"); //not selected one. select chessman Slectchessman(selectionX, selectionZ); } else { Debug.Log("move function calling"); //already selected. now move MoveChessman(selectionX, selectionZ); //Debug.Log("active chessman : " + activeChessmans.Count); } } } }
private void moveChessman(int x, int y) { if (allowedMoves[x, y]) { Chessman enemieChessman = Chessmans[x, y]; bool win = true; if (enemieChessman != null && enemieChessman.isFirstPlayer != isFirstPlayerTurn) { Type typeOfEnemie = enemieChessman.GetType(); Type typeOfSelecedFigure = selectedChessman.GetType(); // if it is the Flagbearer end the game if (typeOfEnemie == typeof(FlagFigure)) { endTheGame(); activeChessman.Remove(enemieChessman.gameObject); Destroy(enemieChessman.gameObject); return; } if (typeOfSelecedFigure == typeof(RockFigure) && typeOfEnemie == typeof(PaperFigure)) { activeChessman.Remove(selectedChessman.gameObject); Destroy(selectedChessman.gameObject); win = false; } if (typeOfSelecedFigure == typeof(RockFigure) && typeOfEnemie == typeof(ScissorsFigure)) { activeChessman.Remove(enemieChessman.gameObject); Destroy(enemieChessman.gameObject); win = true; } if (typeOfSelecedFigure == typeof(ScissorsFigure) && typeOfEnemie == typeof(RockFigure)) { activeChessman.Remove(selectedChessman.gameObject); Destroy(selectedChessman.gameObject); win = false; } if (typeOfSelecedFigure == typeof(ScissorsFigure) && typeOfEnemie == typeof(PaperFigure)) { activeChessman.Remove(enemieChessman.gameObject); Destroy(enemieChessman.gameObject); win = true; } if (typeOfSelecedFigure == typeof(PaperFigure) && typeOfEnemie == typeof(RockFigure)) { activeChessman.Remove(enemieChessman.gameObject); Destroy(enemieChessman.gameObject); win = true; } if (typeOfSelecedFigure == typeof(PaperFigure) && typeOfEnemie == typeof(ScissorsFigure)) { activeChessman.Remove(selectedChessman.gameObject); Destroy(selectedChessman.gameObject); win = false; } if (typeOfSelecedFigure == typeOfEnemie) { // newChoice } if (typeOfEnemie == typeof(TrapeFigure)) { activeChessman.Remove(selectedChessman.gameObject); Destroy(selectedChessman.gameObject); win = false; } } if (win) { // execute move Chessmans[selectedChessman.CurrentX, selectedChessman.CurrentY] = null; selectedChessman.transform.position = GetTileCenter(x, y); selectedChessman.setPosition(x, y); Chessmans[x, y] = selectedChessman; } isFirstPlayerTurn = !isFirstPlayerTurn; } BoardHighlights.Instance.hidehighlights(); selectedChessman = null; }