private NetworkMessage GetResponse(ServerSidePlayer sender, NetworkMessage networkMessage) { switch (networkMessage.Type) { case NetworkMessage.MessageType.Chat: case NetworkMessage.MessageType.PlayerSync: case NetworkMessage.MessageType.BallSync: case NetworkMessage.MessageType.GameEnd: case NetworkMessage.MessageType.ObstacleSpawned: case NetworkMessage.MessageType.PowerupSpawned: case NetworkMessage.MessageType.BallPoweredUp: case NetworkMessage.MessageType.PaddlePowerUp: return(networkMessage.ShallowClone()); case NetworkMessage.MessageType.GameStart: { NetworkMessage message = networkMessage.DeepClone(); byte[] playerIds = Players.Select(p => p.Id).ToArray(); byte[] paddleTypes = RandomNumber.GetArray(playerIds.Length, () => RandomNumber.NextByte((byte)PaddleType.Normal, (byte)(PaddleType.Short + 1))); byte ballType = (byte)BallType.Normal; byte[] byteArray = Converter.EncodeGameStartMessage(playerIds, paddleTypes, ballType, RoomMaster.Id); message.ByteContents = byteArray; return(message); } case NetworkMessage.MessageType.RoundReset: { NetworkMessage message = networkMessage.DeepClone(); Converter.DecodeRoundOverData(networkMessage.ByteContents, out BallType[] oldBalls, out byte[] oldIds, out byte[] playerIDs, out byte[] playerLifes); int ballCount = SharedUtilities.Clamp( playerIDs.Length + RandomNumber.NextInt(-1, 2), 1, playerIDs.Length + 1); BallType[] newBallTypes = new BallType[ballCount]; byte[] newIds = new byte[newBallTypes.Length]; for (int i = 0; i < newBallTypes.Length; i++) { newBallTypes[i] = i == 1 ? BallType.Normal : (BallType)RandomNumber.NextByte((byte)BallType.Normal, (byte)(BallType.Deadly + 1)); newIds[i] = (byte)i; } byte[] byteArray = Converter.EncodeRoundOverData(newBallTypes, newIds, playerIDs, playerLifes); message.ByteContents = byteArray; return(message); } default: Debug.WriteLine($"Exception: could not get repsonse to message of type {networkMessage.Type}"); break; } return(null); }
public void GetArrayTest() { int[] a = RandomNumber.GetArray <int>(100, () => 1); Assert.AreEqual(a.Length, 100); }