Added "camera"

This commit is contained in:
Kayne Ruse
2014-04-05 01:56:05 +11:00
parent 41077b43b3
commit 962f3f5dd0
3 changed files with 35 additions and 7 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ public:
void Update(double delta); void Update(double delta);
void DrawTo(SDL_Surface* const dest) { sprite.DrawTo(dest, position.x, position.y); } void DrawTo(SDL_Surface* const dest, int camX, int camY) { sprite.DrawTo(dest, position.x - camX, position.y - camY); }
//clunky code results in smooth movement and controls //clunky code results in smooth movement and controls
void AdjustDirection(Direction); void AdjustDirection(Direction);
+30 -6
View File
@@ -88,8 +88,20 @@ void InWorld::FrameStart() {
} }
void InWorld::Update(double delta) { void InWorld::Update(double delta) {
//suck in all waiting packets
NetworkPacket packet; NetworkPacket packet;
//update the camera
if(localCharacter) {
int marginX = (GetScreen()->w / 2 - localCharacter->GetSprite()->GetImage()->GetClipW() / 2);
int marginY = (GetScreen()->h / 2 - localCharacter->GetSprite()->GetImage()->GetClipH() / 2);
camera.x = localCharacter->GetPosition().x - marginX;
camera.y = localCharacter->GetPosition().y - marginY;
}
//check the map
UpdateMap();
//suck in all waiting packets
while(network.Receive()) { while(network.Receive()) {
deserialize(&packet, network.GetInData()); deserialize(&packet, network.GetInData());
packet.meta.srcAddress = network.GetInPacket()->address; packet.meta.srcAddress = network.GetInPacket()->address;
@@ -107,7 +119,7 @@ void InWorld::FrameEnd() {
void InWorld::Render(SDL_Surface* const screen) { void InWorld::Render(SDL_Surface* const screen) {
for (auto& it : playerCharacters) { for (auto& it : playerCharacters) {
it.second.DrawTo(screen); it.second.DrawTo(screen, camera.x, camera.y);
} }
disconnectButton.DrawTo(screen); disconnectButton.DrawTo(screen);
shutDownButton.DrawTo(screen); shutDownButton.DrawTo(screen);
@@ -212,24 +224,24 @@ void InWorld::KeyUp(SDL_KeyboardEvent const& key) {
} }
} }
//-------------------------
//Network handlers
//-------------------------
void InWorld::HandlePacket(NetworkPacket packet) { void InWorld::HandlePacket(NetworkPacket packet) {
switch(packet.meta.type) { switch(packet.meta.type) {
case NetworkPacket::Type::DISCONNECT: case NetworkPacket::Type::DISCONNECT:
HandleDisconnect(packet); HandleDisconnect(packet);
break; break;
case NetworkPacket::Type::PLAYER_NEW: case NetworkPacket::Type::PLAYER_NEW:
HandlePlayerNew(packet); HandlePlayerNew(packet);
break; break;
case NetworkPacket::Type::PLAYER_DELETE: case NetworkPacket::Type::PLAYER_DELETE:
HandlePlayerDelete(packet); HandlePlayerDelete(packet);
break; break;
case NetworkPacket::Type::PLAYER_UPDATE: case NetworkPacket::Type::PLAYER_UPDATE:
HandlePlayerUpdate(packet); HandlePlayerUpdate(packet);
break; break;
//handle errors //handle errors
default: default:
throw(std::runtime_error("Unknown NetworkPacket::Type encountered")); throw(std::runtime_error("Unknown NetworkPacket::Type encountered"));
@@ -288,6 +300,10 @@ void InWorld::HandlePlayerUpdate(NetworkPacket packet) {
playerCharacters[packet.playerInfo.playerIndex].ResetDirection(); playerCharacters[packet.playerInfo.playerIndex].ResetDirection();
} }
//-------------------------
//Server control
//-------------------------
void InWorld::SendState() { void InWorld::SendState() {
NetworkPacket packet; NetworkPacket packet;
char buffer[PACKET_BUFFER_SIZE]; char buffer[PACKET_BUFFER_SIZE];
@@ -325,4 +341,12 @@ void InWorld::RequestShutDown() {
packet.clientInfo.index = clientIndex; packet.clientInfo.index = clientIndex;
serialize(&packet, buffer); serialize(&packet, buffer);
network.Send(Channels::SERVER, buffer, PACKET_BUFFER_SIZE); network.Send(Channels::SERVER, buffer, PACKET_BUFFER_SIZE);
}
void InWorld::UpdateMap() {
//
}
void InWorld::RequestRegion(int x, int y) {
//
} }
+4
View File
@@ -68,15 +68,19 @@ protected:
void KeyDown(SDL_KeyboardEvent const&); void KeyDown(SDL_KeyboardEvent const&);
void KeyUp(SDL_KeyboardEvent const&); void KeyUp(SDL_KeyboardEvent const&);
//Network handlers
void HandlePacket(NetworkPacket); void HandlePacket(NetworkPacket);
void HandleDisconnect(NetworkPacket); void HandleDisconnect(NetworkPacket);
void HandlePlayerNew(NetworkPacket); void HandlePlayerNew(NetworkPacket);
void HandlePlayerDelete(NetworkPacket); void HandlePlayerDelete(NetworkPacket);
void HandlePlayerUpdate(NetworkPacket); void HandlePlayerUpdate(NetworkPacket);
//Server control
void SendState(); void SendState();
void RequestDisconnect(); void RequestDisconnect();
void RequestShutDown(); void RequestShutDown();
void UpdateMap();
void RequestRegion(int x, int y);
//globals //globals
ConfigUtility& config; ConfigUtility& config;