private static void SendStateUpdate(GameState currentState) { Console.WriteLine("Changing state to: " + currentState.ToString()); _waitingOnStateTimer = false; _bitBuffer.Clear(); _bitBuffer.AddByte(5); _bitBuffer.AddByte((byte)currentState); // Chose a random builder and tell everyone if (currentState == GameState.Begin) { int randomIndex = _rand.Next(0, _connectedIds.Count); _builderId = _connectedIds[randomIndex]; _bitBuffer.AddUShort((ushort)_builderId); } // Tell everyone the moved item ids else if (currentState == GameState.Search) { _bitBuffer.AddUShort((ushort)_movedObjects.Count); foreach (ushort id in _movedObjects) { _bitBuffer.AddUShort(id); } } _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 7)); }
private static void SendStateUpdate(GameState currentState) { Console.WriteLine("Changing state to: " + currentState.ToString()); _waitingOnStateTimer = false; _bitBuffer.Clear(); _bitBuffer.AddByte(5); _bitBuffer.AddByte((byte)currentState); // Chose a random builder and tell everyone if (currentState == GameState.Begin) { // Look for a builder who wasn't builder last round AND EXISTS bool foundValidBuilder = false; ushort attempts = 0; while (!foundValidBuilder) { if (attempts >= 5) { _currentState = GameState.Waiting; SendStateUpdate(_currentState); Console.WriteLine("Begin error occuring, going back to waiting"); } int randomIndex = _rand.Next(1, _connectedIds.Count); if (_lastBuilderId != randomIndex && _connectedIds.Contains(randomIndex)) { _builderId = _connectedIds[randomIndex]; foundValidBuilder = true; _lastBuilderId = randomIndex; } attempts += 1; } _bitBuffer.AddUShort((ushort)_builderId); _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 6)); } // Tell everyone the moved items else if (currentState == GameState.Search) { _bitBuffer.AddUShort((ushort)_movedObjects.Count); foreach (var movedObject in _movedObjects) { _bitBuffer.AddUShort(movedObject.Key); _bitBuffer.AddUShort(movedObject.Value.Item1); _bitBuffer.AddUShort(movedObject.Value.Item2); } _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 6 + 12 * Constants.MAX_SHIFTED_OBJECTS)); } else { _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 2)); } }
private static void SendStateUpdate(GameState currentState) { Console.WriteLine("Changing state to: " + currentState.ToString()); _waitingOnStateTimer = false; _bitBuffer.Clear(); _bitBuffer.AddByte(5); _bitBuffer.AddByte((byte)currentState); // Chose a random builder and tell everyone if (currentState == GameState.Begin) { bool foundValidBuilder = false; while (!foundValidBuilder) { int randomIndex = _rand.Next(0, _connectedIds.Count); if (_lastBuilderId != randomIndex && _connectedIds.Contains(randomIndex)) { _builderId = _connectedIds[randomIndex]; } } _bitBuffer.AddUShort((ushort)_builderId); _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 6)); } // Tell everyone the moved items else if (currentState == GameState.Search) { _bitBuffer.AddUShort((ushort)_movedObjects.Count); foreach (var movedObject in _movedObjects) { _bitBuffer.AddUShort(movedObject.Key); _bitBuffer.AddUShort(movedObject.Value.Item1); _bitBuffer.AddUShort(movedObject.Value.Item2); } _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 6 + 12 * Constants.MAX_SHIFTED_OBJECTS)); } else { _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 2)); } }
private static void SendStateUpdate(GameState currentState) { Console.WriteLine("Changing state to: " + currentState.ToString()); _bitBuffer.Clear(); _bitBuffer.AddByte(5); _bitBuffer.AddByte((byte)currentState); // Chose a random builder and tell everyone if (currentState == GameState.Begin) { int randomIndex = _rand.Next(0, _connectedIds.Count); _builderId = _connectedIds[randomIndex]; _bitBuffer.AddUShort((ushort)_builderId); } _bitBuffer.ToArray(_buffer); _webServer.SendAll(_connectedIds, new ArraySegment<byte>(_buffer, 0, 4)); }