added choising spaceship type for multiplayer and some fix in respawn

This commit is contained in:
Vlad committed 2026-02-25 19:17:42 +06:00
1 parent 5216965496
commit 74c2f786a1
6 files changed
+196 -39

No files matched your search

+25 -17
View File
@@ -267,6 +267,16 @@ namespace ZL
Environment::zoom = DEFAULT_ZOOM;
Environment::tapDownHold = false;
if (networkClient) {
try {
networkClient->Send(std::string("RESPAWN"));
std::cout << "Client: Sent RESPAWN to server\n";
}
catch (...) {
std::cerr << "Client: Failed to send RESPAWN\n";
}
}
std::cerr << "Game restarted\n";
};
@@ -677,8 +687,6 @@ namespace ZL
{
if (!textRenderer) return;
//#ifdef NETWORK
// 2D поверх 3D
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -688,18 +696,12 @@ namespace ZL
if (deadRemotePlayers.count(id)) continue;
const ClientState& st = remotePlayer;
// Позици� корабл� в мире
Vector3f shipWorld = st.position;
float distSq = (Environment::shipState.position - shipWorld).squaredNorm();
/*if (distSq > MAX_DIST_SQ) // дально�ть прори�овки никнейма
continue;*/
float dist = sqrt(distSq);
float alpha = 1.0f; // по�то�нна� видимо�ть
/*float alpha = std::clamp(1.f - (dist - FADE_START) / FADE_RANGE, 0.f, 1.f); // дально�ть прори�овки никнейма
if (alpha < 0.01f)
continue; */
Vector3f labelWorld = shipWorld + Vector3f{ 0.f, -4.f, 0.f }; // регулировка вы�оты
float alpha = 1.0f;
Vector3f labelWorld = shipWorld + Vector3f{ 0.f, -4.f, 0.f };
float sx, sy, depth;
if (!worldToScreen(labelWorld, sx, sy, depth))
continue;
@@ -707,18 +709,21 @@ namespace ZL
float uiX = sx, uiY = sy;
float scale = std::clamp(BASE_SCALE / (dist * PERSPECTIVE_K + 1.f), MIN_SCALE, MAX_SCALE);
// Дефолтный лейбл
std::string label = "Player (" + std::to_string(st.id) + ") " + std::to_string((int)dist) + "m";
std::string displayName;
if (!st.nickname.empty() && st.nickname != "Player") {
displayName = st.nickname;
}
else {
displayName = "Player (" + std::to_string(st.id) + ")";
}
std::string label = displayName + " " + std::to_string((int)dist) + "m";
// TODO: nickname sync
textRenderer->drawText(label, uiX + 1.f, uiY + 1.f, scale, true, { 0.f, 0.f, 0.f, alpha }); // color param
textRenderer->drawText(label, uiX + 1.f, uiY + 1.f, scale, true, { 0.f, 0.f, 0.f, alpha });
textRenderer->drawText(label, uiX, uiY, scale, true, { 1.f, 1.f, 1.f, alpha });
}
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
//#endif
}
int Space::pickTargetId() const
@@ -1288,6 +1293,10 @@ namespace ZL
for (auto const& [id, remotePlayer] : latestRemotePlayers) {
if (networkClient && id == networkClient->GetClientId()) {
continue;
}
if (!remotePlayer.canFetchClientStateAtTime(nowRoundedWithDelay))
{
continue;
@@ -1296,7 +1305,6 @@ namespace ZL
ClientState playerState = remotePlayer.fetchClientStateAtTime(nowRoundedWithDelay);
remotePlayerStates[id] = playerState;
}
for (auto& p : projectiles) {