]> git.lizzy.rs Git - minetest.git/blobdiff - src/clientiface.h
Don't save alpha channel in screenshots (fixes #1451)
[minetest.git] / src / clientiface.h
index 95f8bd30531241f25c80887b589ce98c216a3060..cb3dae04b71355b95b0dd9996ac2a05a92cf32c6 100644 (file)
@@ -141,37 +141,28 @@ namespace con {
        class Connection;
 }
 
+#define CI_ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0]))
+
 enum ClientState
 {
-       Invalid,
-       Disconnecting,
-       Denied,
-       Created,
-       InitSent,
-       InitDone,
-       DefinitionsSent,
-       Active
-};
-
-static const char* statenames[] = {
-       "Invalid",
-       "Disconnecting",
-       "Denied",
-       "Created",
-       "InitSent",
-       "InitDone",
-       "DefinitionsSent",
-       "Active"
+       CS_Invalid,
+       CS_Disconnecting,
+       CS_Denied,
+       CS_Created,
+       CS_InitSent,
+       CS_InitDone,
+       CS_DefinitionsSent,
+       CS_Active
 };
 
 enum ClientStateEvent
 {
-       Init,
-       GotInit2,
-       SetDenied,
-       SetDefinitionsSent,
-       SetClientReady,
-       Disconnect
+       CSE_Init,
+       CSE_GotInit2,
+       CSE_SetDenied,
+       CSE_SetDefinitionsSent,
+       CSE_SetClientReady,
+       CSE_Disconnect
 };
 
 /*
@@ -215,11 +206,10 @@ class RemoteClient
                net_proto_version(0),
                m_time_from_building(9999),
                m_pending_serialization_version(SER_FMT_VER_INVALID),
-               m_state(Created),
+               m_state(CS_Created),
                m_nearest_unsent_d(0),
                m_nearest_unsent_reset_timer(0.0),
                m_excess_gotblocks(0),
-               m_nothing_to_send_counter(0),
                m_nothing_to_send_pause_timer(0.0),
                m_name(""),
                m_version_major(0),
@@ -248,6 +238,14 @@ class RemoteClient
        void SetBlockNotSent(v3s16 p);
        void SetBlocksNotSent(std::map<v3s16, MapBlock*> &blocks);
 
+       /**
+        * tell client about this block being modified right now.
+        * this information is required to requeue the block in case it's "on wire"
+        * while modification is processed by server
+        * @param p position of modified block
+        */
+       void ResendBlockIfOnWire(v3s16 p);
+
        s32 SendingCount()
        {
                return m_blocks_sending.size();
@@ -355,7 +353,6 @@ class RemoteClient
        u32 m_excess_gotblocks;
 
        // CPU usage optimization
-       u32 m_nothing_to_send_counter;
        float m_nothing_to_send_pause_timer;
 
        /*
@@ -390,7 +387,7 @@ class ClientInterface {
        void step(float dtime);
 
        /* get list of active client id's */
-       std::list<u16> getClientIDs(ClientState min_state=Active);
+       std::list<u16> getClientIDs(ClientState min_state=CS_Active);
 
        /* get list of client player names */
        std::vector<std::string> getPlayerNames();
@@ -408,10 +405,10 @@ class ClientInterface {
        void CreateClient(u16 peer_id);
 
        /* get a client by peer_id */
-       RemoteClient* getClientNoEx(u16 peer_id,  ClientState state_min=Active);
+       RemoteClient* getClientNoEx(u16 peer_id,  ClientState state_min=CS_Active);
 
        /* get client by peer_id (make sure you have list lock before!*/
-       RemoteClient* lockedGetClientNoEx(u16 peer_id,  ClientState state_min=Active);
+       RemoteClient* lockedGetClientNoEx(u16 peer_id,  ClientState state_min=CS_Active);
 
        /* get state of client by id*/
        ClientState getClientState(u16 peer_id);
@@ -432,10 +429,7 @@ class ClientInterface {
        void setEnv(ServerEnvironment* env)
        { assert(m_env == 0); m_env = env; }
 
-       static std::string state2Name(ClientState state) {
-               assert(state < sizeof(statenames));
-               return statenames[state];
-       }
+       static std::string state2Name(ClientState state);
 
 protected:
        //TODO find way to avoid this functions
@@ -463,6 +457,8 @@ class ClientInterface {
        JMutex m_env_mutex;
 
        float m_print_info_timer;
+       
+       static const char *statenames[];
 };
 
 #endif