public void OnClickButton(ButtonCell cell) { var x = cell.x; var y = cell.y; var z = cell.z; Debug.Log(x + ", " + y + ", " + z + " button pressed!"); switch (state) { case GameState.SetupState: if (cell.isRingState || cell.isStoneState) { return; } if (lastClicked == cell) { cell.state = ButtonState.Ring; GameObject obj = (currentPlayer == player1) ? objectPool.GetWhiteRing() : objectPool.GetBlackRing(); obj.SetActive(true); Ring ring = obj.GetComponent <Ring>(); currentPlayer.AddRing(ring); mapManager.AddRingToCell(ring, cell); currentPlayer = GetNextPlayer(); if (player1.ringCount == 5 && player2.ringCount == 5) { state = GameState.ProcessState; lastClicked = null; break; } } else { if (lastClicked != null && lastClicked.isSelectedState) { lastClicked.state = ButtonState.Empty; } cell.state = ButtonState.Selected; } lastClicked = cell; break; case GameState.ProcessState: if (cell.isStoneState) { return; } if (cell.isEmptyState && lastClicked != null && lastClicked.isRingState) { mapManager.MoveRingToCell(lastClicked, cell, (currentPlayer == player1)); cell.ring.state = RingState.Idle; lastClicked = null; mapManager.DisableAllButtons(); fiveStoneList = mapManager.checkFiveStones(); if (fiveStoneList.Count > 0) { if (currentPlayer.ringCount == 3) { state = GameState.EndState; break; } // Do Button Select fiveStoneManager.LoadSelect(fiveStoneList); // And Then Set Stone State state = GameState.PickStoneState; } else { currentPlayer = GetNextPlayer(); } break; } else if (cell.isRingState) { // cancel current ring if (lastClicked == cell) { lastClicked.ring.state = RingState.Idle; lastClicked = null; break; } // if last clicked is ring state if (lastClicked != null && lastClicked.isRingState && lastClicked.ring.isSelected) { lastClicked.ring.state = RingState.Idle; } cell.ring.state = RingState.Selected; } lastClicked = cell; break; case GameState.PickRingState: if (!cell.isRingState) { return; } // remove lastClicked ring if (lastClicked == cell) { currentPlayer.RemoveRing(cell.ring); cell.ring.gameObject.SetActive(false); cell.ring = null; cell.state = ButtonState.Empty; currentPlayer = GetNextPlayer(); lastClicked = null; state = GameState.ProcessState; } else { if (lastClicked != null) { lastClicked.ring.state = RingState.Idle; } cell.ring.state = RingState.Selected; lastClicked = cell; } break; } SetupStatusText(); SetupMap(lastClicked); }