Zepha/src/world/LocalWorld.h

75 lines
1.5 KiB
C
Raw Normal View History

//
// Created by aurailus on 14/12/18.
//
#pragma once
#include "World.h"
2020-08-13 00:55:18 -07:00
#include "world/dim/LocalDimension.h"
#include "client/conn/ClientNetworkInterpreter.h"
class Window;
2020-11-08 22:57:34 -08:00
class Renderer;
2020-11-08 22:57:34 -08:00
class LocalPlayer;
2020-11-08 22:57:34 -08:00
class LocalSubgame;
2020-11-08 22:57:34 -08:00
class LocalInventoryRefs;
2020-11-08 22:57:34 -08:00
class WorldInterpolationStream;
class LocalWorld : public World {
public:
2020-11-08 22:57:34 -08:00
LocalWorld(SubgamePtr game, ServerConnection& conn, Renderer& window);
void connect();
bool updatePlayerDimension();
void update(double delta) override;
void handleWorldPacket(std::unique_ptr<PacketView> p);
void handlePlayerEntPacket(std::unique_ptr<PacketView> p);
void handleModMessage(const std::string& channel, const std::string& message);
2020-11-08 22:57:34 -08:00
void commitChunk(std::shared_ptr<Chunk> chunk);
virtual void sendMessage(const std::string& channel, const std::string& message) override;
2020-11-08 22:57:34 -08:00
virtual DimensionPtr
createDimension(const std::string& identifier, std::unordered_set<std::string>& biomes) override;
DimensionPtr getActiveDimension();
void setActiveDimension(DimensionPtr);
PlayerPtr getPlayer();
virtual InventoryRefsPtr getRefs() override;
ClientNetworkInterpreter& getNet();
int renderChunks(Renderer& render);
void renderEntities(Renderer& renderer);
int mapBlocksInterpolated = 0;
int lastMeshUpdates = 0;
private:
2020-11-08 22:57:34 -08:00
Renderer& renderer;
ClientNetworkInterpreter net;
std::shared_ptr<LocalInventoryRefs> refs;
PlayerPtr player;
std::shared_ptr<LocalDimension> activeDimension = nullptr;
std::shared_ptr<WorldInterpolationStream> worldGenStream = nullptr;
};