summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-05 17:30:36 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-06 01:18:57 +0300
commit487d3be4cc8761e5697d4fb95d85e9da8dcaa42e (patch)
tree51ad4b1a6e89fd10a5a30a951879862494264c53
parente4aea077d98d37ddec91c76ca7ad359e321a7661 (diff)
downloadmv-487d3be4cc8761e5697d4fb95d85e9da8dcaa42e.tar.gz
mv-487d3be4cc8761e5697d4fb95d85e9da8dcaa42e.tar.bz2
mv-487d3be4cc8761e5697d4fb95d85e9da8dcaa42e.tar.xz
mv-487d3be4cc8761e5697d4fb95d85e9da8dcaa42e.zip
Add serverfeatures class for check is server support one or another features.
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/Makefile.am5
-rw-r--r--src/net/eathena/serverfeatures.cpp33
-rw-r--r--src/net/eathena/serverfeatures.h38
-rw-r--r--src/net/net.cpp6
-rw-r--r--src/net/net.h3
-rw-r--r--src/net/serverfeatures.h39
-rw-r--r--src/net/tmwa/serverfeatures.cpp35
-rw-r--r--src/net/tmwa/serverfeatures.h38
9 files changed, 202 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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