Client now handles character rejections

This commit is contained in:
Kayne Ruse
2014-09-10 16:57:35 +10:00
parent 17b9eb7ad4
commit 712d94d3b2
4 changed files with 19 additions and 10 deletions
+17 -1
View File
@@ -73,6 +73,14 @@ InWorld::InWorld(
//TODO: Tile size and tile sheet should be loaded elsewhere
tileSheet.Load(config["dir.tilesets"] + "terrain.bmp", 32, 32);
//send this player's character info
CharacterPacket newPacket;
newPacket.type = SerialPacketType::CHARACTER_NEW;
strncpy(newPacket.handle, config["client.handle"].c_str(), PACKET_STRING_SIZE);
strncpy(newPacket.avatar, config["client.avatar"].c_str(), PACKET_STRING_SIZE);
newPacket.accountIndex = accountIndex;
network.SendTo(Channels::SERVER, &newPacket);
//request a sync
RequestSynchronize();
@@ -302,6 +310,9 @@ void InWorld::HandlePacket(SerialPacket* const argPacket) {
case SerialPacketType::CHARACTER_UPDATE:
HandleCharacterUpdate(static_cast<CharacterPacket*>(argPacket));
break;
case SerialPacketType::CHARACTER_REJECTION:
HandleCharacterRejection(static_cast<TextPacket*>(argPacket));
break;
case SerialPacketType::REGION_CONTENT:
HandleRegionContent(static_cast<RegionPacket*>(argPacket));
break;
@@ -389,7 +400,6 @@ void InWorld::HandleCharacterDelete(CharacterPacket* const argPacket) {
void InWorld::HandleCharacterUpdate(CharacterPacket* const argPacket) {
if (characterMap.find(argPacket->characterIndex) == characterMap.end()) {
std::cout << "Warning: HandleCharacterUpdate() is passing to HandleCharacterNew()" << std::endl;
HandleCharacterNew(argPacket);
return;
}
@@ -404,6 +414,12 @@ void InWorld::HandleCharacterUpdate(CharacterPacket* const argPacket) {
}
}
void InWorld::HandleCharacterRejection(TextPacket* const argPacket) {
std::cerr << "Error: " << argPacket->text << std::endl;
RequestDisconnect();
SetNextScene(SceneList::CLEANUP);
}
void InWorld::HandleRegionContent(RegionPacket* const argPacket) {
//replace existing regions
regionPager.UnloadRegion(argPacket->x, argPacket->y);
+1
View File
@@ -83,6 +83,7 @@ protected:
void HandleCharacterNew(CharacterPacket* const);
void HandleCharacterDelete(CharacterPacket* const);
void HandleCharacterUpdate(CharacterPacket* const);
void HandleCharacterRejection(TextPacket* const);
void HandleRegionContent(RegionPacket* const);
//Server control
-8
View File
@@ -223,14 +223,6 @@ void LobbyMenu::HandleJoinResponse(ClientPacket* const argPacket) {
accountIndex = argPacket->accountIndex;
network.Bind(argPacket->srcAddress, Channels::SERVER);
SetNextScene(SceneList::INWORLD);
//send this player's character info
CharacterPacket newPacket;
newPacket.type = SerialPacketType::CHARACTER_NEW;
strncpy(newPacket.handle, config["client.handle"].c_str(), PACKET_STRING_SIZE);
strncpy(newPacket.avatar, config["client.avatar"].c_str(), PACKET_STRING_SIZE);
newPacket.accountIndex = accountIndex;
network.SendTo(Channels::SERVER, &newPacket);
}
void LobbyMenu::HandleJoinRejection(TextPacket* const argPacket) {
+1 -1
View File
@@ -185,7 +185,7 @@ void ServerApplication::HandleCharacterNew(CharacterPacket* const argPacket) {
if (characterIndex == -1) {
msg += "Character already loaded: ";
}
else if (characterIndex == -1) {
else if (characterIndex == -2) {
msg += "Character already exists: ";
}
msg += argPacket->handle;