mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2026-04-01 17:20:04 +00:00
Renaming & vehicle mount/dismount
* Renamed Player nano to activeNano for a little better readability * Added vehicle mount/dismount
This commit is contained in:
@@ -103,7 +103,7 @@ void NanoManager::nanoSummonHandler(CNSocket* sock, CNPacketData* data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update player
|
// update player
|
||||||
plr.nano = nanoId;
|
plr.activeNano = nanoId;
|
||||||
PlayerManager::updatePlayer(sock, plr);
|
PlayerManager::updatePlayer(sock, plr);
|
||||||
|
|
||||||
DEBUGLOG(
|
DEBUGLOG(
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ struct Player {
|
|||||||
sPCStyle2 PCStyle2;
|
sPCStyle2 PCStyle2;
|
||||||
sNano Nanos[37]; // acquired nanos
|
sNano Nanos[37]; // acquired nanos
|
||||||
int equippedNanos[3];
|
int equippedNanos[3];
|
||||||
int nano; // active nano (index into Nanos)
|
int activeNano; // active nano (index into Nanos)
|
||||||
|
|
||||||
int x, y, z, angle;
|
int x, y, z, angle;
|
||||||
sItemBase Equip[AEQUIP_COUNT];
|
sItemBase Equip[AEQUIP_COUNT];
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ void PlayerManager::init() {
|
|||||||
REGISTER_SHARD_PACKET(P_CL2FE_REP_LIVE_CHECK, PlayerManager::heartbeatPlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REP_LIVE_CHECK, PlayerManager::heartbeatPlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_REGEN, PlayerManager::revivePlayer);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_REGEN, PlayerManager::revivePlayer);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_EXIT, PlayerManager::exitGame);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_EXIT, PlayerManager::exitGame);
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_SPECIAL_STATE_SWITCH, PlayerManager::setSpecialSwitchPlayer);
|
||||||
|
|
||||||
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_VEHICLE_OFF, PlayerManager::exitPlayerVehicle);
|
||||||
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_VEHICLE_ON, PlayerManager::enterPlayerVehicle);
|
REGISTER_SHARD_PACKET(P_CL2FE_REQ_PC_VEHICLE_ON, PlayerManager::enterPlayerVehicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +126,7 @@ void PlayerManager::updatePlayerPosition(CNSocket* sock, int X, int Y, int Z) {
|
|||||||
newPlayer.PCAppearanceData.iZ = plr.z;
|
newPlayer.PCAppearanceData.iZ = plr.z;
|
||||||
newPlayer.PCAppearanceData.iAngle = plr.angle;
|
newPlayer.PCAppearanceData.iAngle = plr.angle;
|
||||||
newPlayer.PCAppearanceData.PCStyle = plr.PCStyle;
|
newPlayer.PCAppearanceData.PCStyle = plr.PCStyle;
|
||||||
newPlayer.PCAppearanceData.Nano = plr.Nanos[plr.nano];
|
newPlayer.PCAppearanceData.Nano = plr.Nanos[plr.activeNano];
|
||||||
memcpy(newPlayer.PCAppearanceData.ItemEquip, plr.Equip, sizeof(sItemBase) * AEQUIP_COUNT);
|
memcpy(newPlayer.PCAppearanceData.ItemEquip, plr.Equip, sizeof(sItemBase) * AEQUIP_COUNT);
|
||||||
|
|
||||||
otherSock->sendPacket((void*)&newPlayer, P_FE2CL_PC_NEW, sizeof(sP_FE2CL_PC_NEW));
|
otherSock->sendPacket((void*)&newPlayer, P_FE2CL_PC_NEW, sizeof(sP_FE2CL_PC_NEW));
|
||||||
@@ -136,7 +139,7 @@ void PlayerManager::updatePlayerPosition(CNSocket* sock, int X, int Y, int Z) {
|
|||||||
newPlayer.PCAppearanceData.iZ = otherPlr.z;
|
newPlayer.PCAppearanceData.iZ = otherPlr.z;
|
||||||
newPlayer.PCAppearanceData.iAngle = otherPlr.angle;
|
newPlayer.PCAppearanceData.iAngle = otherPlr.angle;
|
||||||
newPlayer.PCAppearanceData.PCStyle = otherPlr.PCStyle;
|
newPlayer.PCAppearanceData.PCStyle = otherPlr.PCStyle;
|
||||||
newPlayer.PCAppearanceData.Nano = otherPlr.Nanos[otherPlr.nano];
|
newPlayer.PCAppearanceData.Nano = otherPlr.Nanos[otherPlr.activeNano];
|
||||||
memcpy(newPlayer.PCAppearanceData.ItemEquip, otherPlr.Equip, sizeof(sItemBase) * AEQUIP_COUNT);
|
memcpy(newPlayer.PCAppearanceData.ItemEquip, otherPlr.Equip, sizeof(sItemBase) * AEQUIP_COUNT);
|
||||||
|
|
||||||
sock->sendPacket((void*)&newPlayer, P_FE2CL_PC_NEW, sizeof(sP_FE2CL_PC_NEW));
|
sock->sendPacket((void*)&newPlayer, P_FE2CL_PC_NEW, sizeof(sP_FE2CL_PC_NEW));
|
||||||
@@ -568,11 +571,38 @@ void PlayerManager::revivePlayer(CNSocket* sock, CNPacketData* data) {
|
|||||||
void PlayerManager::enterPlayerVehicle(CNSocket* sock, CNPacketData* data) {
|
void PlayerManager::enterPlayerVehicle(CNSocket* sock, CNPacketData* data) {
|
||||||
sP_CL2FE_REQ_PC_VEHICLE_ON* vehicleData = (sP_CL2FE_REQ_PC_VEHICLE_ON*)data->buf;
|
sP_CL2FE_REQ_PC_VEHICLE_ON* vehicleData = (sP_CL2FE_REQ_PC_VEHICLE_ON*)data->buf;
|
||||||
INITSTRUCT(sP_FE2CL_PC_VEHICLE_ON_SUCC, response);
|
INITSTRUCT(sP_FE2CL_PC_VEHICLE_ON_SUCC, response);
|
||||||
|
PlayerView plrv = PlayerManager::players[sock];
|
||||||
|
|
||||||
|
// send to other players
|
||||||
|
//for (CNSocket* otherSock : plrv.viewable) {
|
||||||
|
// otherSock->sendPacket((void*)&response, P_FE2CL_PC_VEHICLE_ON_SUCC, sizeof(sP_FE2CL_PC_VEHICLE_ON_SUCC));
|
||||||
|
//}
|
||||||
|
|
||||||
response.UNUSED = vehicleData->UNUSED;
|
|
||||||
sock->sendPacket((void*)&response, P_FE2CL_PC_VEHICLE_ON_SUCC, sizeof(sP_FE2CL_PC_VEHICLE_ON_SUCC));
|
sock->sendPacket((void*)&response, P_FE2CL_PC_VEHICLE_ON_SUCC, sizeof(sP_FE2CL_PC_VEHICLE_ON_SUCC));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PlayerManager::exitPlayerVehicle(CNSocket* sock, CNPacketData* data) {
|
||||||
|
sP_CL2FE_REQ_PC_VEHICLE_OFF* vehicleData = (sP_CL2FE_REQ_PC_VEHICLE_OFF*)data->buf;
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_VEHICLE_OFF_SUCC, response);
|
||||||
|
PlayerView plrv = PlayerManager::players[sock];
|
||||||
|
|
||||||
|
// send to other players
|
||||||
|
//for (CNSocket* otherSock : plrv.viewable) {
|
||||||
|
// otherSock->sendPacket((void*)&response, P_FE2CL_PC_VEHICLE_OFF_SUCC, sizeof(sP_FE2CL_PC_VEHICLE_OFF_SUCC));
|
||||||
|
//}
|
||||||
|
|
||||||
|
sock->sendPacket((void*)&response, P_FE2CL_PC_VEHICLE_OFF_SUCC, sizeof(sP_FE2CL_PC_VEHICLE_OFF_SUCC));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerManager::setSpecialSwitchPlayer(CNSocket* sock, CNPacketData* data) {
|
||||||
|
sP_CL2FE_REQ_PC_SPECIAL_STATE_SWITCH* specialData = (sP_CL2FE_REQ_PC_SPECIAL_STATE_SWITCH*)data->buf;
|
||||||
|
INITSTRUCT(sP_FE2CL_REP_PC_SPECIAL_STATE_SWITCH_SUCC, response);
|
||||||
|
|
||||||
|
response.iPC_ID = specialData->iPC_ID;
|
||||||
|
response.iReqSpecialStateFlag = specialData->iSpecialStateFlag;
|
||||||
|
sock->sendPacket((void*)&response, P_FE2CL_REP_PC_SPECIAL_STATE_SWITCH_SUCC, sizeof(sP_FE2CL_REP_PC_SPECIAL_STATE_SWITCH_SUCC));
|
||||||
|
}
|
||||||
|
|
||||||
#pragma region Helper methods
|
#pragma region Helper methods
|
||||||
Player PlayerManager::getPlayer(CNSocket* key) {
|
Player PlayerManager::getPlayer(CNSocket* key) {
|
||||||
return players[key].plr;
|
return players[key].plr;
|
||||||
|
|||||||
@@ -44,7 +44,10 @@ namespace PlayerManager {
|
|||||||
void revivePlayer(CNSocket* sock, CNPacketData* data);
|
void revivePlayer(CNSocket* sock, CNPacketData* data);
|
||||||
void exitGame(CNSocket* sock, CNPacketData* data);
|
void exitGame(CNSocket* sock, CNPacketData* data);
|
||||||
|
|
||||||
|
void setSpecialSwitchPlayer(CNSocket* sock, CNPacketData* data);
|
||||||
|
|
||||||
void enterPlayerVehicle(CNSocket* sock, CNPacketData* data);
|
void enterPlayerVehicle(CNSocket* sock, CNPacketData* data);
|
||||||
|
void exitPlayerVehicle(CNSocket* sock, CNPacketData* data);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user