summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/being/playerrelations.cpp124
1 files changed, 64 insertions, 60 deletions
diff --git a/src/being/playerrelations.cpp b/src/being/playerrelations.cpp
index 41d14c2ea..238f96642 100644
--- a/src/being/playerrelations.cpp
+++ b/src/being/playerrelations.cpp
@@ -36,82 +36,86 @@
#include "debug.h"
-static const char *const PLAYER_IGNORE_STRATEGY_NOP = "nop";
-static const char *const PLAYER_IGNORE_STRATEGY_EMOTE0 = "emote0";
-static const char *const DEFAULT_IGNORE_STRATEGY
- = PLAYER_IGNORE_STRATEGY_EMOTE0;
-
-static const char *const NAME = "name";
-static const char *const RELATION = "relation";
-
-static const unsigned int IGNORE_EMOTE_TIME = 100;
-
typedef std::map<std::string, PlayerRelation *> PlayerRelations;
typedef PlayerRelations::const_iterator PlayerRelationsCIter;
typedef std::list<PlayerRelationsListener *> PlayerRelationListeners;
typedef PlayerRelationListeners::const_iterator PlayerRelationListenersCIter;
-class SortPlayersFunctor final
+namespace
{
- public:
- bool operator() (const std::string &str1,
- const std::string &str2) const
- {
- std::string s1 = str1;
- std::string s2 = str2;
- toLower(s1);
- toLower(s2);
- if (s1 == s2)
- return str1 < str2;
- return s1 < s2;
- }
-} playersRelSorter;
+ static const char *const PLAYER_IGNORE_STRATEGY_NOP = "nop";
+ static const char *const PLAYER_IGNORE_STRATEGY_EMOTE0 = "emote0";
+ static const char *const DEFAULT_IGNORE_STRATEGY
+ = PLAYER_IGNORE_STRATEGY_EMOTE0;
-// (De)serialisation class
-class PlayerConfSerialiser final :
- public ConfigurationListManager<std::pair<std::string, PlayerRelation *>,
- std::map<std::string, PlayerRelation *> *>
-{
-public:
- ConfigurationObject *writeConfigItem(
- const std::pair<std::string, PlayerRelation *> &value,
- ConfigurationObject *const cobj) const override final
- {
- if (!cobj || !value.second)
- return nullptr;
- cobj->setValue(NAME, value.first);
- cobj->setValue(RELATION, toString(
- static_cast<int>(value.second->mRelation)));
+ static const char *const NAME = "name";
+ static const char *const RELATION = "relation";
- return cobj;
- }
+ static const unsigned int IGNORE_EMOTE_TIME = 100;
- std::map<std::string, PlayerRelation *> *
- readConfigItem(const ConfigurationObject *const cobj,
- std::map<std::string, PlayerRelation *>
- *const container) const override final
+ class SortPlayersFunctor final
{
- if (!cobj)
- return container;
- const std::string name = cobj->getValue(NAME, "");
- if (name.empty())
- return container;
+ public:
+ bool operator() (const std::string &str1,
+ const std::string &str2) const
+ {
+ std::string s1 = str1;
+ std::string s2 = str2;
+ toLower(s1);
+ toLower(s2);
+ if (s1 == s2)
+ return str1 < str2;
+ return s1 < s2;
+ }
+ } playersRelSorter;
+
+ // (De)serialisation class
+ class PlayerConfSerialiser final :
+ public ConfigurationListManager<std::pair<std::string,
+ PlayerRelation *>, std::map<std::string, PlayerRelation *> *>
+ {
+ public:
+ ConfigurationObject *writeConfigItem(
+ const std::pair<std::string, PlayerRelation *> &value,
+ ConfigurationObject *const cobj) const override final
+ {
+ if (!cobj || !value.second)
+ return nullptr;
+ cobj->setValue(NAME, value.first);
+ cobj->setValue(RELATION, toString(
+ static_cast<int>(value.second->mRelation)));
- if (!(*container)[name])
+ return cobj;
+ }
+
+ std::map<std::string, PlayerRelation *> *
+ readConfigItem(const ConfigurationObject *const cobj,
+ std::map<std::string, PlayerRelation *>
+ *const container) const override final
{
- const int v = cobj->getValueInt(RELATION,
- static_cast<int>(PlayerRelation::NEUTRAL));
+ if (!cobj)
+ return container;
+ const std::string name = cobj->getValue(NAME, "");
+ if (name.empty())
+ return container;
+
+ if (!(*container)[name])
+ {
+ const int v = cobj->getValueInt(RELATION,
+ static_cast<int>(PlayerRelation::NEUTRAL));
+
+ (*container)[name] = new PlayerRelation(
+ static_cast<PlayerRelation::Relation>(v));
+ }
+ // otherwise ignore the duplicate entry
- (*container)[name] = new PlayerRelation(
- static_cast<PlayerRelation::Relation>(v));
+ return container;
}
- // otherwise ignore the duplicate entry
+ };
- return container;
- }
-};
+ static PlayerConfSerialiser player_conf_serialiser; // stateless singleton
-static PlayerConfSerialiser player_conf_serialiser; // stateless singleton
+} // namespace
const unsigned int PlayerRelation::RELATION_PERMISSIONS[RELATIONS_NR] =
{