コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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));
        }