Compare commits
2 Commits
631e14e66e
...
39580c15c5
| Author | SHA1 | Date | |
|---|---|---|---|
|
39580c15c5
|
|||
|
ee39c1e429
|
22
include/td/misc/Time.h
Normal file
22
include/td/misc/Time.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
|
||||
namespace td {
|
||||
|
||||
class Timer {
|
||||
private:
|
||||
std::chrono::time_point<std::chrono::system_clock> m_LastTime;
|
||||
|
||||
public:
|
||||
Timer() : m_LastTime(std::chrono::system_clock::now()) {}
|
||||
|
||||
float GetDelta() {
|
||||
auto timeElapsed = std::chrono::system_clock::now() - m_LastTime;
|
||||
float timeSeconds = std::chrono::duration<float, std::chrono::seconds::period>(timeElapsed).count();
|
||||
m_LastTime = std::chrono::system_clock::now();
|
||||
return timeSeconds;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace td
|
||||
@@ -27,16 +27,16 @@ struct MapData {
|
||||
|
||||
namespace pdata {
|
||||
|
||||
/** Client attempts to login (very basic) */
|
||||
struct PlayerLogin {
|
||||
std::string m_PlayerName;
|
||||
};
|
||||
|
||||
/** Server indicates success */
|
||||
struct LoggingSuccess {
|
||||
PlayerID m_PlayerId;
|
||||
};
|
||||
|
||||
/** Client attempts to login (very basic) */
|
||||
struct PlayerLogin {
|
||||
std::string m_PlayerName;
|
||||
};
|
||||
|
||||
/** Player joins the lobby */
|
||||
struct PlayerJoin {
|
||||
PlayerInfo m_Player;
|
||||
@@ -47,6 +47,11 @@ struct PlayerLeave {
|
||||
PlayerID m_PlayerId;
|
||||
};
|
||||
|
||||
/** List of players who joined before */
|
||||
struct PlayerList {
|
||||
std::vector<PlayerInfo> m_Players;
|
||||
};
|
||||
|
||||
struct PredictCommand {
|
||||
CommandPtr m_Command;
|
||||
StepTime m_FrameNumber;
|
||||
|
||||
@@ -29,6 +29,7 @@ enum class PacketID : std::uint8_t {
|
||||
PlaceTower,
|
||||
PlayerJoin,
|
||||
PlayerLeave,
|
||||
PlayerList,
|
||||
PlayerLogin,
|
||||
PredictCommand,
|
||||
SpawnTroop,
|
||||
@@ -58,6 +59,7 @@ using LoggingSuccessPacket = PacketMessage<pdata::LoggingSuccess, PacketID::Logg
|
||||
using PlaceTowerPacket = PacketMessage<pdata::PlaceTower, PacketID::PlaceTower>;
|
||||
using PlayerJoinPacket = PacketMessage<pdata::PlayerJoin, PacketID::PlayerJoin>;
|
||||
using PlayerLeavePacket = PacketMessage<pdata::PlayerLeave, PacketID::PlayerLeave>;
|
||||
using PlayerListPacket = PacketMessage<pdata::PlayerList, PacketID::PlayerList>;
|
||||
using PlayerLoginPacket = PacketMessage<pdata::PlayerLogin, PacketID::PlayerLogin>;
|
||||
using PredictCommandPacket = PacketMessage<pdata::PredictCommand, PacketID::PredictCommand>;
|
||||
using SpawnTroopPacket = PacketMessage<pdata::SpawnTroop, PacketID::SpawnTroop>;
|
||||
@@ -66,11 +68,11 @@ using WorldDataPacket = PacketMessage<pdata::WorldData, PacketID::WorldData>;
|
||||
|
||||
} // namespace packets
|
||||
|
||||
using AllPackets =
|
||||
std::tuple<packets::BeginGamePacket, packets::ChatMessagePacket, packets::DisconnectPacket, packets::KeepAlivePacket,
|
||||
packets::LockStepRequestPacket, packets::LockStepResponsePacket, packets::LockStepsPacket, packets::LoggingSuccessPacket,
|
||||
packets::PlaceTowerPacket, packets::PlayerJoinPacket, packets::PlayerLeavePacket, packets::PlayerLoginPacket,
|
||||
packets::PredictCommandPacket, packets::SpawnTroopPacket, packets::WorldHeaderPacket, packets::WorldDataPacket>;
|
||||
using AllPackets = std::tuple<packets::BeginGamePacket, packets::ChatMessagePacket, packets::DisconnectPacket,
|
||||
packets::KeepAlivePacket, packets::LockStepRequestPacket, packets::LockStepResponsePacket, packets::LockStepsPacket,
|
||||
packets::LoggingSuccessPacket, packets::PlaceTowerPacket, packets::PlayerJoinPacket, packets::PlayerLeavePacket,
|
||||
packets::PlayerListPacket, packets::PlayerLoginPacket, packets::PredictCommandPacket, packets::SpawnTroopPacket,
|
||||
packets::WorldHeaderPacket, packets::WorldDataPacket>;
|
||||
|
||||
class PacketHandler : public sp::GenericHandler<AllPackets> {
|
||||
public:
|
||||
|
||||
13
src/main.cpp
13
src/main.cpp
@@ -1,13 +1,6 @@
|
||||
#include <chrono>
|
||||
#include <td/display/state/MainMenuState.h>
|
||||
|
||||
float GetDelta() {
|
||||
static std::chrono::time_point<std::chrono::system_clock> m_LastTime = std::chrono::system_clock::now();
|
||||
auto timeElapsed = std::chrono::system_clock::now() - m_LastTime;
|
||||
float timeSeconds = std::chrono::duration<float, std::chrono::seconds::period>(timeElapsed).count();
|
||||
m_LastTime = std::chrono::system_clock::now();
|
||||
return timeSeconds;
|
||||
}
|
||||
#include <td/misc/Time.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
// init GL context
|
||||
@@ -15,10 +8,10 @@ int main(int argc, char** argv) {
|
||||
|
||||
display.ChangeState<td::MainMenuState>();
|
||||
|
||||
td::Timer timer;
|
||||
while (!display.IsCloseRequested()) {
|
||||
display.PollEvents();
|
||||
float delta = GetDelta();
|
||||
display.Update(delta);
|
||||
display.Update(timer.GetDelta());
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -8,11 +8,17 @@ namespace server {
|
||||
ConnectionHandler::ConnectionHandler(IServerSocket& a_Server, PlayerID a_Player) : m_Server(a_Server), m_Player(a_Player) {}
|
||||
|
||||
void ConnectionHandler::Handle(const protocol::packets::PlayerLoginPacket& a_Packet) {
|
||||
std::cout << "[Server] " << a_Packet->m_PlayerName << " tried to join !\n";
|
||||
protocol::PlayerInfo pInfo{m_Player, a_Packet->m_PlayerName};
|
||||
m_Server.OnPlayerJoin(m_Player, pInfo);
|
||||
|
||||
// TODO
|
||||
std::vector<protocol::PlayerInfo> players;
|
||||
|
||||
m_Server.Send(m_Player, protocol::packets::LoggingSuccessPacket(m_Player));
|
||||
m_Server.Send(m_Player, protocol::packets::PlayerListPacket(players));
|
||||
m_Server.Broadcast(protocol::packets::PlayerJoinPacket(pInfo));
|
||||
// TODO: send already existing players
|
||||
|
||||
m_Server.OnPlayerJoin(m_Player, pInfo);
|
||||
std::cout << "[Server] " << a_Packet->m_PlayerName << " tried to join !\n";
|
||||
}
|
||||
|
||||
void ConnectionHandler::Handle(const protocol::packets::DisconnectPacket& a_Packet) {
|
||||
|
||||
Reference in New Issue
Block a user