Client now handles character rejections
This commit is contained in:
@@ -73,6 +73,14 @@ InWorld::InWorld(
|
|||||||
//TODO: Tile size and tile sheet should be loaded elsewhere
|
//TODO: Tile size and tile sheet should be loaded elsewhere
|
||||||
tileSheet.Load(config["dir.tilesets"] + "terrain.bmp", 32, 32);
|
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
|
//request a sync
|
||||||
RequestSynchronize();
|
RequestSynchronize();
|
||||||
|
|
||||||
@@ -302,6 +310,9 @@ void InWorld::HandlePacket(SerialPacket* const argPacket) {
|
|||||||
case SerialPacketType::CHARACTER_UPDATE:
|
case SerialPacketType::CHARACTER_UPDATE:
|
||||||
HandleCharacterUpdate(static_cast<CharacterPacket*>(argPacket));
|
HandleCharacterUpdate(static_cast<CharacterPacket*>(argPacket));
|
||||||
break;
|
break;
|
||||||
|
case SerialPacketType::CHARACTER_REJECTION:
|
||||||
|
HandleCharacterRejection(static_cast<TextPacket*>(argPacket));
|
||||||
|
break;
|
||||||
case SerialPacketType::REGION_CONTENT:
|
case SerialPacketType::REGION_CONTENT:
|
||||||
HandleRegionContent(static_cast<RegionPacket*>(argPacket));
|
HandleRegionContent(static_cast<RegionPacket*>(argPacket));
|
||||||
break;
|
break;
|
||||||
@@ -389,7 +400,6 @@ void InWorld::HandleCharacterDelete(CharacterPacket* const argPacket) {
|
|||||||
|
|
||||||
void InWorld::HandleCharacterUpdate(CharacterPacket* const argPacket) {
|
void InWorld::HandleCharacterUpdate(CharacterPacket* const argPacket) {
|
||||||
if (characterMap.find(argPacket->characterIndex) == characterMap.end()) {
|
if (characterMap.find(argPacket->characterIndex) == characterMap.end()) {
|
||||||
std::cout << "Warning: HandleCharacterUpdate() is passing to HandleCharacterNew()" << std::endl;
|
|
||||||
HandleCharacterNew(argPacket);
|
HandleCharacterNew(argPacket);
|
||||||
return;
|
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) {
|
void InWorld::HandleRegionContent(RegionPacket* const argPacket) {
|
||||||
//replace existing regions
|
//replace existing regions
|
||||||
regionPager.UnloadRegion(argPacket->x, argPacket->y);
|
regionPager.UnloadRegion(argPacket->x, argPacket->y);
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ protected:
|
|||||||
void HandleCharacterNew(CharacterPacket* const);
|
void HandleCharacterNew(CharacterPacket* const);
|
||||||
void HandleCharacterDelete(CharacterPacket* const);
|
void HandleCharacterDelete(CharacterPacket* const);
|
||||||
void HandleCharacterUpdate(CharacterPacket* const);
|
void HandleCharacterUpdate(CharacterPacket* const);
|
||||||
|
void HandleCharacterRejection(TextPacket* const);
|
||||||
void HandleRegionContent(RegionPacket* const);
|
void HandleRegionContent(RegionPacket* const);
|
||||||
|
|
||||||
//Server control
|
//Server control
|
||||||
|
|||||||
@@ -223,14 +223,6 @@ void LobbyMenu::HandleJoinResponse(ClientPacket* const argPacket) {
|
|||||||
accountIndex = argPacket->accountIndex;
|
accountIndex = argPacket->accountIndex;
|
||||||
network.Bind(argPacket->srcAddress, Channels::SERVER);
|
network.Bind(argPacket->srcAddress, Channels::SERVER);
|
||||||
SetNextScene(SceneList::INWORLD);
|
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) {
|
void LobbyMenu::HandleJoinRejection(TextPacket* const argPacket) {
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ void ServerApplication::HandleCharacterNew(CharacterPacket* const argPacket) {
|
|||||||
if (characterIndex == -1) {
|
if (characterIndex == -1) {
|
||||||
msg += "Character already loaded: ";
|
msg += "Character already loaded: ";
|
||||||
}
|
}
|
||||||
else if (characterIndex == -1) {
|
else if (characterIndex == -2) {
|
||||||
msg += "Character already exists: ";
|
msg += "Character already exists: ";
|
||||||
}
|
}
|
||||||
msg += argPacket->handle;
|
msg += argPacket->handle;
|
||||||
|
|||||||
Reference in New Issue
Block a user