Hi Leute!
In letzter Zeit habe ich mir lange Gedanken darüber gemacht, wie denn die Struktur von meinem Spiel aussehen soll. Als Spielverwaltungs-Instanz habe ich mir da einen native C++ Event-Handler gemacht. Dieser sollte prinzipiell genau das sein was ich suche (bin amateur
wisst ihr was besseres? hatte schon n switch-statement aber des wollt ich ja grade weg haben), doch ich bekomm es leider nicht auf die Reihe mein System so global zur Verfügung zu stellen, dass jede Klasse alle Events (die irgendwo von irgendwas geworfen wurden) verarbeiten kann. Dies funktioniert nur innerhalb einer Klasse.
Hier mein Code (hab ich aus der MSDN geklaut ;D )
Event-Sender:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//event-sender class
[event_source(native)]
class CESender
{
public:
CESender(void);
~CESender(void);
__event void MyEvent(EDXMESSAGE Message);
};
|
Event-Receiver:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//event-receiver class
[event_receiver(native)]
class CEReceiver
{
public:
CEReceiver(void);
~CEReceiver(void);
void DxAppEventHandler(EDXMESSAGE Message);
void hookEvent(CESender* pSource) {
__hook(&CESender::MyEvent, pSource, &CEReceiver::DxAppEventHandler);
}
void unhookEvent(CESender* pSource) {
__unhook(&CESender::MyEvent, pSource, &CEReceiver::DxAppEventHandler);
}
};
|
und so bind ich das ganze ein:
|
Quellcode
|
1
2
3
4
5
6
7
|
#include "CDxEvent.h"
#ifndef CEVENT_CREATED
static CESender* ESender = new CESender();
static CEReceiver* EReceiver = new CEReceiver();
#define CEVENT_CREATED
#endif
|
Diese Datei include ich dann überall wo ich den EventHandler benutzen will. Nur leider kann ich damit net zwischen zwei Objekten die den Header haben Events versenden
Please Help!