Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/base/faction.cc31
-rw-r--r--src/game/base/faction.h30
2 files changed, 53 insertions, 8 deletions
diff --git a/src/game/base/faction.cc b/src/game/base/faction.cc
index 5b89e8c..07c0a3a 100644
--- a/src/game/base/faction.cc
+++ b/src/game/base/faction.cc
@@ -9,6 +9,8 @@
#include "core/range.h"
#include "base/faction.h"
+#include <iomanip>
+
#include <cassert>
namespace game {
@@ -18,7 +20,24 @@ Faction *Faction::faction_default = 0;
void func_list_faction(const std::string &args)
{
- Faction::list();
+ if (args.size())
+ {
+ std::istringstream is(args);
+ std::string label;
+
+ if (is >> label) {
+ aux::to_label(label);
+ Faction *faction = Faction::find(label);
+ if (!faction) {
+ con_warn << "Unknown faction '" << label << "'" << std::endl;
+ } else {
+ faction->print();
+ }
+ }
+ } else {
+ Faction::list();
+ return;
+ }
}
Faction *Faction::find(const std::string & label)
@@ -35,6 +54,16 @@ void Faction::list()
core::Info::list(faction_infotype);
}
+void Faction::print() const
+{
+ core::Info::print();
+
+ con_print << " ^BFaction repution" << std::endl;
+ for (core::Reputation::FactionReps::const_iterator rip = reputation().factionreps().begin(); rip != reputation().factionreps().end(); ++rip) {
+ con_print << " ^B" << std::setw(4) << (*rip)->reputation() << " ^N" << (*rip)->faction()->label() << std::endl;
+ }
+}
+
bool Faction::init()
{
// initialize faction InfoType
diff --git a/src/game/base/faction.h b/src/game/base/faction.h
index 551ce7b..0513bc3 100644
--- a/src/game/base/faction.h
+++ b/src/game/base/faction.h
@@ -24,25 +24,37 @@ public:
/* --- inspectors ------------------------------------------------- */
- inline const math::Color & color() const {
+ inline const math::Color & color() const
+ {
return faction_color;
}
- inline const math::Color & color_second() const {
+ inline const math::Color & color_second() const
+ {
return faction_color_second;
}
-
+
+ /**
+ * @brief faction reputation
+ * */
+ inline const core::Reputation & reputation() const
+ {
+ return faction_reputation;
+ }
+
/**
* @brief faction reputation
* */
- inline core::Reputation & reputation() {
+ inline core::Reputation & reputation()
+ {
return faction_reputation;
}
/**
* @brief player reputation with a specific faction
* */
- inline const float reputation(const core::Info *faction) const {
+ inline const float reputation(const core::Info *faction) const
+ {
if (faction == this) {
return 100.0f;
} else {
@@ -59,11 +71,13 @@ public:
/* --- mutators --------------------------------------------------- */
- inline void set_color(const math::Color &color) {
+ inline void set_color(const math::Color &color)
+ {
faction_color.assign(color);
}
- inline void set_color_second(const math::Color &color_second) {
+ inline void set_color_second(const math::Color &color_second)
+ {
faction_color_second.assign(color_second);
}
@@ -77,6 +91,8 @@ public:
*/
void apply_sale(core::Player *player, const float amount) const;
+ virtual void print() const;
+
/* --- static ----------------------------------------------------- */
/**