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/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 +++++++++++++++++++++++++++++++++++++ 7 files changed, 192 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 (limited to 'src/net') 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-70-g09d2