From 487d3be4cc8761e5697d4fb95d85e9da8dcaa42e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 5 Sep 2014 17:30:36 +0300 Subject: Add serverfeatures class for check is server support one or another features. --- src/CMakeLists.txt | 5 +++++ src/Makefile.am | 5 +++++ src/net/eathena/serverfeatures.cpp | 33 ++++++++++++++++++++++++++++++++ src/net/eathena/serverfeatures.h | 38 +++++++++++++++++++++++++++++++++++++ src/net/net.cpp | 6 ++++++ src/net/net.h | 3 +++ src/net/serverfeatures.h | 39 ++++++++++++++++++++++++++++++++++++++ src/net/tmwa/serverfeatures.cpp | 35 ++++++++++++++++++++++++++++++++++ src/net/tmwa/serverfeatures.h | 38 +++++++++++++++++++++++++++++++++++++ 9 files changed, 202 insertions(+) create mode 100644 src/net/eathena/serverfeatures.cpp create mode 100644 src/net/eathena/serverfeatures.h create mode 100644 src/net/serverfeatures.h create mode 100644 src/net/tmwa/serverfeatures.cpp create mode 100644 src/net/tmwa/serverfeatures.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e19a4b96f..50746b65d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -539,6 +539,7 @@ SET(SRCS net/registrationoptions.h net/sdltcpnet.cpp net/sdltcpnet.h + net/serverfeatures.h net/serverinfo.h net/skillhandler.h net/tradehandler.h @@ -1310,6 +1311,8 @@ SET(SRCS_TMWA net/tmwa/protocol.h net/tmwa/questhandler.cpp net/tmwa/questhandler.h + net/tmwa/serverfeatures.cpp + net/tmwa/serverfeatures.h net/tmwa/skillhandler.cpp net/tmwa/skillhandler.h net/tmwa/sprite.h @@ -1363,6 +1366,8 @@ SET(SRCS_EATHENA net/eathena/protocol.h net/eathena/questhandler.cpp net/eathena/questhandler.h + net/eathena/serverfeatures.cpp + net/eathena/serverfeatures.h net/eathena/skillhandler.cpp net/eathena/skillhandler.h net/eathena/sprite.h diff --git a/src/Makefile.am b/src/Makefile.am index f849e0163..0e640c7b3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -666,6 +666,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ net/registrationoptions.h \ net/sdltcpnet.cpp \ net/sdltcpnet.h \ + net/serverfeatures.h \ net/serverinfo.h \ net/skillhandler.h \ net/tradehandler.h \ @@ -1240,6 +1241,8 @@ manaplus_SOURCES += \ net/tmwa/protocol.h \ net/tmwa/questhandler.cpp \ net/tmwa/questhandler.h \ + net/tmwa/serverfeatures.cpp \ + net/tmwa/serverfeatures.h \ net/tmwa/skillhandler.cpp \ net/tmwa/skillhandler.h \ net/tmwa/sprite.h \ @@ -1293,6 +1296,8 @@ manaplus_SOURCES += net/eathena/gui/guildtab.cpp \ net/eathena/protocol.h \ net/eathena/questhandler.cpp \ net/eathena/questhandler.h \ + net/eathena/serverfeatures.cpp \ + net/eathena/serverfeatures.h \ net/eathena/skillhandler.cpp \ net/eathena/skillhandler.h \ net/eathena/sprite.h \ diff --git a/src/net/eathena/serverfeatures.cpp b/src/net/eathena/serverfeatures.cpp new file mode 100644 index 000000000..3b11842e6 --- /dev/null +++ b/src/net/eathena/serverfeatures.cpp @@ -0,0 +1,33 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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, see . + */ + +#include "net/eathena/serverfeatures.h" + +#include "debug.h" + +namespace EAthena +{ + +bool ServerFeatures::haveOnlineList() const +{ + return false; +} + +} // EAthena diff --git a/src/net/eathena/serverfeatures.h b/src/net/eathena/serverfeatures.h new file mode 100644 index 000000000..79febd773 --- /dev/null +++ b/src/net/eathena/serverfeatures.h @@ -0,0 +1,38 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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, see . + */ + +#ifndef NET_EATHENA_SERVERFEATURES_H +#define NET_EATHENA_SERVERFEATURES_H + +#include "net/serverfeatures.h" + +#include "localconsts.h" + +namespace EAthena +{ +class ServerFeatures final : public Net::ServerFeatures +{ + public: + bool haveOnlineList() const override final; +}; + +} // namespace Net + +#endif // NET_EATHENA_SERVERFEATURES_H diff --git a/src/net/net.cpp b/src/net/net.cpp index 63a348bde..c238731a5 100644 --- a/src/net/net.cpp +++ b/src/net/net.cpp @@ -50,6 +50,7 @@ Net::SkillHandler *skillHandler = nullptr; Net::TradeHandler *tradeHandler = nullptr; Net::BeingHandler *beingHandler = nullptr; Net::BuySellHandler *buySellHandler = nullptr; +Net::ServerFeatures *serverFeatures = nullptr; Net::AdminHandler *Net::getAdminHandler() { @@ -131,6 +132,11 @@ Net::BuySellHandler *Net::getBuySellHandler() return buySellHandler; } +Net::ServerFeatures *Net::getServerFeatures() +{ + return serverFeatures; +} + namespace Net { ServerInfo::Type networkType = ServerInfo::UNKNOWN; diff --git a/src/net/net.h b/src/net/net.h index 376bf63e3..a1267e77a 100644 --- a/src/net/net.h +++ b/src/net/net.h @@ -52,6 +52,7 @@ class PlayerHandler; class SkillHandler; class TradeHandler; class BuySellHandler; +class ServerFeatures; AdminHandler *getAdminHandler() A_WARN_UNUSED; BeingHandler *getBeingHandler() A_WARN_UNUSED; @@ -70,6 +71,8 @@ SkillHandler *getSkillHandler() A_WARN_UNUSED; TradeHandler *getTradeHandler() A_WARN_UNUSED; BuySellHandler *getBuySellHandler() A_WARN_UNUSED; +ServerFeatures *getServerFeatures() A_WARN_UNUSED; + ServerInfo::Type getNetworkType() A_WARN_UNUSED; /** diff --git a/src/net/serverfeatures.h b/src/net/serverfeatures.h new file mode 100644 index 000000000..a2170c44b --- /dev/null +++ b/src/net/serverfeatures.h @@ -0,0 +1,39 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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, see . + */ + +#ifndef NET_SERVERFEATURES_H +#define NET_SERVERFEATURES_H + +#include "localconsts.h" + +namespace Net +{ +class ServerFeatures notfinal +{ + public: + virtual ~ServerFeatures() + { } + + virtual bool haveOnlineList() const = 0; +}; + +} // namespace Net + +#endif // NET_SERVERFEATURES_H diff --git a/src/net/tmwa/serverfeatures.cpp b/src/net/tmwa/serverfeatures.cpp new file mode 100644 index 000000000..d2aba176b --- /dev/null +++ b/src/net/tmwa/serverfeatures.cpp @@ -0,0 +1,35 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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, see . + */ + +#include "net/tmwa/serverfeatures.h" + +#include "debug.h" + +extern int serverVersion; + +namespace TmwAthena +{ + +bool ServerFeatures::haveOnlineList() const +{ + return serverVersion >= 3; +} + +} // TmwAthena diff --git a/src/net/tmwa/serverfeatures.h b/src/net/tmwa/serverfeatures.h new file mode 100644 index 000000000..f6daa2eb7 --- /dev/null +++ b/src/net/tmwa/serverfeatures.h @@ -0,0 +1,38 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 2 of the License, or + * 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, see . + */ + +#ifndef NET_TMWA_SERVERFEATURES_H +#define NET_TMWA_SERVERFEATURES_H + +#include "net/serverfeatures.h" + +#include "localconsts.h" + +namespace TmwAthena +{ +class ServerFeatures final : public Net::ServerFeatures +{ + public: + bool haveOnlineList() const override final; +}; + +} // namespace Net + +#endif // NET_TMWA_SERVERFEATURES_H -- cgit v1.2.3-60-g2f50