private void OnBoardChanged(ushort slateIndex, MatchModel.SlateStatus slateStatus) { Debug.Log("board changed " + slateIndex + " changed to " + slateStatus); SlateIndex = slateIndex; SlateStatus = slateStatus; }
public static void TestWinners() { MatchModel.SlateStatus[] arr = new MatchModel.SlateStatus[9]; ushort winnerID = 0; if (GetWinner(arr, 1, 2, out winnerID)) { Console.WriteLine($"A winner: {winnerID}"); } else { Console.WriteLine($"A no winner"); } arr[0] = MatchModel.SlateStatus.PLAYER1; arr[1] = MatchModel.SlateStatus.PLAYER1; arr[2] = MatchModel.SlateStatus.PLAYER1; if (GetWinner(arr, 1, 2, out winnerID)) { Console.WriteLine($"B winner: {winnerID}"); } else { Console.WriteLine($"B no winner"); } arr[0] = MatchModel.SlateStatus.PLAYER2; arr[1] = MatchModel.SlateStatus.PLAYER1; arr[2] = MatchModel.SlateStatus.PLAYER2; arr[3] = MatchModel.SlateStatus.NONE; arr[4] = MatchModel.SlateStatus.PLAYER2; arr[5] = MatchModel.SlateStatus.NONE; arr[6] = MatchModel.SlateStatus.PLAYER1; arr[7] = MatchModel.SlateStatus.NONE; arr[8] = MatchModel.SlateStatus.PLAYER2; if (GetWinner(arr, 1, 2, out winnerID)) { Console.WriteLine($"C winner: {winnerID}"); } else { Console.WriteLine($"C no winner"); } }
void Update() { if (SlateStatus != MatchModel.SlateStatus.NONE) { GameObject pawnGO; if (SlateStatus == MatchModel.SlateStatus.MINE) { // my pawn pawnGO = Instantiate(MyPawnSample); } else { // his pawn pawnGO = Instantiate(HisPawnSample); } GameObject slate = SlateGameObjects[SlateIndex]; pawnGO.transform.parent = slate.transform; pawnGO.transform.localPosition = new Vector3(); SlateStatus = MatchModel.SlateStatus.NONE; Debug.Log("current turn is: " + MatchModel.CurrentMatch.CurrentPlayerClientID + " i'm: " + NetworkingManager.Instacne.ClientID); SetPlayerTurn(MatchModel.CurrentMatch.CurrentPlayerClientID == NetworkingManager.Instacne.ClientID); if (MatchModel.CurrentMatch.Win) { // match ended, we have a winner winPanel.SetActive(true); winText.text = MatchModel.CurrentMatch.IWin ? "Yah, dique que tu si y uno no y uuuuuu" : "Tu no sirve manin"; } else if (MatchModel.CurrentMatch.Draw) { winPanel.SetActive(true); winText.text = "Hay bobop (en online ;3)"; } } }
void Update() { if (SlateStatus != MatchModel.SlateStatus.NONE) { GameObject pawnGO; if (SlateStatus == MatchModel.SlateStatus.MINE) { // my pawn pawnGO = Instantiate(MyPawnSample); } else { // his pawn pawnGO = Instantiate(HisPawnSample); } GameObject slate = SlateGameObjects[SlateIndex]; pawnGO.transform.parent = slate.transform; pawnGO.transform.localPosition = new Vector3(); SlateStatus = MatchModel.SlateStatus.NONE; Debug.Log("current turn is: " + MatchModel.CurrentMatch.CurrentPlayerClientID + " i'm: " + NetworkingManager.Instacne.ClientID); SetPlayerTurn(MatchModel.CurrentMatch.CurrentPlayerClientID == NetworkingManager.Instacne.ClientID); if (MatchModel.CurrentMatch.Win) { // match ended, we have a winner winPanel.SetActive(true); winText.text = MatchModel.CurrentMatch.IWin ? "I WON!" : "I'm a loser!"; } else if (MatchModel.CurrentMatch.Draw) { winPanel.SetActive(true); winText.text = "we both are losers"; } } }
public static bool GetWinner(MatchModel.SlateStatus[] slates, ushort player1ClientID, ushort player2ClientID, out ushort winnerClientID) { if (indexs == null) { // create win rows/columns/diagonal indexs = new List <int[]>(); // horizontal rows indexs.Add(new int[3] { 0, 1, 2 }); indexs.Add(new int[3] { 3, 4, 5 }); indexs.Add(new int[3] { 6, 7, 8 }); // vertical columns indexs.Add(new int[3] { 0, 3, 6 }); indexs.Add(new int[3] { 1, 4, 7 }); indexs.Add(new int[3] { 2, 5, 8 }); // diagonal indexs.Add(new int[3] { 0, 4, 8 }); indexs.Add(new int[3] { 2, 4, 6 }); } winnerClientID = 0; foreach (int[] line in indexs) { MatchModel.SlateStatus status = slates[line[0]]; if (status == MatchModel.SlateStatus.NONE) { continue; } if (slates[line[1]] == status && slates[line[2]] == status) { // we have a winner if (status == MatchModel.SlateStatus.PLAYER1) { winnerClientID = player1ClientID; } else { winnerClientID = player2ClientID; } return(true); } } return(false); }