Example #1
0
void PlayerInfo::onReceiveCommand(int32_t clientId, sf::Packet& packet)
{
    if (clientId != this->clientId) return;
    int16_t command;
    packet >> command;
    switch(command)
    {
    case CMD_UPDATE_CREW_POSITION:
        {
            int32_t position;
            bool active;
            packet >> position >> active;
            crew_position[position] = active;
            
            if (isMainScreen())
                main_screen_control = false;
            if (active && mySpaceship)
            {
                int main_screen_control_cnt = 0;
                foreach(PlayerInfo, i, playerInfoList)
                {
                    if (i->ship_id == mySpaceship->getMultiplayerId() && i->main_screen_control)
                        main_screen_control_cnt++;
                }
                if (main_screen_control_cnt == 0)
                    main_screen_control = true;
            }
        }
        break;
    case CMD_UPDATE_SHIP_ID:
        packet >> ship_id;
        break;
    case CMD_UPDATE_MAIN_SCREEN_CONTROL:
        packet >> main_screen_control;
        break;
    }