Adding the base class that will contain all information about all players, correcting events passing inside the protocols manager
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/networking@13081 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
2a0a9a3617
commit
01ceeaa23a
@ -137,6 +137,7 @@ src/modes/world_status.cpp
|
|||||||
src/modes/world_with_rank.cpp
|
src/modes/world_with_rank.cpp
|
||||||
src/network/client_network_manager.cpp
|
src/network/client_network_manager.cpp
|
||||||
src/network/event.cpp
|
src/network/event.cpp
|
||||||
|
src/network/game_setup.cpp
|
||||||
src/network/http_functions.cpp
|
src/network/http_functions.cpp
|
||||||
src/network/network_interface.cpp
|
src/network/network_interface.cpp
|
||||||
src/network/network_manager.cpp
|
src/network/network_manager.cpp
|
||||||
@ -399,6 +400,7 @@ src/modes/world_status.hpp
|
|||||||
src/modes/world_with_rank.hpp
|
src/modes/world_with_rank.hpp
|
||||||
src/network/client_network_manager.hpp
|
src/network/client_network_manager.hpp
|
||||||
src/network/event.hpp
|
src/network/event.hpp
|
||||||
|
src/network/game_setup.hpp
|
||||||
src/network/http_functions.hpp
|
src/network/http_functions.hpp
|
||||||
src/network/network_interface.hpp
|
src/network/network_interface.hpp
|
||||||
src/network/network_manager.hpp
|
src/network/network_manager.hpp
|
||||||
|
97
src/network/game_setup.cpp
Normal file
97
src/network/game_setup.cpp
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
//
|
||||||
|
// SuperTuxKart - a fun racing game with go-kart
|
||||||
|
// Copyright (C) 2013 SuperTuxKart-Team
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License
|
||||||
|
// as published by the Free Software Foundation; either version 3
|
||||||
|
// of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
#include "network/game_setup.hpp"
|
||||||
|
|
||||||
|
#include "utils/log.hpp"
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
GameSetup::GameSetup()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
GameSetup::~GameSetup()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void GameSetup::addPlayer(PlayerProfile profile)
|
||||||
|
{
|
||||||
|
m_players.push_back(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void GameSetup::removePlayer(uint32_t id)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < m_players.size(); i++)
|
||||||
|
{
|
||||||
|
if (m_players[i].user_profile.getUserID() == id)
|
||||||
|
{
|
||||||
|
m_players.erase(m_players.begin()+i, m_players.begin()+i+1);
|
||||||
|
Log::verbose("GameSetup", "Removed a player from the game setup.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void GameSetup::removePlayer(uint8_t id)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < m_players.size(); i++)
|
||||||
|
{
|
||||||
|
if (m_players[i].race_id == id) // check the given id
|
||||||
|
{
|
||||||
|
m_players.erase(m_players.begin()+i, m_players.begin()+i+1);
|
||||||
|
Log::verbose("GameSetup", "Removed a player from the game setup.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
const PlayerProfile* GameSetup::getProfile(uint32_t id)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < m_players.size(); i++)
|
||||||
|
{
|
||||||
|
if (m_players[i].user_profile.getUserID() == id)
|
||||||
|
{
|
||||||
|
return &m_players[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
const PlayerProfile* GameSetup::getProfile(uint8_t id)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < m_players.size(); i++)
|
||||||
|
{
|
||||||
|
if (m_players[i].race_id == id)
|
||||||
|
{
|
||||||
|
return &m_players[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------
|
66
src/network/game_setup.hpp
Normal file
66
src/network/game_setup.hpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
//
|
||||||
|
// SuperTuxKart - a fun racing game with go-kart
|
||||||
|
// Copyright (C) 2013 SuperTuxKart-Team
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License
|
||||||
|
// as published by the Free Software Foundation; either version 3
|
||||||
|
// of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
/*! \file game_setup.hpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GAME_SETUP_HPP
|
||||||
|
#define GAME_SETUP_HPP
|
||||||
|
|
||||||
|
#include "online/online_user.hpp"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
/*! \class PlayerProfile
|
||||||
|
* \brief Contains the profile of a player.
|
||||||
|
*/
|
||||||
|
class PlayerProfile
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PlayerProfile() : user_profile("") {}
|
||||||
|
~PlayerProfile() {}
|
||||||
|
|
||||||
|
uint8_t race_id; //!< The id of the player for the race
|
||||||
|
std::string kart_name; //!< The selected kart.
|
||||||
|
OnlineUser user_profile; //!< Pointer to the lobby profile
|
||||||
|
};
|
||||||
|
|
||||||
|
/*! \class GameSetup
|
||||||
|
* \brief Used to store the needed data about the players that join a game.
|
||||||
|
* This class stores all the possible information about players in a lobby.
|
||||||
|
*/
|
||||||
|
class GameSetup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GameSetup();
|
||||||
|
virtual ~GameSetup();
|
||||||
|
|
||||||
|
void addPlayer(PlayerProfile profile); //!< Add a player.
|
||||||
|
void removePlayer(uint32_t id); //!< Remove a player by id.
|
||||||
|
void removePlayer(uint8_t id); //!< Remove a player by local id.
|
||||||
|
|
||||||
|
const PlayerProfile* getProfile(uint32_t id); //!< Get a profile by database id
|
||||||
|
const PlayerProfile* getProfile(uint8_t id); //!< Get the profile by the lobby id
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::vector<PlayerProfile> m_players; //!< Information about players
|
||||||
|
PlayerProfile m_self_profile; //!< Information about self
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GAME_SETUP_HPP
|
@ -202,9 +202,12 @@ void ProtocolManager::update()
|
|||||||
Event* event = m_events_to_process.back();
|
Event* event = m_events_to_process.back();
|
||||||
|
|
||||||
PROTOCOL_TYPE searchedProtocol = PROTOCOL_NONE;
|
PROTOCOL_TYPE searchedProtocol = PROTOCOL_NONE;
|
||||||
|
if (event->type == EVENT_TYPE_MESSAGE)
|
||||||
|
{
|
||||||
if (event->data.size() > 0)
|
if (event->data.size() > 0)
|
||||||
searchedProtocol = (PROTOCOL_TYPE)(event->data[0]);
|
searchedProtocol = (PROTOCOL_TYPE)(event->data[0]);
|
||||||
event->removeFront(1); // remove the first byte which indicates the protocol
|
event->removeFront(1); // remove the first byte which indicates the protocol
|
||||||
|
}
|
||||||
for (unsigned int i = 0; i < m_protocols.size() ; i++)
|
for (unsigned int i = 0; i < m_protocols.size() ; i++)
|
||||||
{
|
{
|
||||||
if (m_protocols[i].protocol->getProtocolType() == searchedProtocol || event->type != EVENT_TYPE_MESSAGE) // pass data to protocols even when paused
|
if (m_protocols[i].protocol->getProtocolType() == searchedProtocol || event->type != EVENT_TYPE_MESSAGE) // pass data to protocols even when paused
|
||||||
|
@ -30,10 +30,19 @@ LobbyRoomProtocol::~LobbyRoomProtocol()
|
|||||||
|
|
||||||
void LobbyRoomProtocol::notifyEvent(Event* event)
|
void LobbyRoomProtocol::notifyEvent(Event* event)
|
||||||
{
|
{
|
||||||
|
Log::setLogLevel(1);
|
||||||
if (event->type == EVENT_TYPE_MESSAGE)
|
if (event->type == EVENT_TYPE_MESSAGE)
|
||||||
{
|
{
|
||||||
Log::info("LobbyRoomProtocol", "Message from %u : \"%s\"\n", event->peer->getAddress(), event->data.c_str());
|
|
||||||
|
Log::verbose("LobbyRoomProtocol", "Message from %u : \"%s\"", event->peer->getAddress(), event->data.c_str());
|
||||||
}
|
}
|
||||||
|
if (event->type == EVENT_TYPE_CONNECTED)
|
||||||
|
{
|
||||||
|
Log::verbose("LobbyRoomProtocol", "New player.");
|
||||||
|
// add the player to the game setup
|
||||||
|
|
||||||
|
}
|
||||||
|
Log::setLogLevel(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LobbyRoomProtocol::setup()
|
void LobbyRoomProtocol::setup()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user