summaryrefslogtreecommitdiff
path: root/automation.h
blob: 0f563fe28f8a1677f00c7380064aa29476104e32 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* 
 *
 * 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);
};