Changeset b35b2b2 in network-game
- Timestamp:
- Jul 29, 2013, 10:32:59 PM (11 years ago)
- Branches:
- master
- Children:
- d05086b
- Parents:
- 297682c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
client/Client/main.cpp
r297682c rb35b2b2 28 28 29 29 #include "../../common/Common.h" 30 #include "../../common/MessageContainer.h" 30 31 #include "../../common/MessageProcessor.h" 31 32 #include "../../common/WorldMap.h" … … 63 64 void quit(); 64 65 void sendChatMessage(); 66 void toggleDebugging(); 67 void drawMessageStatus(ALLEGRO_FONT* font); 65 68 66 69 void error(const char *); … … 82 85 Window* wndRegister; 83 86 Window* wndMain; 87 Window* wndMainDebug; 84 88 Window* wndCurrent; 85 89 … … 103 107 NETWORK_MSG msgTo, msgFrom; 104 108 string username; 105 chat chatConsole; 109 chat chatConsole, debugConsole; 110 bool debugging; 106 111 107 112 MessageProcessor msgProcessor; … … 120 125 int scoreBlue, scoreRed; 121 126 bool fullscreen = false; 127 debugging = false; 122 128 123 129 scoreBlue = 0; … … 183 189 184 190 cout << "Loaded map" << endl; 191 192 debugConsole.addLine("Debug console:"); 193 debugConsole.addLine(""); 185 194 186 195 wndLogin = new Window(0, 0, SCREEN_W, SCREEN_H); … … 193 202 wndLogin->addComponent(new Button(SCREEN_W/2+10, 130, 90, 20, font, "Login", login)); 194 203 wndLogin->addComponent(new Button(920, 10, 80, 20, font, "Quit", quit)); 204 wndLogin->addComponent(new Button(20, 10, 160, 20, font, "Toggle Debugging", toggleDebugging)); 195 205 196 206 txtUsername = (Textbox*)wndLogin->getComponent(0); … … 210 220 wndRegister->addComponent(new Button(SCREEN_W/2+10, 220, 90, 20, font, "Submit", registerAccount)); 211 221 wndRegister->addComponent(new Button(920, 10, 80, 20, font, "Quit", quit)); 222 wndRegister->addComponent(new Button(20, 10, 160, 20, font, "Toggle Debugging", toggleDebugging)); 212 223 213 224 txtUsernameRegister = (Textbox*)wndRegister->getComponent(0); … … 225 236 wndMain->addComponent(new Textbox(95, 40, 300, 20, font)); 226 237 wndMain->addComponent(new Button(95, 70, 60, 20, font, "Send", sendChatMessage)); 238 wndMain->addComponent(new Button(20, 10, 160, 20, font, "Toggle Debugging", toggleDebugging)); 227 239 wndMain->addComponent(new Button(920, 10, 80, 20, font, "Logout", logout)); 228 240 229 241 txtChat = (Textbox*)wndMain->getComponent(0); 242 243 wndMainDebug = new Window(0, 0, SCREEN_W, SCREEN_H); 244 wndMainDebug->addComponent(new Button(20, 10, 160, 20, font, "Toggle Debugging", toggleDebugging)); 245 wndMainDebug->addComponent(new Button(920, 10, 80, 20, font, "Logout", logout)); 230 246 231 247 cout << "Created main screen" << endl; … … 391 407 392 408 msgProcessor.resendUnackedMessages(sock); 393 msgProcessor.cleanAckedMessages(); 394 395 wndCurrent->draw(display); 409 //msgProcessor.cleanAckedMessages(); 410 411 if (debugging && wndCurrent == wndMain) 412 wndMainDebug->draw(display); 413 else 414 wndCurrent->draw(display); 396 415 397 416 if(wndCurrent == wndMain) { 398 chatConsole.draw(font, al_map_rgb(255,255,255)); 417 if (!debugging) 418 chatConsole.draw(font, al_map_rgb(255,255,255)); 399 419 400 420 al_draw_text(font, al_map_rgb(0, 255, 0), 4, 43, ALLEGRO_ALIGN_LEFT, "Message:"); … … 449 469 al_draw_line(start.x, start.y, end.x, end.y, al_map_rgb(0, 0, 0), 4); 450 470 } 471 } 472 473 if (debugging) { 474 //debugConsole.draw(font, al_map_rgb(255,255,255)); 475 drawMessageStatus(font); 451 476 } 452 477 … … 977 1002 } 978 1003 979 int getRefreshRate(int width, int height) { 1004 void toggleDebugging() 1005 { 1006 debugging = !debugging; 1007 } 1008 1009 int getRefreshRate(int width, int height) 1010 { 980 1011 int numRefreshRates = al_get_num_display_modes(); 981 1012 ALLEGRO_DISPLAY_MODE displayMode; … … 990 1021 return 0; 991 1022 } 1023 1024 void drawMessageStatus(ALLEGRO_FONT* font) 1025 { 1026 int clientMsgOffset = 0; 1027 int serverMsgOffset = 650; 1028 1029 al_draw_text(font, al_map_rgb(0, 255, 255), 5, 43, ALLEGRO_ALIGN_LEFT, "ID"); 1030 al_draw_text(font, al_map_rgb(0, 255, 255), 25, 43, ALLEGRO_ALIGN_LEFT, "Type"); 1031 al_draw_text(font, al_map_rgb(0, 255, 255), 245, 43, ALLEGRO_ALIGN_LEFT, "Acked?"); 1032 1033 al_draw_text(font, al_map_rgb(0, 255, 255), 5+serverMsgOffset, 43, ALLEGRO_ALIGN_LEFT, "ID"); 1034 al_draw_text(font, al_map_rgb(0, 255, 255), 25+serverMsgOffset, 43, ALLEGRO_ALIGN_LEFT, "Type"); 1035 1036 map<unsigned int, map<unsigned long, MessageContainer> >& sentMessages = msgProcessor.getSentMessages(); 1037 int id, type; 1038 bool acked; 1039 ostringstream ossId, ossAcked; 1040 1041 map<unsigned int, map<unsigned long, MessageContainer> >::iterator it; 1042 1043 int msgCount = 0; 1044 for (it = sentMessages.begin(); it != sentMessages.end(); it++) { 1045 map<unsigned long, MessageContainer> playerMessage = it->second; 1046 map<unsigned long, MessageContainer>::iterator it2; 1047 for (it2 = playerMessage.begin(); it2 != playerMessage.end(); it2++) { 1048 1049 id = it->first; 1050 ossId.str("");; 1051 ossId << id; 1052 1053 type = it2->second.getMessage()->type; 1054 string typeStr = MessageContainer::getMsgTypeString(type); 1055 1056 acked = it2->second.getAcked(); 1057 ossAcked.str("");; 1058 ossAcked << boolalpha << acked; 1059 1060 al_draw_text(font, al_map_rgb(0, 255, 0), 5, 60+15*msgCount, ALLEGRO_ALIGN_LEFT, ossId.str().c_str()); 1061 al_draw_text(font, al_map_rgb(0, 255, 0), 25, 60+15*msgCount, ALLEGRO_ALIGN_LEFT, typeStr.c_str()); 1062 al_draw_text(font, al_map_rgb(0, 255, 0), 245, 60+15*msgCount, ALLEGRO_ALIGN_LEFT, ossAcked.str().c_str()); 1063 1064 msgCount++; 1065 } 1066 } 1067 1068 map<unsigned int, MessageContainer>& ackedMessages = msgProcessor.getAckedMessages(); 1069 map<unsigned int, MessageContainer>::iterator it3; 1070 1071 msgCount = 0; 1072 for (it3 = ackedMessages.begin(); it3 != ackedMessages.end(); it3++) { 1073 ossId.str("");; 1074 ossId << it3->first; 1075 1076 string typeStr = MessageContainer::getMsgTypeString(it3->second.getMessage()->type); 1077 1078 al_draw_text(font, al_map_rgb(255, 0, 0), 5+serverMsgOffset, 60+15*msgCount, ALLEGRO_ALIGN_LEFT, ossId.str().c_str()); 1079 al_draw_text(font, al_map_rgb(255, 0, 0), 25+serverMsgOffset, 60+15*msgCount, ALLEGRO_ALIGN_LEFT, typeStr.c_str()); 1080 1081 msgCount++; 1082 } 1083 } -
common/MessageContainer.cpp
r297682c rb35b2b2 48 48 this->timeAcked = time; 49 49 } 50 51 /* 52 string getMsgTypeString(int msgType) { 53 switch(msgType) { 54 case MSG_TYPE_ACK: return "MSG_TYPE_ACK"; 55 case MSG_TYPE_REGISTER: return "MSG_TYPE_REGISTER"; 56 case MSG_TYPE_LOGIN: return "MSG_TYPE_LOGIN"; 57 case MSG_TYPE_LOGOUT: return "MSG_TYPE_LOGOUT"; 58 case MSG_TYPE_CHAT: return "MSG_TYPE_CHAT"; 59 case MSG_TYPE_PLAYER: return "MSG_TYPE_PLAYER"; 60 case MSG_TYPE_PLAYER_MOVE: return "MSG_TYPE_PLAYER_MOVE"; 61 case MSG_TYPE_OBJECT: return "MSG_TYPE_OBJECT"; 62 case MSG_TYPE_REMOVE_OBJECT: return "MSG_TYPE_REMOVE_OBJECT"; 63 case MSG_TYPE_PICKUP_FLAG: return "MSG_TYPE_PICKUP_FLAG"; 64 caseMSG_TYPE_DROP_FLAG: return "MSG_TYPE_DROP_FLAG"; 65 case MSG_TYPE_SCORE: return "MSG_TYPE_SCORE"; 66 case MSG_TYPE_START_ATTACK: return "MSG_TYPE_START_ATACK"; 67 case MSG_TYPE_ATTACK: return "MSG_TYPE_ATTACK"; 68 case MSG_TYPE_PROJECTILE: return "MSG_TYPE_PROJECTILE"; 69 case MSG_TYPE_REMOVE_PROJECTILE: return "MSG_TYPE_REMOVE_PROJECTILE"; 70 default: return "Unknown"; 71 } 72 } 73 */ -
common/MessageContainer.h
r297682c rb35b2b2 3 3 4 4 #include "Compiler.h" 5 6 #include <string> 5 7 6 8 #if defined WINDOWS … … 10 12 #include <netinet/in.h> 11 13 #endif 14 15 using namespace std; 12 16 13 17 #define MSG_TYPE_ACK 1 … … 54 58 void setAcked(bool acked); 55 59 void setTimeAcked(unsigned long long time); 60 61 static string getMsgTypeString(int msgType) { 62 switch(msgType) { 63 case MSG_TYPE_ACK: return "MSG_TYPE_ACK"; 64 case MSG_TYPE_REGISTER: return "MSG_TYPE_REGISTER"; 65 case MSG_TYPE_LOGIN: return "MSG_TYPE_LOGIN"; 66 case MSG_TYPE_LOGOUT: return "MSG_TYPE_LOGOUT"; 67 case MSG_TYPE_CHAT: return "MSG_TYPE_CHAT"; 68 case MSG_TYPE_PLAYER: return "MSG_TYPE_PLAYER"; 69 case MSG_TYPE_PLAYER_MOVE: return "MSG_TYPE_PLAYER_MOVE"; 70 case MSG_TYPE_OBJECT: return "MSG_TYPE_OBJECT"; 71 case MSG_TYPE_REMOVE_OBJECT: return "MSG_TYPE_REMOVE_OBJECT"; 72 case MSG_TYPE_PICKUP_FLAG: return "MSG_TYPE_PICKUP_FLAG"; 73 case MSG_TYPE_DROP_FLAG: return "MSG_TYPE_DROP_FLAG"; 74 case MSG_TYPE_SCORE: return "MSG_TYPE_SCORE"; 75 case MSG_TYPE_START_ATTACK: return "MSG_TYPE_START_ATACK"; 76 case MSG_TYPE_ATTACK: return "MSG_TYPE_ATTACK"; 77 case MSG_TYPE_PROJECTILE: return "MSG_TYPE_PROJECTILE"; 78 case MSG_TYPE_REMOVE_PROJECTILE: return "MSG_TYPE_REMOVE_PROJECTILE"; 79 default: return "Unknown"; 80 } 81 } 56 82 }; 57 83 -
common/MessageProcessor.cpp
r297682c rb35b2b2 52 52 cout << "Got message of type " << msg->type << endl; 53 53 54 ackedMessages[msg->id] = getCurrentMillis(); 54 ackedMessages[msg->id] = MessageContainer(*msg, *source); 55 ackedMessages[msg->id].setAcked(true); 56 ackedMessages[msg->id].setTimeAcked(getCurrentMillis()); 55 57 56 58 NETWORK_MSG ack; … … 68 70 69 71 void MessageProcessor::resendUnackedMessages(int sock) { 70 map< int, map<unsigned long, MessageContainer> >::iterator it;72 map<unsigned int, map<unsigned long, MessageContainer> >::iterator it; 71 73 map<unsigned long, MessageContainer>::iterator it2; 72 74 map<unsigned long, MessageContainer> sentMsg; … … 83 85 84 86 void MessageProcessor::cleanAckedMessages() { 85 map< int, map<unsigned long, MessageContainer> >::iterator it = sentMessages.begin();87 map<unsigned int, map<unsigned long, MessageContainer> >::iterator it = sentMessages.begin(); 86 88 map<unsigned long, MessageContainer>::iterator it2; 87 89 … … 104 106 } 105 107 108 /* 106 109 map<unsigned int, unsigned long long>::iterator it3 = ackedMessages.begin(); 107 110 … … 112 115 it3++; 113 116 } 117 */ 114 118 } 119 120 map<unsigned int, map<unsigned long, MessageContainer> >& MessageProcessor::getSentMessages() { 121 return this->sentMessages; 122 } 123 124 map<unsigned int, MessageContainer>& MessageProcessor::getAckedMessages() { 125 return this->ackedMessages; 126 } -
common/MessageProcessor.h
r297682c rb35b2b2 13 13 14 14 // map from message ids to maps from player addresses to message info 15 map< int, map<unsigned long, MessageContainer> > sentMessages;15 map<unsigned int, map<unsigned long, MessageContainer> > sentMessages; 16 16 17 17 // map from message ids to the time each mesage was acked 18 map<unsigned int, unsigned long long> ackedMessages;18 map<unsigned int, MessageContainer> ackedMessages; 19 19 20 20 unsigned long pid; … … 28 28 void resendUnackedMessages(int sock); 29 29 void cleanAckedMessages(); 30 31 map<unsigned int, map<unsigned long, MessageContainer> >& getSentMessages(); 32 map<unsigned int, MessageContainer>& getAckedMessages(); 30 33 }; 31 34
Note:
See TracChangeset
for help on using the changeset viewer.