mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-22 05:20:05 +00:00
[refactor] Extract PlayerMovement.cpp from PlayerManager.cpp
This commit is contained in:
parent
f9c2587557
commit
ce197d7db3
2
Makefile
2
Makefile
@ -44,6 +44,7 @@ CXXSRC=\
|
|||||||
src/ItemManager.cpp\
|
src/ItemManager.cpp\
|
||||||
src/NPCManager.cpp\
|
src/NPCManager.cpp\
|
||||||
src/PlayerManager.cpp\
|
src/PlayerManager.cpp\
|
||||||
|
src/PlayerMovement.cpp\
|
||||||
src/BuiltinCommands.cpp\
|
src/BuiltinCommands.cpp\
|
||||||
src/settings.cpp\
|
src/settings.cpp\
|
||||||
src/TransportManager.cpp\
|
src/TransportManager.cpp\
|
||||||
@ -84,6 +85,7 @@ CXXHDR=\
|
|||||||
src/NPCManager.hpp\
|
src/NPCManager.hpp\
|
||||||
src/Player.hpp\
|
src/Player.hpp\
|
||||||
src/PlayerManager.hpp\
|
src/PlayerManager.hpp\
|
||||||
|
src/PlayerMovement.hpp\
|
||||||
src/BuiltinCommands.hpp\
|
src/BuiltinCommands.hpp\
|
||||||
src/settings.hpp\
|
src/settings.hpp\
|
||||||
src/TransportManager.hpp\
|
src/TransportManager.hpp\
|
||||||
|
@ -26,15 +26,6 @@ void PlayerManager::init() {
|
|||||||
// register packet types
|
// register packet types
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_ENTER, enterPlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_ENTER, enterPlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_LOADING_COMPLETE, loadPlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_LOADING_COMPLETE, loadPlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVE, movePlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_STOP, stopPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_JUMP, jumpPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_JUMPPAD, jumppadPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_LAUNCHER, launchPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_ZIPLINE, ziplinePlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVEPLATFORM, movePlatformPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVETRANSPORTATION, moveSliderPlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_SLOPE, moveSlopePlayer);
|
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REP_LIVE_CHECK, heartbeatPlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REP_LIVE_CHECK, heartbeatPlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_REGEN, revivePlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_REGEN, revivePlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_EXIT, exitGame);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_EXIT, exitGame);
|
||||||
@ -381,286 +372,6 @@ void PlayerManager::loadPlayer(CNSocket* sock, CNPacketData* data) {
|
|||||||
sock->sendPacket((void*)&response, P_FE2CL_REP_PC_LOADING_COMPLETE_SUCC, sizeof(sP_FE2CL_REP_PC_LOADING_COMPLETE_SUCC));
|
sock->sendPacket((void*)&response, P_FE2CL_REP_PC_LOADING_COMPLETE_SUCC, sizeof(sP_FE2CL_REP_PC_LOADING_COMPLETE_SUCC));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerManager::movePlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVE))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_MOVE* moveData = (sP_CL2FE_REQ_PC_MOVE*)data->buf;
|
|
||||||
updatePlayerPosition(sock, moveData->iX, moveData->iY, moveData->iZ, plr->instanceID, moveData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_MOVE, moveResponse);
|
|
||||||
|
|
||||||
moveResponse.iID = plr->iID;
|
|
||||||
moveResponse.cKeyValue = moveData->cKeyValue;
|
|
||||||
|
|
||||||
moveResponse.iX = moveData->iX;
|
|
||||||
moveResponse.iY = moveData->iY;
|
|
||||||
moveResponse.iZ = moveData->iZ;
|
|
||||||
moveResponse.iAngle = moveData->iAngle;
|
|
||||||
moveResponse.fVX = moveData->fVX;
|
|
||||||
moveResponse.fVY = moveData->fVY;
|
|
||||||
moveResponse.fVZ = moveData->fVZ;
|
|
||||||
|
|
||||||
moveResponse.iSpeed = moveData->iSpeed;
|
|
||||||
moveResponse.iCliTime = moveData->iCliTime; // maybe don't send this??? seems unneeded...
|
|
||||||
moveResponse.iSvrTime = tm;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&moveResponse, P_FE2CL_PC_MOVE, sizeof(sP_FE2CL_PC_MOVE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::stopPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_STOP))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_STOP* stopData = (sP_CL2FE_REQ_PC_STOP*)data->buf;
|
|
||||||
updatePlayerPosition(sock, stopData->iX, stopData->iY, stopData->iZ, plr->instanceID, plr->angle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_STOP, stopResponse);
|
|
||||||
|
|
||||||
stopResponse.iID = plr->iID;
|
|
||||||
|
|
||||||
stopResponse.iX = stopData->iX;
|
|
||||||
stopResponse.iY = stopData->iY;
|
|
||||||
stopResponse.iZ = stopData->iZ;
|
|
||||||
|
|
||||||
stopResponse.iCliTime = stopData->iCliTime; // maybe don't send this??? seems unneeded...
|
|
||||||
stopResponse.iSvrTime = tm;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&stopResponse, P_FE2CL_PC_STOP, sizeof(sP_FE2CL_PC_STOP));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::jumpPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_JUMP))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_JUMP* jumpData = (sP_CL2FE_REQ_PC_JUMP*)data->buf;
|
|
||||||
updatePlayerPosition(sock, jumpData->iX, jumpData->iY, jumpData->iZ, plr->instanceID, jumpData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_JUMP, jumpResponse);
|
|
||||||
|
|
||||||
jumpResponse.iID = plr->iID;
|
|
||||||
jumpResponse.cKeyValue = jumpData->cKeyValue;
|
|
||||||
|
|
||||||
jumpResponse.iX = jumpData->iX;
|
|
||||||
jumpResponse.iY = jumpData->iY;
|
|
||||||
jumpResponse.iZ = jumpData->iZ;
|
|
||||||
jumpResponse.iAngle = jumpData->iAngle;
|
|
||||||
jumpResponse.iVX = jumpData->iVX;
|
|
||||||
jumpResponse.iVY = jumpData->iVY;
|
|
||||||
jumpResponse.iVZ = jumpData->iVZ;
|
|
||||||
|
|
||||||
jumpResponse.iSpeed = jumpData->iSpeed;
|
|
||||||
jumpResponse.iCliTime = jumpData->iCliTime; // maybe don't send this??? seems unneeded...
|
|
||||||
jumpResponse.iSvrTime = tm;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&jumpResponse, P_FE2CL_PC_JUMP, sizeof(sP_FE2CL_PC_JUMP));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::jumppadPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_JUMPPAD))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_JUMPPAD* jumppadData = (sP_CL2FE_REQ_PC_JUMPPAD*)data->buf;
|
|
||||||
updatePlayerPosition(sock, jumppadData->iX, jumppadData->iY, jumppadData->iZ, plr->instanceID, jumppadData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_JUMPPAD, jumppadResponse);
|
|
||||||
|
|
||||||
jumppadResponse.iPC_ID = plr->iID;
|
|
||||||
jumppadResponse.cKeyValue = jumppadData->cKeyValue;
|
|
||||||
|
|
||||||
jumppadResponse.iX = jumppadData->iX;
|
|
||||||
jumppadResponse.iY = jumppadData->iY;
|
|
||||||
jumppadResponse.iZ = jumppadData->iZ;
|
|
||||||
jumppadResponse.iVX = jumppadData->iVX;
|
|
||||||
jumppadResponse.iVY = jumppadData->iVY;
|
|
||||||
jumppadResponse.iVZ = jumppadData->iVZ;
|
|
||||||
|
|
||||||
jumppadResponse.iCliTime = jumppadData->iCliTime;
|
|
||||||
jumppadResponse.iSvrTime = tm;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&jumppadResponse, P_FE2CL_PC_JUMPPAD, sizeof(sP_FE2CL_PC_JUMPPAD));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::launchPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_LAUNCHER))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_LAUNCHER* launchData = (sP_CL2FE_REQ_PC_LAUNCHER*)data->buf;
|
|
||||||
updatePlayerPosition(sock, launchData->iX, launchData->iY, launchData->iZ, plr->instanceID, launchData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_LAUNCHER, launchResponse);
|
|
||||||
|
|
||||||
launchResponse.iPC_ID = plr->iID;
|
|
||||||
|
|
||||||
launchResponse.iX = launchData->iX;
|
|
||||||
launchResponse.iY = launchData->iY;
|
|
||||||
launchResponse.iZ = launchData->iZ;
|
|
||||||
launchResponse.iVX = launchData->iVX;
|
|
||||||
launchResponse.iVY = launchData->iVY;
|
|
||||||
launchResponse.iVZ = launchData->iVZ;
|
|
||||||
launchResponse.iSpeed = launchData->iSpeed;
|
|
||||||
launchResponse.iAngle = launchData->iAngle;
|
|
||||||
|
|
||||||
launchResponse.iCliTime = launchData->iCliTime;
|
|
||||||
launchResponse.iSvrTime = tm;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&launchResponse, P_FE2CL_PC_LAUNCHER, sizeof(sP_FE2CL_PC_LAUNCHER));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::ziplinePlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_ZIPLINE))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_ZIPLINE* ziplineData = (sP_CL2FE_REQ_PC_ZIPLINE*)data->buf;
|
|
||||||
updatePlayerPosition(sock, ziplineData->iX, ziplineData->iY, ziplineData->iZ, plr->instanceID, ziplineData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_ZIPLINE, ziplineResponse);
|
|
||||||
|
|
||||||
ziplineResponse.iPC_ID = plr->iID;
|
|
||||||
ziplineResponse.iCliTime = ziplineData->iCliTime;
|
|
||||||
ziplineResponse.iSvrTime = tm;
|
|
||||||
ziplineResponse.iX = ziplineData->iX;
|
|
||||||
ziplineResponse.iY = ziplineData->iY;
|
|
||||||
ziplineResponse.iZ = ziplineData->iZ;
|
|
||||||
ziplineResponse.fVX = ziplineData->fVX;
|
|
||||||
ziplineResponse.fVY = ziplineData->fVY;
|
|
||||||
ziplineResponse.fVZ = ziplineData->fVZ;
|
|
||||||
ziplineResponse.fMovDistance = ziplineData->fMovDistance;
|
|
||||||
ziplineResponse.fMaxDistance = ziplineData->fMaxDistance;
|
|
||||||
ziplineResponse.fDummy = ziplineData->fDummy; // wtf is this for?
|
|
||||||
ziplineResponse.iStX = ziplineData->iStX;
|
|
||||||
ziplineResponse.iStY = ziplineData->iStY;
|
|
||||||
ziplineResponse.iStZ = ziplineData->iStZ;
|
|
||||||
ziplineResponse.bDown = ziplineData->bDown;
|
|
||||||
ziplineResponse.iSpeed = ziplineData->iSpeed;
|
|
||||||
ziplineResponse.iAngle = ziplineData->iAngle;
|
|
||||||
ziplineResponse.iRollMax = ziplineData->iRollMax;
|
|
||||||
ziplineResponse.iRoll = ziplineData->iRoll;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&ziplineResponse, P_FE2CL_PC_ZIPLINE, sizeof(sP_FE2CL_PC_ZIPLINE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::movePlatformPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVEPLATFORM))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_MOVEPLATFORM* platformData = (sP_CL2FE_REQ_PC_MOVEPLATFORM*)data->buf;
|
|
||||||
updatePlayerPosition(sock, platformData->iX, platformData->iY, platformData->iZ, plr->instanceID, platformData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_MOVEPLATFORM, platResponse);
|
|
||||||
|
|
||||||
platResponse.iPC_ID = plr->iID;
|
|
||||||
platResponse.iCliTime = platformData->iCliTime;
|
|
||||||
platResponse.iSvrTime = tm;
|
|
||||||
platResponse.iX = platformData->iX;
|
|
||||||
platResponse.iY = platformData->iY;
|
|
||||||
platResponse.iZ = platformData->iZ;
|
|
||||||
platResponse.iAngle = platformData->iAngle;
|
|
||||||
platResponse.fVX = platformData->fVX;
|
|
||||||
platResponse.fVY = platformData->fVY;
|
|
||||||
platResponse.fVZ = platformData->fVZ;
|
|
||||||
platResponse.iLcX = platformData->iLcX;
|
|
||||||
platResponse.iLcY = platformData->iLcY;
|
|
||||||
platResponse.iLcZ = platformData->iLcZ;
|
|
||||||
platResponse.iSpeed = platformData->iSpeed;
|
|
||||||
platResponse.bDown = platformData->bDown;
|
|
||||||
platResponse.cKeyValue = platformData->cKeyValue;
|
|
||||||
platResponse.iPlatformID = platformData->iPlatformID;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&platResponse, P_FE2CL_PC_MOVEPLATFORM, sizeof(sP_FE2CL_PC_MOVEPLATFORM));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::moveSliderPlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVETRANSPORTATION))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_MOVETRANSPORTATION* sliderData = (sP_CL2FE_REQ_PC_MOVETRANSPORTATION*)data->buf;
|
|
||||||
updatePlayerPosition(sock, sliderData->iX, sliderData->iY, sliderData->iZ, plr->instanceID, sliderData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_MOVETRANSPORTATION, sliderResponse);
|
|
||||||
|
|
||||||
sliderResponse.iPC_ID = plr->iID;
|
|
||||||
sliderResponse.iCliTime = sliderData->iCliTime;
|
|
||||||
sliderResponse.iSvrTime = tm;
|
|
||||||
sliderResponse.iX = sliderData->iX;
|
|
||||||
sliderResponse.iY = sliderData->iY;
|
|
||||||
sliderResponse.iZ = sliderData->iZ;
|
|
||||||
sliderResponse.iAngle = sliderData->iAngle;
|
|
||||||
sliderResponse.fVX = sliderData->fVX;
|
|
||||||
sliderResponse.fVY = sliderData->fVY;
|
|
||||||
sliderResponse.fVZ = sliderData->fVZ;
|
|
||||||
sliderResponse.iLcX = sliderData->iLcX;
|
|
||||||
sliderResponse.iLcY = sliderData->iLcY;
|
|
||||||
sliderResponse.iLcZ = sliderData->iLcZ;
|
|
||||||
sliderResponse.iSpeed = sliderData->iSpeed;
|
|
||||||
sliderResponse.cKeyValue = sliderData->cKeyValue;
|
|
||||||
sliderResponse.iT_ID = sliderData->iT_ID;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&sliderResponse, P_FE2CL_PC_MOVETRANSPORTATION, sizeof(sP_FE2CL_PC_MOVETRANSPORTATION));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::moveSlopePlayer(CNSocket* sock, CNPacketData* data) {
|
|
||||||
if (data->size != sizeof(sP_CL2FE_REQ_PC_SLOPE))
|
|
||||||
return; // ignore the malformed packet
|
|
||||||
|
|
||||||
Player* plr = getPlayer(sock);
|
|
||||||
|
|
||||||
sP_CL2FE_REQ_PC_SLOPE* slopeData = (sP_CL2FE_REQ_PC_SLOPE*)data->buf;
|
|
||||||
updatePlayerPosition(sock, slopeData->iX, slopeData->iY, slopeData->iZ, plr->instanceID, slopeData->iAngle);
|
|
||||||
|
|
||||||
uint64_t tm = getTime();
|
|
||||||
|
|
||||||
INITSTRUCT(sP_FE2CL_PC_SLOPE, slopeResponse);
|
|
||||||
|
|
||||||
slopeResponse.iPC_ID = plr->iID;
|
|
||||||
slopeResponse.iCliTime = slopeData->iCliTime;
|
|
||||||
slopeResponse.iSvrTime = tm;
|
|
||||||
slopeResponse.iX = slopeData->iX;
|
|
||||||
slopeResponse.iY = slopeData->iY;
|
|
||||||
slopeResponse.iZ = slopeData->iZ;
|
|
||||||
slopeResponse.iAngle = slopeData->iAngle;
|
|
||||||
slopeResponse.fVX = slopeData->fVX;
|
|
||||||
slopeResponse.fVY = slopeData->fVY;
|
|
||||||
slopeResponse.fVZ = slopeData->fVZ;
|
|
||||||
slopeResponse.iSpeed = slopeData->iSpeed;
|
|
||||||
slopeResponse.cKeyValue = slopeData->cKeyValue;
|
|
||||||
slopeResponse.iSlopeID = slopeData->iSlopeID;
|
|
||||||
|
|
||||||
sendToViewable(sock, (void*)&slopeResponse, P_FE2CL_PC_SLOPE, sizeof(sP_FE2CL_PC_SLOPE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerManager::heartbeatPlayer(CNSocket* sock, CNPacketData* data) {
|
void PlayerManager::heartbeatPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
getPlayer(sock)->lastHeartbeat = getTime();
|
getPlayer(sock)->lastHeartbeat = getTime();
|
||||||
}
|
}
|
||||||
|
@ -28,15 +28,6 @@ namespace PlayerManager {
|
|||||||
|
|
||||||
void enterPlayer(CNSocket* sock, CNPacketData* data);
|
void enterPlayer(CNSocket* sock, CNPacketData* data);
|
||||||
void loadPlayer(CNSocket* sock, CNPacketData* data);
|
void loadPlayer(CNSocket* sock, CNPacketData* data);
|
||||||
void movePlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void stopPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void jumpPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void jumppadPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void launchPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void ziplinePlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void movePlatformPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void moveSliderPlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void moveSlopePlayer(CNSocket* sock, CNPacketData* data);
|
|
||||||
void heartbeatPlayer(CNSocket* sock, CNPacketData* data);
|
void heartbeatPlayer(CNSocket* sock, CNPacketData* data);
|
||||||
void revivePlayer(CNSocket* sock, CNPacketData* data);
|
void revivePlayer(CNSocket* sock, CNPacketData* data);
|
||||||
void exitGame(CNSocket* sock, CNPacketData* data);
|
void exitGame(CNSocket* sock, CNPacketData* data);
|
||||||
|
295
src/PlayerMovement.cpp
Normal file
295
src/PlayerMovement.cpp
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
#include "PlayerMovement.hpp"
|
||||||
|
#include "PlayerManager.hpp"
|
||||||
|
#include "CNProtocol.hpp"
|
||||||
|
|
||||||
|
static void movePlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVE))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_MOVE* moveData = (sP_CL2FE_REQ_PC_MOVE*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, moveData->iX, moveData->iY, moveData->iZ, plr->instanceID, moveData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_MOVE, moveResponse);
|
||||||
|
|
||||||
|
moveResponse.iID = plr->iID;
|
||||||
|
moveResponse.cKeyValue = moveData->cKeyValue;
|
||||||
|
|
||||||
|
moveResponse.iX = moveData->iX;
|
||||||
|
moveResponse.iY = moveData->iY;
|
||||||
|
moveResponse.iZ = moveData->iZ;
|
||||||
|
moveResponse.iAngle = moveData->iAngle;
|
||||||
|
moveResponse.fVX = moveData->fVX;
|
||||||
|
moveResponse.fVY = moveData->fVY;
|
||||||
|
moveResponse.fVZ = moveData->fVZ;
|
||||||
|
|
||||||
|
moveResponse.iSpeed = moveData->iSpeed;
|
||||||
|
moveResponse.iCliTime = moveData->iCliTime; // maybe don't send this??? seems unneeded...
|
||||||
|
moveResponse.iSvrTime = tm;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&moveResponse, P_FE2CL_PC_MOVE, sizeof(sP_FE2CL_PC_MOVE));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stopPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_STOP))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_STOP* stopData = (sP_CL2FE_REQ_PC_STOP*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, stopData->iX, stopData->iY, stopData->iZ, plr->instanceID, plr->angle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_STOP, stopResponse);
|
||||||
|
|
||||||
|
stopResponse.iID = plr->iID;
|
||||||
|
|
||||||
|
stopResponse.iX = stopData->iX;
|
||||||
|
stopResponse.iY = stopData->iY;
|
||||||
|
stopResponse.iZ = stopData->iZ;
|
||||||
|
|
||||||
|
stopResponse.iCliTime = stopData->iCliTime; // maybe don't send this??? seems unneeded...
|
||||||
|
stopResponse.iSvrTime = tm;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&stopResponse, P_FE2CL_PC_STOP, sizeof(sP_FE2CL_PC_STOP));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void jumpPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_JUMP))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_JUMP* jumpData = (sP_CL2FE_REQ_PC_JUMP*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, jumpData->iX, jumpData->iY, jumpData->iZ, plr->instanceID, jumpData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_JUMP, jumpResponse);
|
||||||
|
|
||||||
|
jumpResponse.iID = plr->iID;
|
||||||
|
jumpResponse.cKeyValue = jumpData->cKeyValue;
|
||||||
|
|
||||||
|
jumpResponse.iX = jumpData->iX;
|
||||||
|
jumpResponse.iY = jumpData->iY;
|
||||||
|
jumpResponse.iZ = jumpData->iZ;
|
||||||
|
jumpResponse.iAngle = jumpData->iAngle;
|
||||||
|
jumpResponse.iVX = jumpData->iVX;
|
||||||
|
jumpResponse.iVY = jumpData->iVY;
|
||||||
|
jumpResponse.iVZ = jumpData->iVZ;
|
||||||
|
|
||||||
|
jumpResponse.iSpeed = jumpData->iSpeed;
|
||||||
|
jumpResponse.iCliTime = jumpData->iCliTime; // maybe don't send this??? seems unneeded...
|
||||||
|
jumpResponse.iSvrTime = tm;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&jumpResponse, P_FE2CL_PC_JUMP, sizeof(sP_FE2CL_PC_JUMP));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void jumppadPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_JUMPPAD))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_JUMPPAD* jumppadData = (sP_CL2FE_REQ_PC_JUMPPAD*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, jumppadData->iX, jumppadData->iY, jumppadData->iZ, plr->instanceID, jumppadData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_JUMPPAD, jumppadResponse);
|
||||||
|
|
||||||
|
jumppadResponse.iPC_ID = plr->iID;
|
||||||
|
jumppadResponse.cKeyValue = jumppadData->cKeyValue;
|
||||||
|
|
||||||
|
jumppadResponse.iX = jumppadData->iX;
|
||||||
|
jumppadResponse.iY = jumppadData->iY;
|
||||||
|
jumppadResponse.iZ = jumppadData->iZ;
|
||||||
|
jumppadResponse.iVX = jumppadData->iVX;
|
||||||
|
jumppadResponse.iVY = jumppadData->iVY;
|
||||||
|
jumppadResponse.iVZ = jumppadData->iVZ;
|
||||||
|
|
||||||
|
jumppadResponse.iCliTime = jumppadData->iCliTime;
|
||||||
|
jumppadResponse.iSvrTime = tm;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&jumppadResponse, P_FE2CL_PC_JUMPPAD, sizeof(sP_FE2CL_PC_JUMPPAD));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void launchPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_LAUNCHER))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_LAUNCHER* launchData = (sP_CL2FE_REQ_PC_LAUNCHER*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, launchData->iX, launchData->iY, launchData->iZ, plr->instanceID, launchData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_LAUNCHER, launchResponse);
|
||||||
|
|
||||||
|
launchResponse.iPC_ID = plr->iID;
|
||||||
|
|
||||||
|
launchResponse.iX = launchData->iX;
|
||||||
|
launchResponse.iY = launchData->iY;
|
||||||
|
launchResponse.iZ = launchData->iZ;
|
||||||
|
launchResponse.iVX = launchData->iVX;
|
||||||
|
launchResponse.iVY = launchData->iVY;
|
||||||
|
launchResponse.iVZ = launchData->iVZ;
|
||||||
|
launchResponse.iSpeed = launchData->iSpeed;
|
||||||
|
launchResponse.iAngle = launchData->iAngle;
|
||||||
|
|
||||||
|
launchResponse.iCliTime = launchData->iCliTime;
|
||||||
|
launchResponse.iSvrTime = tm;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&launchResponse, P_FE2CL_PC_LAUNCHER, sizeof(sP_FE2CL_PC_LAUNCHER));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ziplinePlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_ZIPLINE))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_ZIPLINE* ziplineData = (sP_CL2FE_REQ_PC_ZIPLINE*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, ziplineData->iX, ziplineData->iY, ziplineData->iZ, plr->instanceID, ziplineData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_ZIPLINE, ziplineResponse);
|
||||||
|
|
||||||
|
ziplineResponse.iPC_ID = plr->iID;
|
||||||
|
ziplineResponse.iCliTime = ziplineData->iCliTime;
|
||||||
|
ziplineResponse.iSvrTime = tm;
|
||||||
|
ziplineResponse.iX = ziplineData->iX;
|
||||||
|
ziplineResponse.iY = ziplineData->iY;
|
||||||
|
ziplineResponse.iZ = ziplineData->iZ;
|
||||||
|
ziplineResponse.fVX = ziplineData->fVX;
|
||||||
|
ziplineResponse.fVY = ziplineData->fVY;
|
||||||
|
ziplineResponse.fVZ = ziplineData->fVZ;
|
||||||
|
ziplineResponse.fMovDistance = ziplineData->fMovDistance;
|
||||||
|
ziplineResponse.fMaxDistance = ziplineData->fMaxDistance;
|
||||||
|
ziplineResponse.fDummy = ziplineData->fDummy; // wtf is this for?
|
||||||
|
ziplineResponse.iStX = ziplineData->iStX;
|
||||||
|
ziplineResponse.iStY = ziplineData->iStY;
|
||||||
|
ziplineResponse.iStZ = ziplineData->iStZ;
|
||||||
|
ziplineResponse.bDown = ziplineData->bDown;
|
||||||
|
ziplineResponse.iSpeed = ziplineData->iSpeed;
|
||||||
|
ziplineResponse.iAngle = ziplineData->iAngle;
|
||||||
|
ziplineResponse.iRollMax = ziplineData->iRollMax;
|
||||||
|
ziplineResponse.iRoll = ziplineData->iRoll;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&ziplineResponse, P_FE2CL_PC_ZIPLINE, sizeof(sP_FE2CL_PC_ZIPLINE));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void movePlatformPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVEPLATFORM))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_MOVEPLATFORM* platformData = (sP_CL2FE_REQ_PC_MOVEPLATFORM*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, platformData->iX, platformData->iY, platformData->iZ, plr->instanceID, platformData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_MOVEPLATFORM, platResponse);
|
||||||
|
|
||||||
|
platResponse.iPC_ID = plr->iID;
|
||||||
|
platResponse.iCliTime = platformData->iCliTime;
|
||||||
|
platResponse.iSvrTime = tm;
|
||||||
|
platResponse.iX = platformData->iX;
|
||||||
|
platResponse.iY = platformData->iY;
|
||||||
|
platResponse.iZ = platformData->iZ;
|
||||||
|
platResponse.iAngle = platformData->iAngle;
|
||||||
|
platResponse.fVX = platformData->fVX;
|
||||||
|
platResponse.fVY = platformData->fVY;
|
||||||
|
platResponse.fVZ = platformData->fVZ;
|
||||||
|
platResponse.iLcX = platformData->iLcX;
|
||||||
|
platResponse.iLcY = platformData->iLcY;
|
||||||
|
platResponse.iLcZ = platformData->iLcZ;
|
||||||
|
platResponse.iSpeed = platformData->iSpeed;
|
||||||
|
platResponse.bDown = platformData->bDown;
|
||||||
|
platResponse.cKeyValue = platformData->cKeyValue;
|
||||||
|
platResponse.iPlatformID = platformData->iPlatformID;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&platResponse, P_FE2CL_PC_MOVEPLATFORM, sizeof(sP_FE2CL_PC_MOVEPLATFORM));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void moveSliderPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_MOVETRANSPORTATION))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_MOVETRANSPORTATION* sliderData = (sP_CL2FE_REQ_PC_MOVETRANSPORTATION*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, sliderData->iX, sliderData->iY, sliderData->iZ, plr->instanceID, sliderData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_MOVETRANSPORTATION, sliderResponse);
|
||||||
|
|
||||||
|
sliderResponse.iPC_ID = plr->iID;
|
||||||
|
sliderResponse.iCliTime = sliderData->iCliTime;
|
||||||
|
sliderResponse.iSvrTime = tm;
|
||||||
|
sliderResponse.iX = sliderData->iX;
|
||||||
|
sliderResponse.iY = sliderData->iY;
|
||||||
|
sliderResponse.iZ = sliderData->iZ;
|
||||||
|
sliderResponse.iAngle = sliderData->iAngle;
|
||||||
|
sliderResponse.fVX = sliderData->fVX;
|
||||||
|
sliderResponse.fVY = sliderData->fVY;
|
||||||
|
sliderResponse.fVZ = sliderData->fVZ;
|
||||||
|
sliderResponse.iLcX = sliderData->iLcX;
|
||||||
|
sliderResponse.iLcY = sliderData->iLcY;
|
||||||
|
sliderResponse.iLcZ = sliderData->iLcZ;
|
||||||
|
sliderResponse.iSpeed = sliderData->iSpeed;
|
||||||
|
sliderResponse.cKeyValue = sliderData->cKeyValue;
|
||||||
|
sliderResponse.iT_ID = sliderData->iT_ID;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&sliderResponse, P_FE2CL_PC_MOVETRANSPORTATION, sizeof(sP_FE2CL_PC_MOVETRANSPORTATION));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void moveSlopePlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
if (data->size != sizeof(sP_CL2FE_REQ_PC_SLOPE))
|
||||||
|
return; // ignore the malformed packet
|
||||||
|
|
||||||
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
|
||||||
|
sP_CL2FE_REQ_PC_SLOPE* slopeData = (sP_CL2FE_REQ_PC_SLOPE*)data->buf;
|
||||||
|
PlayerManager::updatePlayerPosition(sock, slopeData->iX, slopeData->iY, slopeData->iZ, plr->instanceID, slopeData->iAngle);
|
||||||
|
|
||||||
|
uint64_t tm = getTime();
|
||||||
|
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_SLOPE, slopeResponse);
|
||||||
|
|
||||||
|
slopeResponse.iPC_ID = plr->iID;
|
||||||
|
slopeResponse.iCliTime = slopeData->iCliTime;
|
||||||
|
slopeResponse.iSvrTime = tm;
|
||||||
|
slopeResponse.iX = slopeData->iX;
|
||||||
|
slopeResponse.iY = slopeData->iY;
|
||||||
|
slopeResponse.iZ = slopeData->iZ;
|
||||||
|
slopeResponse.iAngle = slopeData->iAngle;
|
||||||
|
slopeResponse.fVX = slopeData->fVX;
|
||||||
|
slopeResponse.fVY = slopeData->fVY;
|
||||||
|
slopeResponse.fVZ = slopeData->fVZ;
|
||||||
|
slopeResponse.iSpeed = slopeData->iSpeed;
|
||||||
|
slopeResponse.cKeyValue = slopeData->cKeyValue;
|
||||||
|
slopeResponse.iSlopeID = slopeData->iSlopeID;
|
||||||
|
|
||||||
|
PlayerManager::sendToViewable(sock, (void*)&slopeResponse, P_FE2CL_PC_SLOPE, sizeof(sP_FE2CL_PC_SLOPE));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerMovement::init() {
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVE, movePlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_STOP, stopPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_JUMP, jumpPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_JUMPPAD, jumppadPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_LAUNCHER, launchPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_ZIPLINE, ziplinePlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVEPLATFORM, movePlatformPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_MOVETRANSPORTATION, moveSliderPlayer);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_SLOPE, moveSlopePlayer);
|
||||||
|
}
|
5
src/PlayerMovement.hpp
Normal file
5
src/PlayerMovement.hpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace PlayerMovement {
|
||||||
|
void init();
|
||||||
|
};
|
@ -1,6 +1,7 @@
|
|||||||
#include "CNLoginServer.hpp"
|
#include "CNLoginServer.hpp"
|
||||||
#include "CNShardServer.hpp"
|
#include "CNShardServer.hpp"
|
||||||
#include "PlayerManager.hpp"
|
#include "PlayerManager.hpp"
|
||||||
|
#include "PlayerMovement.hpp"
|
||||||
#include "BuiltinCommands.hpp"
|
#include "BuiltinCommands.hpp"
|
||||||
#include "ChatManager.hpp"
|
#include "ChatManager.hpp"
|
||||||
#include "CustomCommands.hpp"
|
#include "CustomCommands.hpp"
|
||||||
@ -95,6 +96,7 @@ int main() {
|
|||||||
std::cout << "[INFO] Intializing Packet Managers..." << std::endl;
|
std::cout << "[INFO] Intializing Packet Managers..." << std::endl;
|
||||||
TableData::init();
|
TableData::init();
|
||||||
PlayerManager::init();
|
PlayerManager::init();
|
||||||
|
PlayerMovement::init();
|
||||||
BuiltinCommands::init();
|
BuiltinCommands::init();
|
||||||
ChatManager::init();
|
ChatManager::init();
|
||||||
CustomCommands::init();
|
CustomCommands::init();
|
||||||
|
Loading…
Reference in New Issue
Block a user