/*
* guilds.h
* Header file for guilds
* ____ _
* | _ \ ___ __ _| |_ __ ___ ___
* | |_) / _ \/ _` | | '_ ` _ \/ __|
* | _ < __/ (_| | | | | | | \__ \
* |_| \_\___|\__,_|_|_| |_| |_|___/
*
* Permission to use, modify and distribute is granted via the
* Creative Commons - Attribution - Non Commercial - Share Alike 3.0 License
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* Copyright (C) 2007-2012 Jason Mitchell, Randi Mitchell
* Contributions by Tim Callahan, Jonathan Hseu
* Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman
*
*/
#ifndef GUILDS_H_
#define GUILDS_H_
class Property;
class UniqueRoom;
bool shopStaysWithGuild(const UniqueRoom* shop);
class GuildCreation {
public:
GuildCreation();
bool addSupporter(Player* supporter);
bool removeSupporter(bstring supporterName);
void renameSupporter(bstring oldName, bstring newName);
bool saveToXml(xmlNodePtr rootNode) const;
public:
bstring name;
bstring leader;
bstring leaderIp;
int status;
int numSupporters;
// first = name
// second = ip
std::map<bstring, bstring> supporters;
};
class Guild {
public:
Guild();
Guild(xmlNodePtr curNode);
void recalcLevel();
int averageLevel();
bool addMember(bstring memberName);
bool delMember(bstring memberName);
bool isMember(bstring memberName);
void renameMember(bstring oldName, bstring newName);
void parseGuildMembers(xmlNodePtr cur);
bool saveToXml(xmlNodePtr rootNode) const;
static bool requireInside(Player* player, UniqueRoom* room);
static void create(Player* player, cmd* cmnd);
static void forum(Player* player, cmd* cmnd);
static void cancel(Player* player, cmd* cmnd);
static void support(Player* player, cmd* cmnd);
static void invite(Player* player, cmd* cmnd);
static void abdicate(Player* player, cmd* cmnd);
static void abdicate(Player* player, Player* target, bool online=true);
static void remove(Player* player, cmd* cmnd);
static void join(Player* player, cmd *cmnd);
static void reject(Player* player, cmd* cmnd);
static void disband(Player* player, cmd* cmnd);
static void list(Player* player, cmd* cmnd);
static void viewMembers(Player* player, cmd* cmnd);
static void promote(Player* player, cmd* cmnd);
static void demote(Player* player, cmd* cmnd);
public:
std::list<bstring> members;
Money bank;
bstring getName() const;
unsigned short getNum() const;
bstring getLeader() const;
long getLevel() const;
int getNumMembers() const;
long getPkillsIn() const;
long getPkillsWon() const;
long getPoints() const;
void setName(bstring n);
void setNum(unsigned short n);
void setLeader(bstring l);
void setLevel(long l);
void setNumMembers(int n);
void setPkillsIn(long pk);
void setPkillsWon(long pk);
void setPoints(long p);
void incLevel(int l=1);
void incNumMembers(int n=1);
void incPkillsIn(long pk=1);
void incPkillsWon(long pk=1);
void guildhallLocations(const Player* player, const char* fmt) const;
protected:
bstring name;
unsigned short num;
bstring leader;
long level; // Sum of everyone's level in the guild
int numMembers; // Number of members in the guild
long pkillsIn;
long pkillsWon;
long points; // Points from quests/etc
};
#endif /*GUILDS_H_*/