Some checks failed
Linux arm64 / Build (push) Has been cancelled
ajout d'un changement pour la cadence de tir Co-authored-by: Morph01 <145839520+Morph01@users.noreply.github.com> Co-authored-by: Persson-dev <sim16.prib@gmail.com> Reviewed-on: #33 Reviewed-by: Simon Pribylski <sim16.prib@gmail.com> Co-authored-by: Morph01 <thibaut6969delastreet@gmail.com> Co-committed-by: Morph01 <thibaut6969delastreet@gmail.com>
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "blitz/game/Game.h"
|
|
|
|
namespace blitz {
|
|
namespace server {
|
|
|
|
struct ServerDuration {
|
|
std::uint64_t m_GameDuration = 1000 * 3 * 60;
|
|
std::uint64_t m_PrepDuration = 1000 * 10;
|
|
std::uint64_t m_EndDuration = 1000 * 30;
|
|
};
|
|
|
|
class Server;
|
|
|
|
class ServerGame : public game::Game {
|
|
private:
|
|
Server* m_Server;
|
|
utils::Timer m_PositionTimer;
|
|
ServerDuration m_ServerDuration;
|
|
|
|
public:
|
|
ServerGame(Server* server);
|
|
virtual ~ServerGame();
|
|
|
|
void CheckShoot(game::PlayerID player, Vec3f position, float yaw, float pitch);
|
|
|
|
void AddPlayer(game::PlayerID player, const std::string& name) override;
|
|
void RemovePlayer(game::PlayerID player) override;
|
|
|
|
void Tick(std::uint64_t delta) override;
|
|
|
|
void SetGameState(game::GameState gameState, std::uint64_t duration);
|
|
|
|
ServerDuration& GetServerDuration() {
|
|
return m_ServerDuration;
|
|
}
|
|
|
|
void SendServerConfig();
|
|
|
|
private:
|
|
void SendPlayerPositions();
|
|
void DamagePlayer(game::Player& player, game::Player& shooter);
|
|
void UpdateHP(game::Player& player, float newHP);
|
|
void UpdatePlayerStats();
|
|
void StartGame(); // when at least 2 players joined
|
|
void CancelGame(); // when not enough players are left
|
|
void ResetPlayerStats();
|
|
};
|
|
|
|
} // namespace server
|
|
} // namespace blitz
|