Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/signals.h')
-rw-r--r--src/core/signals.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/signals.h b/src/core/signals.h
new file mode 100644
index 0000000..88841ea
--- /dev/null
+++ b/src/core/signals.h
@@ -0,0 +1,51 @@
+/*
+ core/signals.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_CORE_SIGNALS_H__
+#define __INCLUDED_CORE_SIGNALS_H__
+
+#include <list>
+
+#include "core/player.h"
+
+namespace core
+{
+
+/**
+ * @brief a signal is a confirmation request from one player to another.
+ */
+class Signal {
+public:
+ /// signal types
+ enum Signals {Trade = 1, Dock = 2, Chat = 3};
+
+ /// current state of a signal
+ enum State {Rejected = 0, Accepted = 1, Pending = 2};
+
+
+ /// type definition for the signal registry
+ typedef std::list<Signal*> Registry;
+
+ static void send(Player *sender, Player *receiver, Signals signal);
+
+ static void init();
+
+ static void done();
+
+ static void clear();
+
+private:
+ Signals signal_type;
+ State signal_state;
+ unsigned long signal_timestamp;
+
+ static Registry signal_registry;
+};
+
+}
+
+#endif // __INCLUDED_CORE_SIGNALS_H__
+