summaryrefslogblamecommitdiff
path: root/src/automation.h
blob: 0f563fe28f8a1677f00c7380064aa29476104e32 (plain) (tree)












































































                                                                                                        
/* 
 *
 * Automation.h: The Ruined Place Chat Bot.
 *
 */

#include <iostream>
#include <string>
#include <set>


	
extern bool automation;

struct member
{
	std::string name;	
	std::string guildName; /* Now suports more than one group */
	int status; // 0 = offline, 1 = online
	int accesslevel; // -1 = blocked, 0 = normal member, 10 = guildmaster, 20 = admin.
	/* Note: blocked users do not have there online status updated, so don't recieve any messages.*/
	int info; /* 0 = hide info messages, 1 = show info messages*/	

	bool operator<(const member &a) const
           { return name < a.name; }
};

struct memberinvite
{
	std::string name;
	std::string guildName;

	bool operator<(const memberinvite &a) const
           { return name < a.name; }
};

struct whispermsg
{
	std::string name;
	std::string message;
};

class Automation
{
    public:

	Automation();
        ~Automation();
	static Automation *getAutomationHandler();

	void commandHandler(std::string message, std::string nick);
        void logic();

	void addMember(std::string name, std::string guildName, int access);
	void removeMember(std::string name);
	bool inGuild(std::string name);
	void addMessage(std::string msg, std::string guildName, std::string sender, int p);
        void updateOnline(std::set<std::string> &onlinePlayers);
        int countOnline(std::string guildName);
	int accessLevel(std::string name);
	void saveMembers();
	void loadMembers();
	void whisper(std::string name, std::string msg, int priority);
        void showOptions();
        std::string colorText(std::string text);

        
    private:
        std::string getMOTD(std::string guild);
	void testMsg();
        void debugMsg(std::string msg);
        member findByName(std::string name);
        void clearMembers();
        bool hasPermission(std::string user, std::string player, int changeLevel);
};