Base for having users and connection with server.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@12884 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
aa9eb45c8b
commit
98274f59d5
@ -143,6 +143,9 @@ src/network/network_manager.cpp
|
||||
src/network/race_info_message.cpp
|
||||
src/network/race_result_message.cpp
|
||||
src/network/race_state.cpp
|
||||
src/online/current_online_user.cpp
|
||||
src/online/http_functions.cpp
|
||||
src/online/online_user.cpp
|
||||
src/physics/btKart.cpp
|
||||
src/physics/btKartRaycast.cpp
|
||||
src/physics/btUprightConstraint.cpp
|
||||
@ -402,6 +405,9 @@ src/network/race_start_message.hpp
|
||||
src/network/race_state.hpp
|
||||
src/network/remote_kart_info.hpp
|
||||
src/network/world_loaded_message.hpp
|
||||
src/online/current_online_user.hpp
|
||||
src/online/http_functions.hpp
|
||||
src/online/online_user.hpp
|
||||
src/physics/btKart.hpp
|
||||
src/physics/btKartRaycast.hpp
|
||||
src/physics/btUprightConstraint.hpp
|
||||
|
@ -302,7 +302,33 @@ XMLNode *FileManager::createXMLTree(const std::string &filename)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
} // getXMLTree
|
||||
} // createXMLTree
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
/** Reads in XML from a string and converts it into a XMLNode tree.
|
||||
* \param content the string containing the XML content.
|
||||
*/
|
||||
XMLNode *FileManager::createXMLTreeFromString(const std::string & content)
|
||||
{
|
||||
try
|
||||
{
|
||||
char *b = new char[content.size()];
|
||||
memcpy(b, content.c_str(), content.size());
|
||||
io::IReadFile * ireadfile = m_file_system->createMemoryReadFile(b, strlen(b), "tempfile", true);
|
||||
io::IXMLReader * reader = m_file_system->createXMLReader(ireadfile);
|
||||
XMLNode* node = new XMLNode(reader);
|
||||
reader->drop();
|
||||
return node;
|
||||
}
|
||||
catch (std::runtime_error& e)
|
||||
{
|
||||
if (UserConfigParams::logMisc())
|
||||
{
|
||||
Log::error("FileManager", "createXMLTreeFromString: %s\n", e.what());
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
} // createXMLTreeFromString
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
/** In order to add and later remove paths we have to specify the absolute
|
||||
|
@ -88,6 +88,7 @@ public:
|
||||
void dropFileSystem();
|
||||
io::IXMLReader *createXMLReader(const std::string &filename);
|
||||
XMLNode *createXMLTree(const std::string &filename);
|
||||
XMLNode *createXMLTreeFromString(const std::string & content);
|
||||
|
||||
std::string getConfigDir() const;
|
||||
std::string getTextureDir() const;
|
||||
|
77
src/online/current_online_user.cpp
Normal file
77
src/online/current_online_user.cpp
Normal file
@ -0,0 +1,77 @@
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// 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 "online/current_online_user.hpp"
|
||||
|
||||
#include <sstream>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
||||
static CurrentOnlineUser* user_singleton = NULL;
|
||||
|
||||
CurrentOnlineUser* CurrentOnlineUser::get()
|
||||
{
|
||||
if (user_singleton == NULL)
|
||||
user_singleton = new CurrentOnlineUser();
|
||||
return user_singleton;
|
||||
} // get
|
||||
|
||||
void CurrentOnlineUser::deallocate()
|
||||
{
|
||||
delete user_singleton;
|
||||
user_singleton = NULL;
|
||||
} // deallocate
|
||||
|
||||
// ============================================================================
|
||||
|
||||
|
||||
CurrentOnlineUser::CurrentOnlineUser(){
|
||||
m_is_signed_in = false;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
bool CurrentOnlineUser::logIn(const std::string &username, const std::string &password)
|
||||
{
|
||||
assert(m_is_signed_in == false);
|
||||
//Sign in
|
||||
if(/*succes*/true)
|
||||
{
|
||||
m_user = new OnlineUser(username);
|
||||
m_is_signed_in = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//I don't know if something should happen here yet
|
||||
}
|
||||
return m_is_signed_in;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
std::string CurrentOnlineUser::getUserName() const
|
||||
{
|
||||
if(m_is_signed_in){
|
||||
assert(m_user != NULL);
|
||||
return m_user->getUserName();
|
||||
}else{
|
||||
return "Guest";
|
||||
}
|
||||
|
||||
}
|
55
src/online/current_online_user.hpp
Normal file
55
src/online/current_online_user.hpp
Normal file
@ -0,0 +1,55 @@
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// 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.
|
||||
|
||||
#ifndef HEADER_CURRENT_ONLINE_USER_HPP
|
||||
#define HEADER_CURRENT_ONLINE_USER_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "online/online_user.hpp"
|
||||
|
||||
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* \brief Class that represents an online registered user
|
||||
* \ingroup online
|
||||
*/
|
||||
class CurrentOnlineUser
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
std::string m_token;
|
||||
bool m_is_signed_in;
|
||||
OnlineUser * m_user;
|
||||
CurrentOnlineUser();
|
||||
|
||||
public:
|
||||
// singleton
|
||||
static CurrentOnlineUser* get();
|
||||
static void deallocate();
|
||||
bool logIn(const std::string &username, const std::string &password);
|
||||
/** Returns the username if signed in. */
|
||||
std::string getUserName() const;
|
||||
|
||||
}; // class CurrentOnlineUser
|
||||
|
||||
#endif
|
||||
|
||||
/*EOF*/
|
70
src/online/http_functions.cpp
Normal file
70
src/online/http_functions.cpp
Normal file
@ -0,0 +1,70 @@
|
||||
//
|
||||
// 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 "http_functions.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <curl/curl.h>
|
||||
#include <stdio.h>
|
||||
#include <memory.h>
|
||||
#include "io/file_manager.hpp"
|
||||
|
||||
namespace HTTP
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
|
||||
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
|
||||
{
|
||||
((std::string*)userp)->append((char*)contents, size * nmemb);
|
||||
return size * nmemb;
|
||||
}
|
||||
|
||||
void init()
|
||||
{
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = curl_easy_init();
|
||||
if(!curl)
|
||||
printf("Error while loading cURL library.\n");
|
||||
}
|
||||
|
||||
XMLNode * getXMLFromPage(std::string url)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
std::string getPage(std::string url)
|
||||
{
|
||||
std::string readBuffer;
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
|
||||
res = curl_easy_perform(curl);
|
||||
if(res != CURLE_OK)
|
||||
Log::error("online/http_functions", "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
||||
|
||||
return readBuffer;
|
||||
}
|
||||
|
||||
void shutdown()
|
||||
{
|
||||
curl_easy_cleanup(curl);
|
||||
curl_global_cleanup();
|
||||
}
|
||||
|
||||
}
|
44
src/online/http_functions.hpp
Normal file
44
src/online/http_functions.hpp
Normal file
@ -0,0 +1,44 @@
|
||||
//
|
||||
// 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.
|
||||
|
||||
#ifndef HTTP_FUNCTIONS_HPP
|
||||
#define HTTP_FUNCTIONS_HPP
|
||||
|
||||
#include <string>
|
||||
#include "io/xml_node.hpp"
|
||||
|
||||
/**
|
||||
* \brief HTTP functions to connect with the server
|
||||
* \ingroup online
|
||||
*/
|
||||
|
||||
namespace HTTP
|
||||
{
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
|
||||
std::string getPage(std::string url);
|
||||
XMLNode * getXMLFromPage(std::string url);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif // HTTP_FUNCTIONS_HPP
|
||||
|
||||
/*EOF*/
|
31
src/online/online_user.cpp
Normal file
31
src/online/online_user.cpp
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// 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 "online/online_user.hpp"
|
||||
|
||||
#include <sstream>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
// ============================================================================
|
||||
OnlineUser::OnlineUser(const std::string &username)
|
||||
{
|
||||
|
||||
} // OnlineUser
|
||||
|
53
src/online/online_user.hpp
Normal file
53
src/online/online_user.hpp
Normal file
@ -0,0 +1,53 @@
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// 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.
|
||||
|
||||
#ifndef HEADER_ONLINE_USER_HPP
|
||||
#define HEADER_ONLINE_USER_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* \brief Class that represents an online registered user
|
||||
* \ingroup online
|
||||
*/
|
||||
class OnlineUser
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
|
||||
std::string m_username;
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
OnlineUser(const std::string &username);
|
||||
|
||||
/** Returns the username. */
|
||||
std::string getUserName() const { return m_username; }
|
||||
|
||||
}; // class OnlineUser
|
||||
|
||||
#endif
|
||||
|
||||
/*EOF*/
|
@ -1,5 +1,5 @@
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) Glenn De Jonghe
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
@ -98,8 +98,6 @@ void LoginDialog::onEnterPressedInternal()
|
||||
if (size > 0 && nonEmptyChars > 0)
|
||||
{
|
||||
Log::info("Login Dialog","Username : %ls", username.c_str());
|
||||
// It's unsafe to delete from inside the event handler so we do it
|
||||
// in onUpdate (which checks for m_self_destroy)
|
||||
m_self_destroy = true;
|
||||
} // if valid name
|
||||
else
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2009 Marianne Gagnon
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2009 Marianne Gagnon
|
||||
// Copyright (C) 2013 Glenn De Jonghe
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
|
@ -202,7 +202,7 @@ void StateManager::onGameStateChange(GameState new_state)
|
||||
|
||||
if (new_state == MENU)
|
||||
{
|
||||
Screen* screen = GUIEngine::getCurrentScreen();
|
||||
GUIEngine::Screen* screen = GUIEngine::getCurrentScreen();
|
||||
if (screen != NULL)
|
||||
{
|
||||
music_manager->startMusic(
|
||||
|
Loading…
Reference in New Issue
Block a user