mirror of
				https://github.com/OpenFusionProject/OpenFusion.git
				synced 2025-10-31 00:30:15 +00:00 
			
		
		
		
	[refactor] Extract PlayerMovement.cpp from PlayerManager.cpp
This commit is contained in:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -44,6 +44,7 @@ CXXSRC=\ | ||||
| 	src/ItemManager.cpp\ | ||||
| 	src/NPCManager.cpp\ | ||||
| 	src/PlayerManager.cpp\ | ||||
| 	src/PlayerMovement.cpp\ | ||||
| 	src/BuiltinCommands.cpp\ | ||||
| 	src/settings.cpp\ | ||||
| 	src/TransportManager.cpp\ | ||||
| @@ -84,6 +85,7 @@ CXXHDR=\ | ||||
| 	src/NPCManager.hpp\ | ||||
| 	src/Player.hpp\ | ||||
| 	src/PlayerManager.hpp\ | ||||
| 	src/PlayerMovement.hpp\ | ||||
| 	src/BuiltinCommands.hpp\ | ||||
| 	src/settings.hpp\ | ||||
| 	src/TransportManager.hpp\ | ||||
|   | ||||
| @@ -26,15 +26,6 @@ void PlayerManager::init() { | ||||
|     // register packet types | ||||
|     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_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_REQ_PC_REGEN, revivePlayer); | ||||
|     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)); | ||||
| } | ||||
|  | ||||
| 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) { | ||||
|     getPlayer(sock)->lastHeartbeat = getTime(); | ||||
| } | ||||
|   | ||||
| @@ -28,15 +28,6 @@ namespace PlayerManager { | ||||
|  | ||||
|     void enterPlayer(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 revivePlayer(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 "CNShardServer.hpp" | ||||
| #include "PlayerManager.hpp" | ||||
| #include "PlayerMovement.hpp" | ||||
| #include "BuiltinCommands.hpp" | ||||
| #include "ChatManager.hpp" | ||||
| #include "CustomCommands.hpp" | ||||
| @@ -95,6 +96,7 @@ int main() { | ||||
|     std::cout << "[INFO] Intializing Packet Managers..." << std::endl; | ||||
|     TableData::init(); | ||||
|     PlayerManager::init(); | ||||
|     PlayerMovement::init(); | ||||
|     BuiltinCommands::init(); | ||||
|     ChatManager::init(); | ||||
|     CustomCommands::init(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user