/// <summary> /// Perform a swap of two divide soldiers. /// </summary> /// <param name="soldier1"></param> /// <param name="soldier2"></param> private void Swap(DivideSoldier soldier1, DivideSoldier soldier2) { // swap positions of soldiers var pos = soldier1.transform.position; soldier1.transform.position = soldier2.transform.position; soldier2.transform.position = pos; // deselect the soldiers in the swap soldier1.Deselect(); soldier2.Deselect(); // decrease number of swaps m_numberOfSwaps--; UpdateSwapText(); // update solutions shown in drawer FindSolution(); }
/// <summary> /// Handles a user click on the given soldier. /// Performs a swap if appropriate. /// </summary> /// <param name="soldier"></param> internal void HandleSoldierClick(DivideSoldier soldier) { if (selectedSoldier == null) { // select the clicked soldier selectedSoldier = soldier; } else if (selectedSoldier == soldier) { // deselect soldier that was clicked on twice soldier.Deselect(); selectedSoldier = null; } else { // swap the previous selected soldier with current clicked soldier Swap(selectedSoldier, soldier); selectedSoldier = null; } }