Began working changes into lobby

This commit is contained in:
Kayne Ruse
2014-11-16 22:53:11 +11:00
parent 1f3c1f32f4
commit ace87b438b
9 changed files with 49 additions and 44 deletions
-37
View File
@@ -1,37 +0,0 @@
#config
INCLUDES+=.
LIBS+=
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
#source
CXXSRC=$(wildcard *.cpp)
#objects
OBJDIR=obj
OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o))
#output
OUTDIR=..
OUT=$(addprefix $(OUTDIR)/,client.a)
#targets
all: $(OBJ) $(OUT)
ar -crs $(OUT) $(OBJ)
$(OBJ): | $(OBJDIR)
$(OUT): | $(OUTDIR)
$(OBJDIR):
mkdir $(OBJDIR)
$(OUTDIR):
mkdir $(OUTDIR)
$(OBJDIR)/%.o: %.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
clean:
$(RM) *.o *.a *.exe
rebuild: clean all
+2 -3
View File
@@ -1,5 +1,5 @@
#include directories #include directories
INCLUDES+=. client_utilities renderable scenes ../common/debugging ../common/gameplay ../common/graphics ../common/map ../common/network ../common/network/packet_types ../common/ui ../common/utilities INCLUDES+=. entities scenes ../common/debugging ../common/gameplay ../common/graphics ../common/map ../common/network ../common/network/packet_types ../common/ui ../common/utilities
#libraries #libraries
#the order of the $(LIBS) is important, at least for MinGW #the order of the $(LIBS) is important, at least for MinGW
@@ -25,9 +25,8 @@ OUT=$(addprefix $(OUTDIR)/,client)
#targets #targets
all: $(OBJ) $(OUT) all: $(OBJ) $(OUT)
$(MAKE) -C client_utilities $(MAKE) -C entities
$(MAKE) -C scenes $(MAKE) -C scenes
$(MAKE) -C renderable
$(CXX) $(CXXFLAGS) -o $(OUT) $(OBJ) $(LIBS) $(CXX) $(CXXFLAGS) -o $(OUT) $(OBJ) $(LIBS)
$(OBJ): | $(OBJDIR) $(OBJ): | $(OBJDIR)
-1
View File
@@ -40,7 +40,6 @@
#include "base_character.hpp" #include "base_character.hpp"
#include "base_monster.hpp" #include "base_monster.hpp"
#include "local_character.hpp"
//client //client
#include "base_scene.hpp" #include "base_scene.hpp"
+35 -2
View File
@@ -190,15 +190,25 @@ void LobbyMenu::KeyUp(SDL_KeyboardEvent const& key) {
void LobbyMenu::HandlePacket(SerialPacket* const argPacket) { void LobbyMenu::HandlePacket(SerialPacket* const argPacket) {
switch(argPacket->type) { switch(argPacket->type) {
//responses
case SerialPacketType::BROADCAST_RESPONSE: case SerialPacketType::BROADCAST_RESPONSE:
HandleBroadcastResponse(static_cast<ServerPacket*>(argPacket)); HandleBroadcastResponse(static_cast<ServerPacket*>(argPacket));
break; break;
case SerialPacketType::JOIN_RESPONSE: case SerialPacketType::JOIN_RESPONSE:
HandleJoinResponse(static_cast<ClientPacket*>(argPacket)); HandleJoinResponse(static_cast<ClientPacket*>(argPacket));
break; break;
case SerialPacketType::LOGIN_RESPONSE:
HandleLoginResponse(static_cast<ClientPacket*>(argPacket));
break;
//rejections
case SerialPacketType::JOIN_REJECTION: case SerialPacketType::JOIN_REJECTION:
HandleJoinRejection(static_cast<TextPacket*>(argPacket)); HandleJoinRejection(static_cast<TextPacket*>(argPacket));
break; break;
case SerialPacketType::LOGIN_REJECTION:
HandleLoginRejection(static_cast<TextPacket*>(argPacket));
break;
//handle errors //handle errors
default: default:
throw(std::runtime_error(std::string() + "Unknown SerialPacketType encountered in LobbyMenu: " + to_string_custom(static_cast<int>(argPacket->type)) )); throw(std::runtime_error(std::string() + "Unknown SerialPacketType encountered in LobbyMenu: " + to_string_custom(static_cast<int>(argPacket->type)) ));
@@ -222,9 +232,19 @@ void LobbyMenu::HandleBroadcastResponse(ServerPacket* const argPacket) {
} }
void LobbyMenu::HandleJoinResponse(ClientPacket* const argPacket) { void LobbyMenu::HandleJoinResponse(ClientPacket* const argPacket) {
//save the server's data
clientIndex = argPacket->clientIndex; clientIndex = argPacket->clientIndex;
accountIndex = argPacket->accountIndex;
network.Bind(argPacket->srcAddress, Channels::SERVER); network.Bind(argPacket->srcAddress, Channels::SERVER);
//request login data
SendLoginRequest();
}
void LobbyMenu::HandleLoginResponse(ClientPacket* const argPacket) {
if (argPacket->clientIndex != clientIndex) {
throw(std::runtime_error("Client index invalid during login"));
}
accountIndex = argPacket->accountIndex;
SetNextScene(SceneList::INWORLD); SetNextScene(SceneList::INWORLD);
} }
@@ -232,6 +252,10 @@ void LobbyMenu::HandleJoinRejection(TextPacket* const argPacket) {
//TODO: Better output for join rejection //TODO: Better output for join rejection
} }
void LobbyMenu::HandleLoginRejection(TextPacket* const argPacket) {
//TODO: Better output for login rejection
}
//------------------------- //-------------------------
//server control //server control
//------------------------- //-------------------------
@@ -251,9 +275,18 @@ void LobbyMenu::SendJoinRequest() {
//pack the packet //pack the packet
ClientPacket packet; ClientPacket packet;
packet.type = SerialPacketType::JOIN_REQUEST; packet.type = SerialPacketType::JOIN_REQUEST;
strncpy(packet.username, config["client.username"].c_str(), PACKET_STRING_SIZE);
//join the selected server //join the selected server
network.SendTo(selection->address, &packet); network.SendTo(selection->address, &packet);
selection = nullptr; selection = nullptr;
} }
void LobbyMenu::SendLoginRequest() {
//NOTE: high cohesion
ClientPacket packet;
packet.type = SerialPacketType::LOGIN_REQUEST;
packet.clientIndex = clientIndex;
strncpy(packet.username, config["client.username"].c_str(), PACKET_STRING_SIZE);
network.SendTo(Channels::SERVER, &packet);
}
+3
View File
@@ -63,11 +63,14 @@ protected:
void HandlePacket(SerialPacket* const); void HandlePacket(SerialPacket* const);
void HandleBroadcastResponse(ServerPacket* const); void HandleBroadcastResponse(ServerPacket* const);
void HandleJoinResponse(ClientPacket* const); void HandleJoinResponse(ClientPacket* const);
void HandleLoginResponse(ClientPacket* const);
void HandleJoinRejection(TextPacket* const); void HandleJoinRejection(TextPacket* const);
void HandleLoginRejection(TextPacket* const);
//server control //server control
void SendBroadcastRequest(); void SendBroadcastRequest();
void SendJoinRequest(); void SendJoinRequest();
void SendLoginRequest();
//shared parameters //shared parameters
ConfigUtility& config = ConfigUtility::GetSingleton(); ConfigUtility& config = ConfigUtility::GetSingleton();
+1 -1
View File
@@ -1,5 +1,5 @@
#config #config
INCLUDES+=. .. ../renderable ../../common/gameplay ../../common/graphics ../../common/map ../../common/network ../../common/network/packet_types ../../common/ui ../../common/utilities INCLUDES+=. .. ../entities ../../common/gameplay ../../common/graphics ../../common/map ../../common/network ../../common/network/packet_types ../../common/ui ../../common/utilities
LIBS+= LIBS+=
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
+1
View File
@@ -115,6 +115,7 @@ enum class SerialPacketType {
//rejection/error messages //rejection/error messages
JOIN_REJECTION, JOIN_REJECTION,
LOGIN_REJECTION,
CHARACTER_REJECTION, CHARACTER_REJECTION,
SHUTDOWN_REJECTION, SHUTDOWN_REJECTION,
+2
View File
@@ -81,6 +81,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
break; break;
case SerialPacketType::TEXT_BROADCAST: case SerialPacketType::TEXT_BROADCAST:
case SerialPacketType::JOIN_REJECTION: case SerialPacketType::JOIN_REJECTION:
case SerialPacketType::LOGIN_REJECTION:
case SerialPacketType::CHARACTER_REJECTION: case SerialPacketType::CHARACTER_REJECTION:
case SerialPacketType::SHUTDOWN_REJECTION: case SerialPacketType::SHUTDOWN_REJECTION:
serializeText(buffer, static_cast<TextPacket*>(packet)); serializeText(buffer, static_cast<TextPacket*>(packet));
@@ -129,6 +130,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
break; break;
case SerialPacketType::TEXT_BROADCAST: case SerialPacketType::TEXT_BROADCAST:
case SerialPacketType::JOIN_REJECTION: case SerialPacketType::JOIN_REJECTION:
case SerialPacketType::LOGIN_REJECTION:
case SerialPacketType::CHARACTER_REJECTION: case SerialPacketType::CHARACTER_REJECTION:
case SerialPacketType::SHUTDOWN_REJECTION: case SerialPacketType::SHUTDOWN_REJECTION:
deserializeText(buffer, static_cast<TextPacket*>(packet)); deserializeText(buffer, static_cast<TextPacket*>(packet));
+5
View File
@@ -24,3 +24,8 @@ The Entity base class handles position (including room) and motion, so something
entity: entity:
-------------------------
Lobby:
JOIN_REQUEST -> JOIN_RESPONSE, JOIN_REJECTION
LOGIN_REQUEST -> LOGIN_RESPONSE, LOGIN_REJECTION