#define CLIENT_HEADER
#include "network/connection.h"
-#include "environment.h"
+#include "clientenvironment.h"
#include "irrlichttypes_extrabloated.h"
#include "threading/mutex.h"
#include <ostream>
#include "localplayer.h"
#include "hud.h"
#include "particles.h"
-#include "network/networkpacket.h"
+#include "mapnode.h"
+#include "tileanimation.h"
struct MeshMakeData;
class MapBlockMesh;
class Mapper;
struct MinimapMapblock;
class Camera;
+class NetworkPacket;
struct QueuedMeshUpdate
{
bool collision_removal;
bool vertical;
std::string *texture;
+ struct TileAnimationParams animation;
+ u8 glow;
} spawn_particle;
struct{
u16 amount;
f32 maxsize;
bool collisiondetection;
bool collision_removal;
+ u16 attached_id;
bool vertical;
std::string *texture;
u32 id;
+ struct TileAnimationParams animation;
+ u8 glow;
} add_particlespawner;
struct{
u32 id;
void ProcessData(NetworkPacket *pkt);
- // Returns true if something was received
- bool AsyncProcessPacket();
- bool AsyncProcessData();
void Send(NetworkPacket* pkt);
void interact(u8 action, const PointedThing& pointed);
void sendRespawn();
void sendReady();
- ClientEnvironment& getEnv()
- { return m_env; }
+ ClientEnvironment& getEnv() { return m_env; }
+ ITextureSource *tsrc() { return getTextureSource(); }
+ ISoundManager *sound() { return getSoundManager(); }
// Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent)
void removeNode(v3s16 p);
Inventory* getInventory(const InventoryLocation &loc);
void inventoryAction(InventoryAction *a);
- // Gets closest object pointed by the shootline
- // Returns NULL if not found
- ClientActiveObject * getSelectedActiveObject(
- f32 max_d,
- v3f from_pos_f_on_map,
- core::line3d<f32> shootline_on_map
- );
-
- std::list<std::string> getConnectedPlayerNames();
+ const std::list<std::string> &getConnectedPlayerNames()
+ {
+ return m_env.getPlayerNames();
+ }
float getAnimationTime();
void setCrack(int level, v3s16 pos);
u16 getHP();
- u16 getBreath();
- bool checkPrivilege(const std::string &priv)
+ bool checkPrivilege(const std::string &priv) const
{ return (m_privileges.count(priv) != 0); }
bool getChatMessage(std::wstring &message);
u8 getProtoVersion()
{ return m_proto_ver; }
+ bool connectedToServer()
+ { return m_con.Connected(); }
+
float mediaReceiveProgress();
void afterContentReceived(IrrlichtDevice *device);
virtual IItemDefManager* getItemDefManager();
virtual INodeDefManager* getNodeDefManager();
virtual ICraftDefManager* getCraftDefManager();
- virtual ITextureSource* getTextureSource();
+ ITextureSource* getTextureSource();
virtual IShaderSource* getShaderSource();
- virtual scene::ISceneManager* getSceneManager();
+ IShaderSource *shsrc() { return getShaderSource(); }
+ scene::ISceneManager* getSceneManager();
virtual u16 allocateUnknownNodeId(const std::string &name);
virtual ISoundManager* getSoundManager();
virtual MtEventManager* getEventManager();
virtual ParticleManager* getParticleManager();
- virtual bool checkLocalPrivilege(const std::string &priv)
+ bool checkLocalPrivilege(const std::string &priv)
{ return checkPrivilege(priv); }
virtual scene::IAnimatedMesh* getMesh(const std::string &filename);
// Sounds
float m_removed_sounds_check_timer;
// Mapping from server sound ids to our sound ids
- std::map<s32, int> m_sounds_server_to_client;
+ UNORDERED_MAP<s32, int> m_sounds_server_to_client;
// And the other way!
- std::map<int, s32> m_sounds_client_to_server;
+ UNORDERED_MAP<int, s32> m_sounds_client_to_server;
// And relations to objects
- std::map<int, u16> m_sounds_to_objects;
+ UNORDERED_MAP<int, u16> m_sounds_to_objects;
// Privileges
- std::set<std::string> m_privileges;
+ UNORDERED_SET<std::string> m_privileges;
// Detached inventories
// key = name
- std::map<std::string, Inventory*> m_detached_inventories;
+ UNORDERED_MAP<std::string, Inventory*> m_detached_inventories;
// Storage for mesh data for creating multiple instances of the same mesh
StringMap m_mesh_data;