Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/network/src/network/PacketDecoder.cc @ 203

Last change on this file since 203 was 203, checked in by dumenim, 16 years ago

PacketDecoder takes a packet as argument and not an event

File size: 2.3 KB
Line 
1#include "enet/enet.h"
2#include "PacketManager.h"
3#include <iostream>
4
5using namespace std;
6using namespace network;
7
8PacketDecoder::PacketDecoder(){}
9
10bool PacketDecoder::elaborate( ENetPacket* packet, int clientId )
11{
12        int client = clientId;
13        cout << "clientId: " << client << endl;
14        int id = (int)*packet->data;
15        switch( id ) {
16        case ACK:
17                acknowledgement( packet );
18                return true;
19                break;
20        case MOUSE:
21                mousem( packet );
22                return true;
23                break;
24        case KEYBOARD:
25                keystrike( packet );
26                return true;
27                break;
28        case CHAT:
29                chatMessage( packet );
30                return true;
31                break;
32        }
33        return false;
34}
35
36void PacketDecoder::acknowledgement( ENetPacket* packet )
37{
38        ack* a = new ack;
39        *a = *(ack*)packet->data;
40        printAck( a );
41}
42
43void PacketDecoder::mousem( ENetPacket* packet )
44{
45        mouse* mouseMove = new mouse;
46        *mouseMove = *(mouse*)packet->data;
47        printMouse( mouseMove );
48}
49
50void PacketDecoder::keystrike( ENetPacket* packet )
51{
52        keyboard* key = new keyboard;
53        *key = *(keyboard*)packet->data;
54        printKey( key );
55}
56
57void PacketDecoder::chatMessage( ENetPacket* packet )
58{
59        chat* chatting = new chat;
60        chatting->id = (int)*packet->data;
61        char* reserve = new char[packet->dataLength-4];
62        memcpy( &reserve[0], packet->data+sizeof(int), packet->dataLength-4 );
63        chatting->message = reserve;
64        printChat( chatting );
65}
66/*
67void PacketDecoder::printPeer( ENetPeer* peer )
68{
69        cout << "number of chanels:   " << peer->channelCount << endl;
70        cout << "incomming bandwidth: " << peer->incomingBandwidth << endl;
71        cout << "outgoing bandwidth:  " << peer->outgoingBandwidth << endl;
72        cout << "peer id:             " << peer->sessionID << endl;
73        cout << "outgoing peer id:    " << peer->outgoingPeerID << endl;
74        cout << "incomming peer id:   " << peer->incomingPeerID << endl;
75        cout << "state of peer:       " << peer->state << endl;
76}
77*/
78void PacketDecoder::printAck( ack* data )
79{
80        cout << "data id: " << data->id << endl;
81        cout << "data:    " << data->a << endl;
82}
83
84void PacketDecoder::printMouse( mouse* data )
85{
86        cout << "data id: " << data->id << endl;
87        cout << "data:    " << data->x << " " << data->y << endl;
88}
89
90void PacketDecoder::printKey( keyboard* data )
91{
92        cout << "data id: " << data->id << endl;
93        cout << "data:    " << (char)data->press << endl;
94}
95
96void PacketDecoder::printChat( chat* data )
97{
98        cout << "data id: " << data->id << endl;
99        cout << "data:    " << data->message << endl;
100}
Note: See TracBrowser for help on using the repository browser.