added npc
This commit is contained in:
1 parent
629c9ba7b1
commit
5df2216da6
2 files changed
+160
-58
No files matched your search
+63
-51
@@ -9,67 +9,79 @@
|
||||
|
||||
namespace ZL {
|
||||
|
||||
struct LocalServerBox {
|
||||
Eigen::Vector3f position;
|
||||
Eigen::Matrix3f rotation;
|
||||
float collisionRadius = 2.0f;
|
||||
bool destroyed = false;
|
||||
};
|
||||
struct LocalServerBox {
|
||||
Eigen::Vector3f position;
|
||||
Eigen::Matrix3f rotation;
|
||||
float collisionRadius = 2.0f;
|
||||
bool destroyed = false;
|
||||
};
|
||||
|
||||
struct LocalProjectile {
|
||||
int shooterId = -1;
|
||||
uint64_t spawnMs = 0;
|
||||
Eigen::Vector3f pos;
|
||||
Eigen::Vector3f vel;
|
||||
float lifeMs = 5000.0f;
|
||||
};
|
||||
struct LocalProjectile {
|
||||
int shooterId = -1;
|
||||
uint64_t spawnMs = 0;
|
||||
Eigen::Vector3f pos;
|
||||
Eigen::Vector3f vel;
|
||||
float lifeMs = 5000.0f;
|
||||
};
|
||||
|
||||
class LocalClient : public INetworkClient {
|
||||
private:
|
||||
std::queue<std::string> messageQueue;
|
||||
std::vector<LocalServerBox> serverBoxes;
|
||||
std::vector<LocalProjectile> projectiles;
|
||||
std::vector<ProjectileInfo> pendingProjectiles;
|
||||
std::vector<DeathInfo> pendingDeaths;
|
||||
std::vector<BoxDestroyedInfo> pendingBoxDestructions;
|
||||
std::vector<int> pendingRespawns;
|
||||
struct LocalNPC {
|
||||
int id = -1;
|
||||
ClientState currentState;
|
||||
ClientStateInterval stateHistory;
|
||||
Eigen::Vector3f targetPosition;
|
||||
float speed = 30.0f;
|
||||
uint64_t lastStateUpdateMs = 0;
|
||||
};
|
||||
|
||||
uint64_t lastUpdateMs = 0;
|
||||
ClientState localPlayerState;
|
||||
bool hasLocalPlayerState = false;
|
||||
class LocalClient : public INetworkClient {
|
||||
private:
|
||||
std::queue<std::string> messageQueue;
|
||||
std::vector<LocalServerBox> serverBoxes;
|
||||
std::vector<LocalProjectile> projectiles;
|
||||
std::vector<ProjectileInfo> pendingProjectiles;
|
||||
std::vector<DeathInfo> pendingDeaths;
|
||||
std::vector<BoxDestroyedInfo> pendingBoxDestructions;
|
||||
std::vector<int> pendingRespawns;
|
||||
|
||||
uint64_t lastUpdateMs = 0;
|
||||
ClientState localPlayerState;
|
||||
bool hasLocalPlayerState = false;
|
||||
|
||||
std::vector<LocalNPC> npcs;
|
||||
|
||||
void updatePhysics();
|
||||
void checkCollisions();
|
||||
void generateBoxes();
|
||||
void initializeNPCs();
|
||||
void updateNPCs();
|
||||
Eigen::Vector3f generateRandomPosition();
|
||||
|
||||
public:
|
||||
void Connect(const std::string& host, uint16_t port) override;
|
||||
|
||||
void updatePhysics();
|
||||
void checkCollisions();
|
||||
void generateBoxes();
|
||||
void Poll() override;
|
||||
|
||||
public:
|
||||
void Connect(const std::string& host, uint16_t port) override;
|
||||
void Send(const std::string& message) override;
|
||||
|
||||
void Poll() override;
|
||||
bool IsConnected() const override { return true; }
|
||||
int GetClientId() const override { return 1; }
|
||||
std::vector<ProjectileInfo> getPendingProjectiles() override;
|
||||
|
||||
void Send(const std::string& message) override;
|
||||
std::unordered_map<int, ClientStateInterval> getRemotePlayers() override;
|
||||
|
||||
bool IsConnected() const override { return true; }
|
||||
int GetClientId() const override { return 1; }
|
||||
std::vector<ProjectileInfo> getPendingProjectiles() override;
|
||||
std::vector<std::pair<Eigen::Vector3f, Eigen::Matrix3f>> getServerBoxes() override;
|
||||
|
||||
std::unordered_map<int, ClientStateInterval> getRemotePlayers() override {
|
||||
return std::unordered_map<int, ClientStateInterval>();
|
||||
}
|
||||
std::vector<DeathInfo> getPendingDeaths() override;
|
||||
|
||||
std::vector<std::pair<Eigen::Vector3f, Eigen::Matrix3f>> getServerBoxes() override;
|
||||
std::vector<int> getPendingRespawns() override {
|
||||
return {};
|
||||
}
|
||||
|
||||
std::vector<DeathInfo> getPendingDeaths() override;
|
||||
std::vector<BoxDestroyedInfo> getPendingBoxDestructions() override;
|
||||
|
||||
std::vector<int> getPendingRespawns() override {
|
||||
return {};
|
||||
}
|
||||
|
||||
std::vector<BoxDestroyedInfo> getPendingBoxDestructions() override;
|
||||
|
||||
void setLocalPlayerState(const ClientState& state) {
|
||||
localPlayerState = state;
|
||||
hasLocalPlayerState = true;
|
||||
}
|
||||
};
|
||||
void setLocalPlayerState(const ClientState& state) {
|
||||
localPlayerState = state;
|
||||
hasLocalPlayerState = true;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user