#pragma once

#include "NetworkInterface.h"
#include <queue>

namespace ZL {
    class LocalClient : public INetworkClient {
    private:
        std::queue<std::string> messageQueue;
    public:
        void Connect(const std::string& host, uint16_t port) override;

        void Poll() override;

        void Send(const std::string& message) override;

        bool IsConnected() const override { return true; }
        int GetClientId() const override { return 1; }
        std::vector<ProjectileInfo> getPendingProjectiles() override;

        std::unordered_map<int, ClientStateInterval> getRemotePlayers() override {
            return std::unordered_map<int, ClientStateInterval>();
		}

        std::vector<std::pair<Eigen::Vector3f, Eigen::Matrix3f>> getServerBoxes() override {
            return {};
        }

        std::vector<DeathInfo> getPendingDeaths() override {
            return {};
        }

        std::vector<int> getPendingRespawns() override {
            return {};
        }

        std::vector<BoxDestroyedInfo> getPendingBoxDestructions() override
        {
            return {};
        }
    };
}