private void OnClientMessageReceived(object sender, MessageReceivedEventArgs e) { switch (e.Tag) { case (ushort)Tags.Tag.SET_NAME: // new player registering using (Message message = e.GetMessage()) { using (DarkRiftReader reader = message.GetReader()) { string name = reader.ReadString(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("hey mister " + name); Console.ForegroundColor = ConsoleColor.White; PlayerModel newPlayer = new PlayerModel(e.Client, name); if (pendingPlayer == null) { // new player is pending for a match pendingPlayer = newPlayer; } else { // there is already a pending player. lets start a new match MatchModel match = new MatchModel(pendingPlayer, newPlayer); matches.Add(match.id, match); // report clients of the new match using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(match.id); writer.Write(match.CurrentPlayerClientID); using (Message msg = Message.Create((ushort)Tags.Tag.GOT_MATCH, writer)) { pendingPlayer.Client.SendMessage(msg, SendMode.Reliable); newPlayer.Client.SendMessage(msg, SendMode.Reliable); } } pendingPlayer = null; } } } break; case (ushort)Tags.Tag.SLATE_TAKEN: using (Message message = e.GetMessage()) { using (DarkRiftReader reader = message.GetReader()) { ushort matchId = reader.ReadUInt16(); ushort slateIndex = reader.ReadUInt16(); if (matches.ContainsKey(matchId)) { MatchModel match = matches[matchId]; match.PlayerTakesSlate(slateIndex, e.Client); if (match.MatchOver) { // match is over Console.WriteLine($"match over. had: {matches.Count} matches"); matches.Remove(matchId); Console.WriteLine($"match over. now have: {matches.Count} matches"); } } } } break; } }
private void OnClientMessageReceived(object sender, MessageReceivedEventArgs e) { switch (e.Tag) { case (ushort)Tags.Tag.SET_NAME: using (Message message = e.GetMessage()) { using (DarkRiftReader reader = message.GetReader()) { string name = reader.ReadString(); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Hey Mr " + name, ConsoleColor.Red); Console.ForegroundColor = ConsoleColor.White; PlayerModel newPlayer = new PlayerModel(e.Client, name); if (pendingPlayer == null) { pendingPlayer = newPlayer; } else { MatchModel match = new MatchModel(pendingPlayer, newPlayer); matches.Add(match.id, match); using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(match.id); using (Message msg = Message.Create((ushort)Tags.Tag.GOT_MTACH, writer)) { pendingPlayer.Client.SendMessage(msg, SendMode.Reliable); newPlayer.Client.SendMessage(msg, SendMode.Reliable); } } pendingPlayer = null; } } } break; case (ushort)Tags.Tag.SLATE_TAKEN: using (Message message = e.GetMessage()) { using (DarkRiftReader reader = message.GetReader()) { ushort matchId = reader.ReadUInt16(); ushort slateIndex = reader.ReadUInt16(); if (matches.ContainsKey(matchId)) { MatchModel match = matches[matchId]; match.PlayerTakesSlate(slateIndex, e.Client); } } } break; } }