mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
C++11 patchset 9: move hardcoded init parameters to class definitions (part 1) (#5984)
* C++11 patchset 9: move hardcoded init parameters to class definitions C++11 introduced the possibility to define the default values directly in class definitions, do it on current code Also remove some unused attributes * CollisionInfo::bouncy * collisionMoveResult::collides_xy * collisionMoveResult::standing_on_unloaded * Clouds::speed * More constructor cleanups + some variables removal * remove only write guiFormSpecMenu::m_old_tooltip * move header included inside defintions in genericobject.h * remove some unused since years exception classes * remove unused & empty debug_stacks_init * remove unused & empty content_nodemeta_serialize_legacy * remove forgotten useless bool (bouncy) in collision.cpp code
This commit is contained in:
parent
49d6e5f4ab
commit
76be103a91
@ -28,14 +28,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "filesys.h"
|
#include "filesys.h"
|
||||||
|
|
||||||
BanManager::BanManager(const std::string &banfilepath):
|
BanManager::BanManager(const std::string &banfilepath):
|
||||||
m_banfilepath(banfilepath),
|
m_banfilepath(banfilepath)
|
||||||
m_modified(false)
|
|
||||||
{
|
{
|
||||||
try{
|
try {
|
||||||
load();
|
load();
|
||||||
}
|
} catch(SerializationError &e) {
|
||||||
catch(SerializationError &e)
|
|
||||||
{
|
|
||||||
warningstream<<"BanManager: creating "
|
warningstream<<"BanManager: creating "
|
||||||
<<m_banfilepath<<std::endl;
|
<<m_banfilepath<<std::endl;
|
||||||
}
|
}
|
||||||
|
@ -44,9 +44,9 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
std::string m_banfilepath;
|
std::string m_banfilepath = "";
|
||||||
StringMap m_ips;
|
StringMap m_ips;
|
||||||
bool m_modified;
|
bool m_modified = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,36 +41,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
|
Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
|
||||||
Client *client):
|
Client *client):
|
||||||
m_playernode(NULL),
|
|
||||||
m_headnode(NULL),
|
|
||||||
m_cameranode(NULL),
|
|
||||||
|
|
||||||
m_wieldmgr(NULL),
|
|
||||||
m_wieldnode(NULL),
|
|
||||||
|
|
||||||
m_draw_control(draw_control),
|
m_draw_control(draw_control),
|
||||||
m_client(client),
|
m_client(client)
|
||||||
|
|
||||||
m_camera_position(0,0,0),
|
|
||||||
m_camera_direction(0,0,0),
|
|
||||||
m_camera_offset(0,0,0),
|
|
||||||
|
|
||||||
m_aspect(1.0),
|
|
||||||
m_fov_x(1.0),
|
|
||||||
m_fov_y(1.0),
|
|
||||||
|
|
||||||
m_view_bobbing_anim(0),
|
|
||||||
m_view_bobbing_state(0),
|
|
||||||
m_view_bobbing_speed(0),
|
|
||||||
m_view_bobbing_fall(0),
|
|
||||||
|
|
||||||
m_digging_anim(0),
|
|
||||||
m_digging_button(-1),
|
|
||||||
|
|
||||||
m_wield_change_timer(0.125),
|
|
||||||
m_wield_item_next(),
|
|
||||||
|
|
||||||
m_camera_mode(CAMERA_MODE_FIRST)
|
|
||||||
{
|
{
|
||||||
//dstream<<FUNCTION_NAME<<std::endl;
|
//dstream<<FUNCTION_NAME<<std::endl;
|
||||||
|
|
||||||
|
32
src/camera.h
32
src/camera.h
@ -168,12 +168,12 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// Nodes
|
// Nodes
|
||||||
scene::ISceneNode* m_playernode;
|
scene::ISceneNode *m_playernode = nullptr;
|
||||||
scene::ISceneNode* m_headnode;
|
scene::ISceneNode *m_headnode = nullptr;
|
||||||
scene::ICameraSceneNode* m_cameranode;
|
scene::ICameraSceneNode *m_cameranode = nullptr;
|
||||||
|
|
||||||
scene::ISceneManager* m_wieldmgr;
|
scene::ISceneManager *m_wieldmgr = nullptr;
|
||||||
WieldMeshSceneNode* m_wieldnode;
|
WieldMeshSceneNode *m_wieldnode = nullptr;
|
||||||
|
|
||||||
// draw control
|
// draw control
|
||||||
MapDrawControl& m_draw_control;
|
MapDrawControl& m_draw_control;
|
||||||
@ -189,33 +189,33 @@ private:
|
|||||||
v3s16 m_camera_offset;
|
v3s16 m_camera_offset;
|
||||||
|
|
||||||
// Field of view and aspect ratio stuff
|
// Field of view and aspect ratio stuff
|
||||||
f32 m_aspect;
|
f32 m_aspect = 1.0f;
|
||||||
f32 m_fov_x;
|
f32 m_fov_x = 1.0f;
|
||||||
f32 m_fov_y;
|
f32 m_fov_y = 1.0f;
|
||||||
|
|
||||||
// View bobbing animation frame (0 <= m_view_bobbing_anim < 1)
|
// View bobbing animation frame (0 <= m_view_bobbing_anim < 1)
|
||||||
f32 m_view_bobbing_anim;
|
f32 m_view_bobbing_anim = 0.0f;
|
||||||
// If 0, view bobbing is off (e.g. player is standing).
|
// If 0, view bobbing is off (e.g. player is standing).
|
||||||
// If 1, view bobbing is on (player is walking).
|
// If 1, view bobbing is on (player is walking).
|
||||||
// If 2, view bobbing is getting switched off.
|
// If 2, view bobbing is getting switched off.
|
||||||
s32 m_view_bobbing_state;
|
s32 m_view_bobbing_state = 0;
|
||||||
// Speed of view bobbing animation
|
// Speed of view bobbing animation
|
||||||
f32 m_view_bobbing_speed;
|
f32 m_view_bobbing_speed = 0.0f;
|
||||||
// Fall view bobbing
|
// Fall view bobbing
|
||||||
f32 m_view_bobbing_fall;
|
f32 m_view_bobbing_fall = 0.0f;
|
||||||
|
|
||||||
// Digging animation frame (0 <= m_digging_anim < 1)
|
// Digging animation frame (0 <= m_digging_anim < 1)
|
||||||
f32 m_digging_anim;
|
f32 m_digging_anim = 0.0f;
|
||||||
// If -1, no digging animation
|
// If -1, no digging animation
|
||||||
// If 0, left-click digging animation
|
// If 0, left-click digging animation
|
||||||
// If 1, right-click digging animation
|
// If 1, right-click digging animation
|
||||||
s32 m_digging_button;
|
s32 m_digging_button = -1;
|
||||||
|
|
||||||
// Animation when changing wielded item
|
// Animation when changing wielded item
|
||||||
f32 m_wield_change_timer;
|
f32 m_wield_change_timer = 0.125f;
|
||||||
ItemStack m_wield_item_next;
|
ItemStack m_wield_item_next;
|
||||||
|
|
||||||
CameraMode m_camera_mode;
|
CameraMode m_camera_mode = CAMERA_MODE_FIRST;
|
||||||
|
|
||||||
f32 m_cache_fall_bobbing_amount;
|
f32 m_cache_fall_bobbing_amount;
|
||||||
f32 m_cache_view_bobbing_amount;
|
f32 m_cache_view_bobbing_amount;
|
||||||
|
19
src/chat.cpp
19
src/chat.cpp
@ -27,13 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "util/numeric.h"
|
#include "util/numeric.h"
|
||||||
|
|
||||||
ChatBuffer::ChatBuffer(u32 scrollback):
|
ChatBuffer::ChatBuffer(u32 scrollback):
|
||||||
m_scrollback(scrollback),
|
m_scrollback(scrollback)
|
||||||
m_unformatted(),
|
|
||||||
m_cols(0),
|
|
||||||
m_rows(0),
|
|
||||||
m_scroll(0),
|
|
||||||
m_formatted(),
|
|
||||||
m_empty_formatted_line()
|
|
||||||
{
|
{
|
||||||
if (m_scrollback == 0)
|
if (m_scrollback == 0)
|
||||||
m_scrollback = 1;
|
m_scrollback = 1;
|
||||||
@ -383,16 +377,7 @@ s32 ChatBuffer::getBottomScrollPos() const
|
|||||||
|
|
||||||
ChatPrompt::ChatPrompt(const std::wstring &prompt, u32 history_limit):
|
ChatPrompt::ChatPrompt(const std::wstring &prompt, u32 history_limit):
|
||||||
m_prompt(prompt),
|
m_prompt(prompt),
|
||||||
m_line(L""),
|
m_history_limit(history_limit)
|
||||||
m_history(),
|
|
||||||
m_history_index(0),
|
|
||||||
m_history_limit(history_limit),
|
|
||||||
m_cols(0),
|
|
||||||
m_view(0),
|
|
||||||
m_cursor(0),
|
|
||||||
m_cursor_len(0),
|
|
||||||
m_nick_completion_start(0),
|
|
||||||
m_nick_completion_end(0)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
28
src/chat.h
28
src/chat.h
@ -32,21 +32,19 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
struct ChatLine
|
struct ChatLine
|
||||||
{
|
{
|
||||||
// age in seconds
|
// age in seconds
|
||||||
f32 age;
|
f32 age = 0.0f;
|
||||||
// name of sending player, or empty if sent by server
|
// name of sending player, or empty if sent by server
|
||||||
EnrichedString name;
|
EnrichedString name;
|
||||||
// message text
|
// message text
|
||||||
EnrichedString text;
|
EnrichedString text;
|
||||||
|
|
||||||
ChatLine(const std::wstring &a_name, const std::wstring &a_text):
|
ChatLine(const std::wstring &a_name, const std::wstring &a_text):
|
||||||
age(0.0),
|
|
||||||
name(a_name),
|
name(a_name),
|
||||||
text(a_text)
|
text(a_text)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatLine(const EnrichedString &a_name, const EnrichedString &a_text):
|
ChatLine(const EnrichedString &a_name, const EnrichedString &a_text):
|
||||||
age(0.0),
|
|
||||||
name(a_name),
|
name(a_name),
|
||||||
text(a_text)
|
text(a_text)
|
||||||
{
|
{
|
||||||
@ -132,11 +130,11 @@ private:
|
|||||||
std::vector<ChatLine> m_unformatted;
|
std::vector<ChatLine> m_unformatted;
|
||||||
|
|
||||||
// Number of character columns in console
|
// Number of character columns in console
|
||||||
u32 m_cols;
|
u32 m_cols = 0;
|
||||||
// Number of character rows in console
|
// Number of character rows in console
|
||||||
u32 m_rows;
|
u32 m_rows = 0;
|
||||||
// Scroll position (console's top line index into m_formatted)
|
// Scroll position (console's top line index into m_formatted)
|
||||||
s32 m_scroll;
|
s32 m_scroll = 0;
|
||||||
// Array of formatted lines
|
// Array of formatted lines
|
||||||
std::vector<ChatFormattedLine> m_formatted;
|
std::vector<ChatFormattedLine> m_formatted;
|
||||||
// Empty formatted line, for error returns
|
// Empty formatted line, for error returns
|
||||||
@ -225,29 +223,29 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// Prompt prefix
|
// Prompt prefix
|
||||||
std::wstring m_prompt;
|
std::wstring m_prompt = L"";
|
||||||
// Currently edited line
|
// Currently edited line
|
||||||
std::wstring m_line;
|
std::wstring m_line = L"";
|
||||||
// History buffer
|
// History buffer
|
||||||
std::vector<std::wstring> m_history;
|
std::vector<std::wstring> m_history;
|
||||||
// History index (0 <= m_history_index <= m_history.size())
|
// History index (0 <= m_history_index <= m_history.size())
|
||||||
u32 m_history_index;
|
u32 m_history_index = 0;
|
||||||
// Maximum number of history entries
|
// Maximum number of history entries
|
||||||
u32 m_history_limit;
|
u32 m_history_limit;
|
||||||
|
|
||||||
// Number of columns excluding columns reserved for the prompt
|
// Number of columns excluding columns reserved for the prompt
|
||||||
s32 m_cols;
|
s32 m_cols = 0;
|
||||||
// Start of visible portion (index into m_line)
|
// Start of visible portion (index into m_line)
|
||||||
s32 m_view;
|
s32 m_view = 0;
|
||||||
// Cursor (index into m_line)
|
// Cursor (index into m_line)
|
||||||
s32 m_cursor;
|
s32 m_cursor = 0;
|
||||||
// Cursor length (length of selected portion of line)
|
// Cursor length (length of selected portion of line)
|
||||||
s32 m_cursor_len;
|
s32 m_cursor_len = 0;
|
||||||
|
|
||||||
// Last nick completion start (index into m_line)
|
// Last nick completion start (index into m_line)
|
||||||
s32 m_nick_completion_start;
|
s32 m_nick_completion_start = 0;
|
||||||
// Last nick completion start (index into m_line)
|
// Last nick completion start (index into m_line)
|
||||||
s32 m_nick_completion_end;
|
s32 m_nick_completion_end = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ChatBackend
|
class ChatBackend
|
||||||
|
@ -69,11 +69,6 @@ Client::Client(
|
|||||||
bool ipv6,
|
bool ipv6,
|
||||||
GameUIFlags *game_ui_flags
|
GameUIFlags *game_ui_flags
|
||||||
):
|
):
|
||||||
m_packetcounter_timer(0.0),
|
|
||||||
m_connection_reinit_timer(0.1),
|
|
||||||
m_avg_rtt_timer(0.0),
|
|
||||||
m_playerpos_send_timer(0.0),
|
|
||||||
m_ignore_damage_timer(0.0),
|
|
||||||
m_tsrc(tsrc),
|
m_tsrc(tsrc),
|
||||||
m_shsrc(shsrc),
|
m_shsrc(shsrc),
|
||||||
m_itemdef(itemdef),
|
m_itemdef(itemdef),
|
||||||
@ -92,40 +87,13 @@ Client::Client(
|
|||||||
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
|
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
|
||||||
m_address_name(address_name),
|
m_address_name(address_name),
|
||||||
m_device(device),
|
m_device(device),
|
||||||
m_camera(NULL),
|
|
||||||
m_minimap(NULL),
|
|
||||||
m_minimap_disabled_by_server(false),
|
|
||||||
m_server_ser_ver(SER_FMT_VER_INVALID),
|
m_server_ser_ver(SER_FMT_VER_INVALID),
|
||||||
m_proto_ver(0),
|
|
||||||
m_playeritem(0),
|
|
||||||
m_inventory_updated(false),
|
|
||||||
m_inventory_from_server(NULL),
|
|
||||||
m_inventory_from_server_age(0.0),
|
|
||||||
m_animation_time(0),
|
|
||||||
m_crack_level(-1),
|
|
||||||
m_crack_pos(0,0,0),
|
|
||||||
m_last_chat_message_sent(time(NULL)),
|
m_last_chat_message_sent(time(NULL)),
|
||||||
m_chat_message_allowance(5.0f),
|
|
||||||
m_map_seed(0),
|
|
||||||
m_password(password),
|
m_password(password),
|
||||||
m_chosen_auth_mech(AUTH_MECHANISM_NONE),
|
m_chosen_auth_mech(AUTH_MECHANISM_NONE),
|
||||||
m_auth_data(NULL),
|
|
||||||
m_access_denied(false),
|
|
||||||
m_access_denied_reconnect(false),
|
|
||||||
m_itemdef_received(false),
|
|
||||||
m_nodedef_received(false),
|
|
||||||
m_media_downloader(new ClientMediaDownloader()),
|
m_media_downloader(new ClientMediaDownloader()),
|
||||||
m_time_of_day_set(false),
|
|
||||||
m_last_time_of_day_f(-1),
|
|
||||||
m_time_of_day_update_timer(0),
|
|
||||||
m_recommended_send_interval(0.1),
|
|
||||||
m_removed_sounds_check_timer(0),
|
|
||||||
m_state(LC_Created),
|
m_state(LC_Created),
|
||||||
m_localdb(NULL),
|
m_game_ui_flags(game_ui_flags)
|
||||||
m_script(NULL),
|
|
||||||
m_mod_storage_save_timer(10.0f),
|
|
||||||
m_game_ui_flags(game_ui_flags),
|
|
||||||
m_shutdown(false)
|
|
||||||
{
|
{
|
||||||
// Add local player
|
// Add local player
|
||||||
m_env.setLocalPlayer(new LocalPlayer(this, playername));
|
m_env.setLocalPlayer(new LocalPlayer(this, playername));
|
||||||
|
64
src/client.h
64
src/client.h
@ -575,11 +575,11 @@ private:
|
|||||||
|
|
||||||
bool canSendChatMessage() const;
|
bool canSendChatMessage() const;
|
||||||
|
|
||||||
float m_packetcounter_timer;
|
float m_packetcounter_timer = 0.0f;
|
||||||
float m_connection_reinit_timer;
|
float m_connection_reinit_timer = 0.1f;
|
||||||
float m_avg_rtt_timer;
|
float m_avg_rtt_timer = 0.0f;
|
||||||
float m_playerpos_send_timer;
|
float m_playerpos_send_timer = 0.0f;
|
||||||
float m_ignore_damage_timer; // Used after server moves player
|
float m_ignore_damage_timer = 0.0f; // Used after server moves player
|
||||||
IntervalLimiter m_map_timer_and_unload_interval;
|
IntervalLimiter m_map_timer_and_unload_interval;
|
||||||
|
|
||||||
IWritableTextureSource *m_tsrc;
|
IWritableTextureSource *m_tsrc;
|
||||||
@ -596,9 +596,9 @@ private:
|
|||||||
con::Connection m_con;
|
con::Connection m_con;
|
||||||
std::string m_address_name;
|
std::string m_address_name;
|
||||||
IrrlichtDevice *m_device;
|
IrrlichtDevice *m_device;
|
||||||
Camera *m_camera;
|
Camera *m_camera = nullptr;
|
||||||
Minimap *m_minimap;
|
Minimap *m_minimap = nullptr;
|
||||||
bool m_minimap_disabled_by_server;
|
bool m_minimap_disabled_by_server = false;
|
||||||
// Server serialization version
|
// Server serialization version
|
||||||
u8 m_server_ser_ver;
|
u8 m_server_ser_ver;
|
||||||
|
|
||||||
@ -607,16 +607,16 @@ private:
|
|||||||
// and aren't accurate. We simply just don't know, because
|
// and aren't accurate. We simply just don't know, because
|
||||||
// the server didn't send the version back then.
|
// the server didn't send the version back then.
|
||||||
// If 0, server init hasn't been received yet.
|
// If 0, server init hasn't been received yet.
|
||||||
u8 m_proto_ver;
|
u8 m_proto_ver = 0;
|
||||||
|
|
||||||
u16 m_playeritem;
|
u16 m_playeritem = 0;
|
||||||
bool m_inventory_updated;
|
bool m_inventory_updated = false;
|
||||||
Inventory *m_inventory_from_server;
|
Inventory *m_inventory_from_server = nullptr;
|
||||||
float m_inventory_from_server_age;
|
float m_inventory_from_server_age = 0.0f;
|
||||||
PacketCounter m_packetcounter;
|
PacketCounter m_packetcounter;
|
||||||
// Block mesh animation parameters
|
// Block mesh animation parameters
|
||||||
float m_animation_time;
|
float m_animation_time = 0.0f;
|
||||||
int m_crack_level;
|
int m_crack_level = -1;
|
||||||
v3s16 m_crack_pos;
|
v3s16 m_crack_pos;
|
||||||
// 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT
|
// 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT
|
||||||
//s32 m_daynight_i;
|
//s32 m_daynight_i;
|
||||||
@ -624,13 +624,13 @@ private:
|
|||||||
std::queue<std::wstring> m_chat_queue;
|
std::queue<std::wstring> m_chat_queue;
|
||||||
std::queue<std::wstring> m_out_chat_queue;
|
std::queue<std::wstring> m_out_chat_queue;
|
||||||
u32 m_last_chat_message_sent;
|
u32 m_last_chat_message_sent;
|
||||||
float m_chat_message_allowance;
|
float m_chat_message_allowance = 5.0f;
|
||||||
|
|
||||||
// The authentication methods we can use to enter sudo mode (=change password)
|
// The authentication methods we can use to enter sudo mode (=change password)
|
||||||
u32 m_sudo_auth_methods;
|
u32 m_sudo_auth_methods;
|
||||||
|
|
||||||
// The seed returned by the server in TOCLIENT_INIT is stored here
|
// The seed returned by the server in TOCLIENT_INIT is stored here
|
||||||
u64 m_map_seed;
|
u64 m_map_seed = 0;
|
||||||
|
|
||||||
// Auth data
|
// Auth data
|
||||||
std::string m_playername;
|
std::string m_playername;
|
||||||
@ -639,27 +639,27 @@ private:
|
|||||||
std::string m_new_password;
|
std::string m_new_password;
|
||||||
// Usable by auth mechanisms.
|
// Usable by auth mechanisms.
|
||||||
AuthMechanism m_chosen_auth_mech;
|
AuthMechanism m_chosen_auth_mech;
|
||||||
void * m_auth_data;
|
void *m_auth_data = nullptr;
|
||||||
|
|
||||||
|
|
||||||
bool m_access_denied;
|
bool m_access_denied = false;
|
||||||
bool m_access_denied_reconnect;
|
bool m_access_denied_reconnect = false;
|
||||||
std::string m_access_denied_reason;
|
std::string m_access_denied_reason = "";
|
||||||
std::queue<ClientEvent> m_client_event_queue;
|
std::queue<ClientEvent> m_client_event_queue;
|
||||||
bool m_itemdef_received;
|
bool m_itemdef_received = false;
|
||||||
bool m_nodedef_received;
|
bool m_nodedef_received = false;
|
||||||
ClientMediaDownloader *m_media_downloader;
|
ClientMediaDownloader *m_media_downloader;
|
||||||
|
|
||||||
// time_of_day speed approximation for old protocol
|
// time_of_day speed approximation for old protocol
|
||||||
bool m_time_of_day_set;
|
bool m_time_of_day_set = false;
|
||||||
float m_last_time_of_day_f;
|
float m_last_time_of_day_f = -1.0f;
|
||||||
float m_time_of_day_update_timer;
|
float m_time_of_day_update_timer = 0.0f;
|
||||||
|
|
||||||
// An interval for generally sending object positions and stuff
|
// An interval for generally sending object positions and stuff
|
||||||
float m_recommended_send_interval;
|
float m_recommended_send_interval = 0.1f;
|
||||||
|
|
||||||
// Sounds
|
// Sounds
|
||||||
float m_removed_sounds_check_timer;
|
float m_removed_sounds_check_timer = 0.0f;
|
||||||
// Mapping from server sound ids to our sound ids
|
// Mapping from server sound ids to our sound ids
|
||||||
std::unordered_map<s32, int> m_sounds_server_to_client;
|
std::unordered_map<s32, int> m_sounds_server_to_client;
|
||||||
// And the other way!
|
// And the other way!
|
||||||
@ -681,17 +681,17 @@ private:
|
|||||||
LocalClientState m_state;
|
LocalClientState m_state;
|
||||||
|
|
||||||
// Used for saving server map to disk client-side
|
// Used for saving server map to disk client-side
|
||||||
MapDatabase *m_localdb;
|
MapDatabase *m_localdb = nullptr;
|
||||||
IntervalLimiter m_localdb_save_interval;
|
IntervalLimiter m_localdb_save_interval;
|
||||||
u16 m_cache_save_interval;
|
u16 m_cache_save_interval;
|
||||||
|
|
||||||
ClientScripting *m_script;
|
ClientScripting *m_script = nullptr;
|
||||||
bool m_modding_enabled;
|
bool m_modding_enabled;
|
||||||
std::unordered_map<std::string, ModMetadata *> m_mod_storages;
|
std::unordered_map<std::string, ModMetadata *> m_mod_storages;
|
||||||
float m_mod_storage_save_timer;
|
float m_mod_storage_save_timer = 10.0f;
|
||||||
GameUIFlags *m_game_ui_flags;
|
GameUIFlags *m_game_ui_flags;
|
||||||
|
|
||||||
bool m_shutdown;
|
bool m_shutdown = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // !CLIENT_HEADER
|
#endif // !CLIENT_HEADER
|
||||||
|
@ -41,11 +41,9 @@ ClientEnvironment::ClientEnvironment(ClientMap *map, scene::ISceneManager *smgr,
|
|||||||
IrrlichtDevice *irr):
|
IrrlichtDevice *irr):
|
||||||
Environment(client),
|
Environment(client),
|
||||||
m_map(map),
|
m_map(map),
|
||||||
m_local_player(NULL),
|
|
||||||
m_smgr(smgr),
|
m_smgr(smgr),
|
||||||
m_texturesource(texturesource),
|
m_texturesource(texturesource),
|
||||||
m_client(client),
|
m_client(client),
|
||||||
m_script(NULL),
|
|
||||||
m_irr(irr)
|
m_irr(irr)
|
||||||
{
|
{
|
||||||
char zero = 0;
|
char zero = 0;
|
||||||
|
@ -176,11 +176,11 @@ public:
|
|||||||
v3s16 getCameraOffset() const { return m_camera_offset; }
|
v3s16 getCameraOffset() const { return m_camera_offset; }
|
||||||
private:
|
private:
|
||||||
ClientMap *m_map;
|
ClientMap *m_map;
|
||||||
LocalPlayer *m_local_player;
|
LocalPlayer *m_local_player = nullptr;
|
||||||
scene::ISceneManager *m_smgr;
|
scene::ISceneManager *m_smgr;
|
||||||
ITextureSource *m_texturesource;
|
ITextureSource *m_texturesource;
|
||||||
Client *m_client;
|
Client *m_client;
|
||||||
ClientScripting *m_script;
|
ClientScripting *m_script = nullptr;
|
||||||
IrrlichtDevice *m_irr;
|
IrrlichtDevice *m_irr;
|
||||||
ClientActiveObjectMap m_active_objects;
|
ClientActiveObjectMap m_active_objects;
|
||||||
std::vector<ClientSimpleObject*> m_simple_objects;
|
std::vector<ClientSimpleObject*> m_simple_objects;
|
||||||
|
@ -226,51 +226,27 @@ public:
|
|||||||
// NOTE: If client is made allowed to exist while peer doesn't,
|
// NOTE: If client is made allowed to exist while peer doesn't,
|
||||||
// this has to be set to 0 when there is no peer.
|
// this has to be set to 0 when there is no peer.
|
||||||
// Also, the client must be moved to some other container.
|
// Also, the client must be moved to some other container.
|
||||||
u16 peer_id;
|
u16 peer_id = PEER_ID_INEXISTENT;
|
||||||
// The serialization version to use with the client
|
// The serialization version to use with the client
|
||||||
u8 serialization_version;
|
u8 serialization_version = SER_FMT_VER_INVALID;
|
||||||
//
|
//
|
||||||
u16 net_proto_version;
|
u16 net_proto_version = 0;
|
||||||
|
|
||||||
/* Authentication information */
|
/* Authentication information */
|
||||||
std::string enc_pwd;
|
std::string enc_pwd = "";
|
||||||
bool create_player_on_auth_success;
|
bool create_player_on_auth_success = false;
|
||||||
AuthMechanism chosen_mech;
|
AuthMechanism chosen_mech = AUTH_MECHANISM_NONE;
|
||||||
void * auth_data;
|
void *auth_data = nullptr;
|
||||||
u32 allowed_auth_mechs;
|
u32 allowed_auth_mechs = 0;
|
||||||
u32 allowed_sudo_mechs;
|
u32 allowed_sudo_mechs = 0;
|
||||||
|
|
||||||
bool isSudoMechAllowed(AuthMechanism mech)
|
bool isSudoMechAllowed(AuthMechanism mech)
|
||||||
{ return allowed_sudo_mechs & mech; }
|
{ return allowed_sudo_mechs & mech; }
|
||||||
bool isMechAllowed(AuthMechanism mech)
|
bool isMechAllowed(AuthMechanism mech)
|
||||||
{ return allowed_auth_mechs & mech; }
|
{ return allowed_auth_mechs & mech; }
|
||||||
|
|
||||||
RemoteClient():
|
RemoteClient() {}
|
||||||
peer_id(PEER_ID_INEXISTENT),
|
~RemoteClient() {}
|
||||||
serialization_version(SER_FMT_VER_INVALID),
|
|
||||||
net_proto_version(0),
|
|
||||||
create_player_on_auth_success(false),
|
|
||||||
chosen_mech(AUTH_MECHANISM_NONE),
|
|
||||||
auth_data(NULL),
|
|
||||||
m_time_from_building(9999),
|
|
||||||
m_pending_serialization_version(SER_FMT_VER_INVALID),
|
|
||||||
m_state(CS_Created),
|
|
||||||
m_nearest_unsent_d(0),
|
|
||||||
m_nearest_unsent_reset_timer(0.0),
|
|
||||||
m_excess_gotblocks(0),
|
|
||||||
m_nothing_to_send_pause_timer(0.0),
|
|
||||||
m_name(""),
|
|
||||||
m_version_major(0),
|
|
||||||
m_version_minor(0),
|
|
||||||
m_version_patch(0),
|
|
||||||
m_full_version("unknown"),
|
|
||||||
m_deployed_compression(0),
|
|
||||||
m_connection_time(porting::getTimeS())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
~RemoteClient()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Finds block that should be sent next to the client.
|
Finds block that should be sent next to the client.
|
||||||
@ -317,7 +293,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Time from last placing or removing blocks
|
// Time from last placing or removing blocks
|
||||||
float m_time_from_building;
|
float m_time_from_building = 9999;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
List of active objects that the client knows of.
|
List of active objects that the client knows of.
|
||||||
@ -361,10 +337,10 @@ public:
|
|||||||
u8 getPatch() const { return m_version_patch; }
|
u8 getPatch() const { return m_version_patch; }
|
||||||
private:
|
private:
|
||||||
// Version is stored in here after INIT before INIT2
|
// Version is stored in here after INIT before INIT2
|
||||||
u8 m_pending_serialization_version;
|
u8 m_pending_serialization_version = SER_FMT_VER_INVALID;
|
||||||
|
|
||||||
/* current state of client */
|
/* current state of client */
|
||||||
ClientState m_state;
|
ClientState m_state = CS_Created;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Blocks that have been sent to client.
|
Blocks that have been sent to client.
|
||||||
@ -376,9 +352,9 @@ private:
|
|||||||
No MapBlock* is stored here because the blocks can get deleted.
|
No MapBlock* is stored here because the blocks can get deleted.
|
||||||
*/
|
*/
|
||||||
std::set<v3s16> m_blocks_sent;
|
std::set<v3s16> m_blocks_sent;
|
||||||
s16 m_nearest_unsent_d;
|
s16 m_nearest_unsent_d = 0;
|
||||||
v3s16 m_last_center;
|
v3s16 m_last_center;
|
||||||
float m_nearest_unsent_reset_timer;
|
float m_nearest_unsent_reset_timer = 0.0f;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Blocks that are currently on the line.
|
Blocks that are currently on the line.
|
||||||
@ -407,31 +383,31 @@ private:
|
|||||||
and the client then sends two GOTBLOCKs.
|
and the client then sends two GOTBLOCKs.
|
||||||
This is resetted by PrintInfo()
|
This is resetted by PrintInfo()
|
||||||
*/
|
*/
|
||||||
u32 m_excess_gotblocks;
|
u32 m_excess_gotblocks = 0;
|
||||||
|
|
||||||
// CPU usage optimization
|
// CPU usage optimization
|
||||||
float m_nothing_to_send_pause_timer;
|
float m_nothing_to_send_pause_timer = 0.0f;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
name of player using this client
|
name of player using this client
|
||||||
*/
|
*/
|
||||||
std::string m_name;
|
std::string m_name = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
client information
|
client information
|
||||||
*/
|
*/
|
||||||
u8 m_version_major;
|
u8 m_version_major = 0;
|
||||||
u8 m_version_minor;
|
u8 m_version_minor = 0;
|
||||||
u8 m_version_patch;
|
u8 m_version_patch = 0;
|
||||||
|
|
||||||
std::string m_full_version;
|
std::string m_full_version = "unknown";
|
||||||
|
|
||||||
u16 m_deployed_compression;
|
u16 m_deployed_compression = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
time this client was created
|
time this client was created
|
||||||
*/
|
*/
|
||||||
const u64 m_connection_time;
|
const u64 m_connection_time = porting::getTimeS();
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::unordered_map<u16, RemoteClient*> RemoteClientMap;
|
typedef std::unordered_map<u16, RemoteClient*> RemoteClientMap;
|
||||||
|
@ -67,13 +67,6 @@ ClientMap::ClientMap(
|
|||||||
|
|
||||||
ClientMap::~ClientMap()
|
ClientMap::~ClientMap()
|
||||||
{
|
{
|
||||||
/*MutexAutoLock lock(mesh_mutex);
|
|
||||||
|
|
||||||
if(mesh != NULL)
|
|
||||||
{
|
|
||||||
mesh->drop();
|
|
||||||
mesh = NULL;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MapSector * ClientMap::emergeSector(v2s16 p2d)
|
MapSector * ClientMap::emergeSector(v2s16 p2d)
|
||||||
|
@ -28,30 +28,20 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
struct MapDrawControl
|
struct MapDrawControl
|
||||||
{
|
{
|
||||||
MapDrawControl():
|
|
||||||
range_all(false),
|
|
||||||
wanted_range(0),
|
|
||||||
wanted_max_blocks(0),
|
|
||||||
show_wireframe(false),
|
|
||||||
blocks_drawn(0),
|
|
||||||
blocks_would_have_drawn(0),
|
|
||||||
farthest_drawn(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
// Overrides limits by drawing everything
|
// Overrides limits by drawing everything
|
||||||
bool range_all;
|
bool range_all = false;
|
||||||
// Wanted drawing range
|
// Wanted drawing range
|
||||||
float wanted_range;
|
float wanted_range = 0.0f;
|
||||||
// Maximum number of blocks to draw
|
// Maximum number of blocks to draw
|
||||||
u32 wanted_max_blocks;
|
u32 wanted_max_blocks = 0;
|
||||||
// show a wire frame for debugging
|
// show a wire frame for debugging
|
||||||
bool show_wireframe;
|
bool show_wireframe = false;
|
||||||
// Number of blocks rendered is written here by the renderer
|
// Number of blocks rendered is written here by the renderer
|
||||||
u32 blocks_drawn;
|
u32 blocks_drawn = 0;
|
||||||
// Number of blocks that would have been drawn in wanted_range
|
// Number of blocks that would have been drawn in wanted_range
|
||||||
u32 blocks_would_have_drawn;
|
u32 blocks_would_have_drawn = 0;
|
||||||
// Distance to the farthest block drawn
|
// Distance to the farthest block drawn
|
||||||
float farthest_drawn;
|
float farthest_drawn = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Client;
|
class Client;
|
||||||
@ -137,13 +127,14 @@ public:
|
|||||||
private:
|
private:
|
||||||
Client *m_client;
|
Client *m_client;
|
||||||
|
|
||||||
aabb3f m_box;
|
aabb3f m_box = aabb3f(-BS * 1000000, -BS * 1000000, -BS * 1000000,
|
||||||
|
BS * 1000000, BS * 1000000, BS * 1000000);
|
||||||
|
|
||||||
MapDrawControl &m_control;
|
MapDrawControl &m_control;
|
||||||
|
|
||||||
v3f m_camera_position;
|
v3f m_camera_position;
|
||||||
v3f m_camera_direction;
|
v3f m_camera_direction = v3f(0,0,1);
|
||||||
f32 m_camera_fov;
|
f32 m_camera_fov = M_PI;
|
||||||
v3s16 m_camera_offset;
|
v3s16 m_camera_offset;
|
||||||
|
|
||||||
std::map<v3s16, MapBlock*> m_drawlist;
|
std::map<v3s16, MapBlock*> m_drawlist;
|
||||||
|
@ -43,17 +43,8 @@ static std::string getMediaCacheDir()
|
|||||||
|
|
||||||
ClientMediaDownloader::ClientMediaDownloader():
|
ClientMediaDownloader::ClientMediaDownloader():
|
||||||
m_media_cache(getMediaCacheDir()),
|
m_media_cache(getMediaCacheDir()),
|
||||||
m_initial_step_done(false),
|
m_httpfetch_caller(HTTPFETCH_DISCARD)
|
||||||
m_uncached_count(0),
|
|
||||||
m_uncached_received_count(0),
|
|
||||||
m_name_bound("")
|
|
||||||
{
|
{
|
||||||
m_httpfetch_caller = HTTPFETCH_DISCARD;
|
|
||||||
m_httpfetch_active = 0;
|
|
||||||
m_httpfetch_active_limit = 0;
|
|
||||||
m_httpfetch_next_id = 0;
|
|
||||||
m_httpfetch_timeout = 0;
|
|
||||||
m_outstanding_hash_sets = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ClientMediaDownloader::~ClientMediaDownloader()
|
ClientMediaDownloader::~ClientMediaDownloader()
|
||||||
|
@ -123,28 +123,28 @@ private:
|
|||||||
|
|
||||||
// Has an attempt been made to load media files from the file cache?
|
// Has an attempt been made to load media files from the file cache?
|
||||||
// Have hash sets been requested from remote servers?
|
// Have hash sets been requested from remote servers?
|
||||||
bool m_initial_step_done;
|
bool m_initial_step_done = false;
|
||||||
|
|
||||||
// Total number of media files to load
|
// Total number of media files to load
|
||||||
s32 m_uncached_count;
|
s32 m_uncached_count = 0;
|
||||||
|
|
||||||
// Number of media files that have been received
|
// Number of media files that have been received
|
||||||
s32 m_uncached_received_count;
|
s32 m_uncached_received_count = 0;
|
||||||
|
|
||||||
// Status of remote transfers
|
// Status of remote transfers
|
||||||
unsigned long m_httpfetch_caller;
|
unsigned long m_httpfetch_caller;
|
||||||
unsigned long m_httpfetch_next_id;
|
unsigned long m_httpfetch_next_id = 0;
|
||||||
long m_httpfetch_timeout;
|
long m_httpfetch_timeout = 0;
|
||||||
s32 m_httpfetch_active;
|
s32 m_httpfetch_active = 0;
|
||||||
s32 m_httpfetch_active_limit;
|
s32 m_httpfetch_active_limit = 0;
|
||||||
s32 m_outstanding_hash_sets;
|
s32 m_outstanding_hash_sets = 0;
|
||||||
std::unordered_map<unsigned long, std::string> m_remote_file_transfers;
|
std::unordered_map<unsigned long, std::string> m_remote_file_transfers;
|
||||||
|
|
||||||
// All files up to this name have either been received from a
|
// All files up to this name have either been received from a
|
||||||
// remote server or failed on all remote servers, so those files
|
// remote server or failed on all remote servers, so those files
|
||||||
// don't need to be looked at again
|
// don't need to be looked at again
|
||||||
// (use m_files.upper_bound(m_name_bound) to get an iterator)
|
// (use m_files.upper_bound(m_name_bound) to get an iterator)
|
||||||
std::string m_name_bound;
|
std::string m_name_bound = "";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,9 +27,9 @@ class ClientSimpleObject
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
public:
|
public:
|
||||||
bool m_to_be_removed;
|
bool m_to_be_removed = false;
|
||||||
|
|
||||||
ClientSimpleObject() : m_to_be_removed(false) {}
|
ClientSimpleObject() {}
|
||||||
virtual ~ClientSimpleObject() {}
|
virtual ~ClientSimpleObject() {}
|
||||||
virtual void step(float dtime) {}
|
virtual void step(float dtime) {}
|
||||||
};
|
};
|
||||||
|
@ -44,11 +44,7 @@ Clouds::Clouds(
|
|||||||
s16 cloudheight
|
s16 cloudheight
|
||||||
):
|
):
|
||||||
scene::ISceneNode(parent, mgr, id),
|
scene::ISceneNode(parent, mgr, id),
|
||||||
m_seed(seed),
|
m_seed(seed)
|
||||||
m_camera_pos(0.0f, 0.0f),
|
|
||||||
m_origin(0.0f, 0.0f),
|
|
||||||
m_camera_offset(0.0f, 0.0f, 0.0f),
|
|
||||||
m_color(1.0f, 1.0f, 1.0f, 1.0f)
|
|
||||||
{
|
{
|
||||||
m_material.setFlag(video::EMF_LIGHTING, false);
|
m_material.setFlag(video::EMF_LIGHTING, false);
|
||||||
//m_material.setFlag(video::EMF_BACK_FACE_CULLING, false);
|
//m_material.setFlag(video::EMF_BACK_FACE_CULLING, false);
|
||||||
|
@ -135,9 +135,8 @@ private:
|
|||||||
u32 m_seed;
|
u32 m_seed;
|
||||||
v2f m_camera_pos;
|
v2f m_camera_pos;
|
||||||
v2f m_origin;
|
v2f m_origin;
|
||||||
v2f m_speed;
|
|
||||||
v3s16 m_camera_offset;
|
v3s16 m_camera_offset;
|
||||||
video::SColorf m_color;
|
video::SColorf m_color = video::SColorf(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
CloudParams m_params;
|
CloudParams m_params;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -39,7 +39,6 @@ struct NearbyCollisionInfo {
|
|||||||
NearbyCollisionInfo(bool is_ul, bool is_obj, int bouncy,
|
NearbyCollisionInfo(bool is_ul, bool is_obj, int bouncy,
|
||||||
const v3s16 &pos, const aabb3f &box) :
|
const v3s16 &pos, const aabb3f &box) :
|
||||||
is_unloaded(is_ul),
|
is_unloaded(is_ul),
|
||||||
is_step_up(false),
|
|
||||||
is_object(is_obj),
|
is_object(is_obj),
|
||||||
bouncy(bouncy),
|
bouncy(bouncy),
|
||||||
position(pos),
|
position(pos),
|
||||||
@ -47,7 +46,7 @@ struct NearbyCollisionInfo {
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
bool is_unloaded;
|
bool is_unloaded;
|
||||||
bool is_step_up;
|
bool is_step_up = false;
|
||||||
bool is_object;
|
bool is_object;
|
||||||
int bouncy;
|
int bouncy;
|
||||||
v3s16 position;
|
v3s16 position;
|
||||||
@ -469,7 +468,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
|||||||
d));
|
d));
|
||||||
|
|
||||||
// Get bounce multiplier
|
// Get bounce multiplier
|
||||||
bool bouncy = (nearest_info.bouncy >= 1);
|
|
||||||
float bounce = -(float)nearest_info.bouncy / 100.0;
|
float bounce = -(float)nearest_info.bouncy / 100.0;
|
||||||
|
|
||||||
// Move to the point of collision and reduce dtime by nearest_dtime
|
// Move to the point of collision and reduce dtime by nearest_dtime
|
||||||
@ -499,7 +497,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
|||||||
info.type = COLLISION_NODE;
|
info.type = COLLISION_NODE;
|
||||||
|
|
||||||
info.node_p = nearest_info.position;
|
info.node_p = nearest_info.position;
|
||||||
info.bouncy = bouncy;
|
|
||||||
info.old_speed = *speed_f;
|
info.old_speed = *speed_f;
|
||||||
|
|
||||||
// Set the speed component that caused the collision to zero
|
// Set the speed component that caused the collision to zero
|
||||||
@ -513,7 +510,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
|||||||
else
|
else
|
||||||
speed_f->X = 0;
|
speed_f->X = 0;
|
||||||
result.collides = true;
|
result.collides = true;
|
||||||
result.collides_xz = true;
|
|
||||||
} else if (nearest_collided == 1) { // Y
|
} else if (nearest_collided == 1) { // Y
|
||||||
if(fabs(speed_f->Y) > BS * 3)
|
if(fabs(speed_f->Y) > BS * 3)
|
||||||
speed_f->Y *= bounce;
|
speed_f->Y *= bounce;
|
||||||
@ -526,7 +522,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
|||||||
else
|
else
|
||||||
speed_f->Z = 0;
|
speed_f->Z = 0;
|
||||||
result.collides = true;
|
result.collides = true;
|
||||||
result.collides_xz = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info.new_speed = *speed_f;
|
info.new_speed = *speed_f;
|
||||||
@ -572,8 +567,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
|
|||||||
|
|
||||||
if (box_info.is_object)
|
if (box_info.is_object)
|
||||||
result.standing_on_object = true;
|
result.standing_on_object = true;
|
||||||
if (box_info.is_unloaded)
|
|
||||||
result.standing_on_unloaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,37 +36,20 @@ enum CollisionType
|
|||||||
|
|
||||||
struct CollisionInfo
|
struct CollisionInfo
|
||||||
{
|
{
|
||||||
enum CollisionType type;
|
CollisionInfo() {}
|
||||||
v3s16 node_p; // COLLISION_NODE
|
CollisionType type = COLLISION_NODE;
|
||||||
bool bouncy;
|
v3s16 node_p = v3s16(-32768,-32768,-32768); // COLLISION_NODE
|
||||||
v3f old_speed;
|
v3f old_speed;
|
||||||
v3f new_speed;
|
v3f new_speed;
|
||||||
|
|
||||||
CollisionInfo():
|
|
||||||
type(COLLISION_NODE),
|
|
||||||
node_p(-32768,-32768,-32768),
|
|
||||||
bouncy(false),
|
|
||||||
old_speed(0,0,0),
|
|
||||||
new_speed(0,0,0)
|
|
||||||
{}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct collisionMoveResult
|
struct collisionMoveResult
|
||||||
{
|
{
|
||||||
bool touching_ground;
|
collisionMoveResult() {}
|
||||||
bool collides;
|
bool touching_ground = false;
|
||||||
bool collides_xz;
|
bool collides = false;
|
||||||
bool standing_on_unloaded;
|
bool standing_on_object = false;
|
||||||
bool standing_on_object;
|
|
||||||
std::vector<CollisionInfo> collisions;
|
std::vector<CollisionInfo> collisions;
|
||||||
|
|
||||||
collisionMoveResult():
|
|
||||||
touching_ground(false),
|
|
||||||
collides(false),
|
|
||||||
collides_xz(false),
|
|
||||||
standing_on_unloaded(false),
|
|
||||||
standing_on_object(false)
|
|
||||||
{}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Moves using a single iteration; speed should not exceed pos_max_d/dtime
|
// Moves using a single iteration; speed should not exceed pos_max_d/dtime
|
||||||
|
@ -51,16 +51,6 @@ struct ToolCapabilities;
|
|||||||
|
|
||||||
std::unordered_map<u16, ClientActiveObject::Factory> ClientActiveObject::m_types;
|
std::unordered_map<u16, ClientActiveObject::Factory> ClientActiveObject::m_types;
|
||||||
|
|
||||||
SmoothTranslator::SmoothTranslator():
|
|
||||||
vect_old(0,0,0),
|
|
||||||
vect_show(0,0,0),
|
|
||||||
vect_aim(0,0,0),
|
|
||||||
anim_counter(0),
|
|
||||||
anim_time(0),
|
|
||||||
anim_time_counter(0),
|
|
||||||
aim_is_end(true)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void SmoothTranslator::init(v3f vect)
|
void SmoothTranslator::init(v3f vect)
|
||||||
{
|
{
|
||||||
vect_old = vect;
|
vect_old = vect;
|
||||||
@ -72,11 +62,6 @@ void SmoothTranslator::init(v3f vect)
|
|||||||
aim_is_end = true;
|
aim_is_end = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SmoothTranslator::sharpen()
|
|
||||||
{
|
|
||||||
init(vect_show);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SmoothTranslator::update(v3f vect_new, bool is_end_position, float update_interval)
|
void SmoothTranslator::update(v3f vect_new, bool is_end_position, float update_interval)
|
||||||
{
|
{
|
||||||
aim_is_end = is_end_position;
|
aim_is_end = is_end_position;
|
||||||
@ -113,11 +98,6 @@ void SmoothTranslator::translate(f32 dtime)
|
|||||||
vect_show = vect_old + vect_move * moveratio;
|
vect_show = vect_old + vect_move * moveratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SmoothTranslator::is_moving()
|
|
||||||
{
|
|
||||||
return ((anim_time_counter / anim_time) < 1.4);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Other stuff
|
Other stuff
|
||||||
*/
|
*/
|
||||||
@ -325,8 +305,6 @@ private:
|
|||||||
std::string m_infotext;
|
std::string m_infotext;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "inventory.h"
|
|
||||||
|
|
||||||
// Prototype
|
// Prototype
|
||||||
ItemCAO proto_ItemCAO(NULL, NULL);
|
ItemCAO proto_ItemCAO(NULL, NULL);
|
||||||
|
|
||||||
@ -538,49 +516,7 @@ void ItemCAO::initialize(const std::string &data)
|
|||||||
#include "genericobject.h"
|
#include "genericobject.h"
|
||||||
|
|
||||||
GenericCAO::GenericCAO(Client *client, ClientEnvironment *env):
|
GenericCAO::GenericCAO(Client *client, ClientEnvironment *env):
|
||||||
ClientActiveObject(0, client, env),
|
ClientActiveObject(0, client, env)
|
||||||
//
|
|
||||||
m_is_player(false),
|
|
||||||
m_is_local_player(false),
|
|
||||||
//
|
|
||||||
m_smgr(NULL),
|
|
||||||
m_irr(NULL),
|
|
||||||
m_client(NULL),
|
|
||||||
m_selection_box(-BS/3.,-BS/3.,-BS/3., BS/3.,BS/3.,BS/3.),
|
|
||||||
m_meshnode(NULL),
|
|
||||||
m_animated_meshnode(NULL),
|
|
||||||
m_wield_meshnode(NULL),
|
|
||||||
m_spritenode(NULL),
|
|
||||||
m_nametag(NULL),
|
|
||||||
m_position(v3f(0,10*BS,0)),
|
|
||||||
m_velocity(v3f(0,0,0)),
|
|
||||||
m_acceleration(v3f(0,0,0)),
|
|
||||||
m_yaw(0),
|
|
||||||
m_hp(1),
|
|
||||||
m_tx_size(1,1),
|
|
||||||
m_tx_basepos(0,0),
|
|
||||||
m_initial_tx_basepos_set(false),
|
|
||||||
m_tx_select_horiz_by_yawpitch(false),
|
|
||||||
m_animation_range(v2s32(0,0)),
|
|
||||||
m_animation_speed(15),
|
|
||||||
m_animation_blend(0),
|
|
||||||
m_animation_loop(true),
|
|
||||||
m_bone_position(),
|
|
||||||
m_attachment_bone(""),
|
|
||||||
m_attachment_position(v3f(0,0,0)),
|
|
||||||
m_attachment_rotation(v3f(0,0,0)),
|
|
||||||
m_attached_to_local(false),
|
|
||||||
m_anim_frame(0),
|
|
||||||
m_anim_num_frames(1),
|
|
||||||
m_anim_framelength(0.2),
|
|
||||||
m_anim_timer(0),
|
|
||||||
m_reset_textures_timer(-1),
|
|
||||||
m_previous_texture_modifier(""),
|
|
||||||
m_current_texture_modifier(""),
|
|
||||||
m_visuals_expired(false),
|
|
||||||
m_step_distance_counter(0),
|
|
||||||
m_last_light(255),
|
|
||||||
m_is_visible(false)
|
|
||||||
{
|
{
|
||||||
if (client == NULL) {
|
if (client == NULL) {
|
||||||
ClientActiveObject::registerType(getType(), create);
|
ClientActiveObject::registerType(getType(), create);
|
||||||
@ -639,7 +575,7 @@ void GenericCAO::processInitData(const std::string &data)
|
|||||||
if (version == 1) { // In PROTOCOL_VERSION 14
|
if (version == 1) { // In PROTOCOL_VERSION 14
|
||||||
m_name = deSerializeString(is);
|
m_name = deSerializeString(is);
|
||||||
m_is_player = readU8(is);
|
m_is_player = readU8(is);
|
||||||
m_id = readS16(is);
|
m_id = readU16(is);
|
||||||
m_position = readV3F1000(is);
|
m_position = readV3F1000(is);
|
||||||
m_yaw = readF1000(is);
|
m_yaw = readF1000(is);
|
||||||
m_hp = readS16(is);
|
m_hp = readS16(is);
|
||||||
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "clientobject.h"
|
#include "clientobject.h"
|
||||||
#include "object_properties.h"
|
#include "object_properties.h"
|
||||||
#include "itemgroup.h"
|
#include "itemgroup.h"
|
||||||
|
#include "constants.h"
|
||||||
|
|
||||||
class Camera;
|
class Camera;
|
||||||
class Client;
|
class Client;
|
||||||
@ -39,76 +40,74 @@ struct SmoothTranslator
|
|||||||
v3f vect_old;
|
v3f vect_old;
|
||||||
v3f vect_show;
|
v3f vect_show;
|
||||||
v3f vect_aim;
|
v3f vect_aim;
|
||||||
f32 anim_counter;
|
f32 anim_counter = 0;
|
||||||
f32 anim_time;
|
f32 anim_time;
|
||||||
f32 anim_time_counter;
|
f32 anim_time_counter = 0;
|
||||||
bool aim_is_end;
|
bool aim_is_end = true;
|
||||||
|
|
||||||
SmoothTranslator();
|
SmoothTranslator() {};
|
||||||
|
|
||||||
void init(v3f vect);
|
void init(v3f vect);
|
||||||
|
|
||||||
void sharpen();
|
|
||||||
|
|
||||||
void update(v3f vect_new, bool is_end_position=false, float update_interval=-1);
|
void update(v3f vect_new, bool is_end_position=false, float update_interval=-1);
|
||||||
|
|
||||||
void translate(f32 dtime);
|
void translate(f32 dtime);
|
||||||
|
|
||||||
bool is_moving();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class GenericCAO : public ClientActiveObject
|
class GenericCAO : public ClientActiveObject
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
// Only set at initialization
|
// Only set at initialization
|
||||||
std::string m_name;
|
std::string m_name = "";
|
||||||
bool m_is_player;
|
bool m_is_player = false;
|
||||||
bool m_is_local_player;
|
bool m_is_local_player = false;
|
||||||
// Property-ish things
|
// Property-ish things
|
||||||
ObjectProperties m_prop;
|
ObjectProperties m_prop;
|
||||||
//
|
//
|
||||||
scene::ISceneManager *m_smgr;
|
scene::ISceneManager *m_smgr = nullptr;
|
||||||
IrrlichtDevice *m_irr;
|
IrrlichtDevice *m_irr = nullptr;
|
||||||
Client *m_client;
|
Client *m_client = nullptr;
|
||||||
aabb3f m_selection_box;
|
aabb3f m_selection_box = aabb3f(-BS/3.,-BS/3.,-BS/3., BS/3.,BS/3.,BS/3.);
|
||||||
scene::IMeshSceneNode *m_meshnode;
|
scene::IMeshSceneNode *m_meshnode = nullptr;
|
||||||
scene::IAnimatedMeshSceneNode *m_animated_meshnode;
|
scene::IAnimatedMeshSceneNode *m_animated_meshnode = nullptr;
|
||||||
WieldMeshSceneNode *m_wield_meshnode;
|
WieldMeshSceneNode *m_wield_meshnode = nullptr;
|
||||||
scene::IBillboardSceneNode *m_spritenode;
|
scene::IBillboardSceneNode *m_spritenode = nullptr;
|
||||||
Nametag* m_nametag;
|
Nametag *m_nametag = nullptr;
|
||||||
v3f m_position;
|
v3f m_position = v3f(0.0f, 10.0f * BS, 0);
|
||||||
v3f m_velocity;
|
v3f m_velocity;
|
||||||
v3f m_acceleration;
|
v3f m_acceleration;
|
||||||
float m_yaw;
|
float m_yaw = 0.0f;
|
||||||
s16 m_hp;
|
s16 m_hp = 1;
|
||||||
SmoothTranslator pos_translator;
|
SmoothTranslator pos_translator;
|
||||||
// Spritesheet/animation stuff
|
// Spritesheet/animation stuff
|
||||||
v2f m_tx_size;
|
v2f m_tx_size = v2f(1,1);
|
||||||
v2s16 m_tx_basepos;
|
v2s16 m_tx_basepos;
|
||||||
bool m_initial_tx_basepos_set;
|
bool m_initial_tx_basepos_set = false;
|
||||||
bool m_tx_select_horiz_by_yawpitch;
|
bool m_tx_select_horiz_by_yawpitch = false;
|
||||||
v2s32 m_animation_range;
|
v2s32 m_animation_range;
|
||||||
int m_animation_speed;
|
int m_animation_speed = 15;
|
||||||
int m_animation_blend;
|
int m_animation_blend = 0;
|
||||||
bool m_animation_loop;
|
bool m_animation_loop = true;
|
||||||
// stores position and rotation for each bone name
|
// stores position and rotation for each bone name
|
||||||
std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
|
std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
|
||||||
std::string m_attachment_bone;
|
std::string m_attachment_bone = "";
|
||||||
v3f m_attachment_position;
|
v3f m_attachment_position;
|
||||||
v3f m_attachment_rotation;
|
v3f m_attachment_rotation;
|
||||||
bool m_attached_to_local;
|
bool m_attached_to_local = false;
|
||||||
int m_anim_frame;
|
int m_anim_frame = 0;
|
||||||
int m_anim_num_frames;
|
int m_anim_num_frames = 1;
|
||||||
float m_anim_framelength;
|
float m_anim_framelength = 0.2f;
|
||||||
float m_anim_timer;
|
float m_anim_timer = 0.0f;
|
||||||
ItemGroupList m_armor_groups;
|
ItemGroupList m_armor_groups;
|
||||||
float m_reset_textures_timer;
|
float m_reset_textures_timer = -1.0f;
|
||||||
std::string m_previous_texture_modifier; // stores texture modifier before punch update
|
// stores texture modifier before punch update
|
||||||
std::string m_current_texture_modifier; // last applied texture modifier
|
std::string m_previous_texture_modifier = "";
|
||||||
bool m_visuals_expired;
|
// last applied texture modifier
|
||||||
float m_step_distance_counter;
|
std::string m_current_texture_modifier = "";
|
||||||
u8 m_last_light;
|
bool m_visuals_expired = false;
|
||||||
bool m_is_visible;
|
float m_step_distance_counter = 0.0f;
|
||||||
|
u8 m_last_light = 255;
|
||||||
|
bool m_is_visible = false;
|
||||||
|
|
||||||
std::vector<u16> m_children;
|
std::vector<u16> m_children;
|
||||||
|
|
||||||
|
@ -26,13 +26,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
class SmokePuffCSO: public ClientSimpleObject
|
class SmokePuffCSO: public ClientSimpleObject
|
||||||
{
|
{
|
||||||
float m_age;
|
float m_age = 0.0f;
|
||||||
scene::IBillboardSceneNode *m_spritenode;
|
scene::IBillboardSceneNode *m_spritenode = nullptr;
|
||||||
public:
|
public:
|
||||||
SmokePuffCSO(scene::ISceneManager *smgr,
|
SmokePuffCSO(scene::ISceneManager *smgr,
|
||||||
ClientEnvironment *env, v3f pos, v2f size):
|
ClientEnvironment *env, v3f pos, v2f size)
|
||||||
m_age(0),
|
|
||||||
m_spritenode(NULL)
|
|
||||||
{
|
{
|
||||||
infostream<<"SmokePuffCSO: constructing"<<std::endl;
|
infostream<<"SmokePuffCSO: constructing"<<std::endl;
|
||||||
m_spritenode = smgr->addBillboardSceneNode(
|
m_spritenode = smgr->addBillboardSceneNode(
|
||||||
|
@ -189,12 +189,3 @@ void content_nodemeta_deserialize_legacy(std::istream &is,
|
|||||||
timers->set(NodeTimer(1., 0., p));
|
timers->set(NodeTimer(1., 0., p));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void content_nodemeta_serialize_legacy(std::ostream &os, NodeMetadataList *meta)
|
|
||||||
{
|
|
||||||
// Sorry, I was too lazy to implement this. --kahrl
|
|
||||||
writeU16(os, 1); // version
|
|
||||||
writeU16(os, 0); // count
|
|
||||||
}
|
|
||||||
|
|
||||||
// END
|
|
||||||
|
@ -34,7 +34,5 @@ void content_nodemeta_deserialize_legacy(std::istream &is,
|
|||||||
NodeMetadataList *meta, NodeTimerList *timers,
|
NodeMetadataList *meta, NodeTimerList *timers,
|
||||||
IItemDefManager *item_def_mgr);
|
IItemDefManager *item_def_mgr);
|
||||||
|
|
||||||
void content_nodemeta_serialize_legacy(std::ostream &os, NodeMetadataList *meta);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -106,19 +106,7 @@ TestSAO proto_TestSAO(NULL, v3f(0,0,0));
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos):
|
UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos):
|
||||||
ServerActiveObject(env, pos),
|
ServerActiveObject(env, pos)
|
||||||
m_hp(-1),
|
|
||||||
m_yaw(0),
|
|
||||||
m_properties_sent(true),
|
|
||||||
m_armor_groups_sent(false),
|
|
||||||
m_animation_range(0,0),
|
|
||||||
m_animation_speed(0),
|
|
||||||
m_animation_blend(0),
|
|
||||||
m_animation_loop(true),
|
|
||||||
m_animation_sent(false),
|
|
||||||
m_bone_position_sent(false),
|
|
||||||
m_attachment_parent_id(0),
|
|
||||||
m_attachment_sent(false)
|
|
||||||
{
|
{
|
||||||
// Initialize something to armor groups
|
// Initialize something to armor groups
|
||||||
m_armor_groups["fleshy"] = 100;
|
m_armor_groups["fleshy"] = 100;
|
||||||
@ -239,16 +227,7 @@ LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos,
|
|||||||
const std::string &name, const std::string &state):
|
const std::string &name, const std::string &state):
|
||||||
UnitSAO(env, pos),
|
UnitSAO(env, pos),
|
||||||
m_init_name(name),
|
m_init_name(name),
|
||||||
m_init_state(state),
|
m_init_state(state)
|
||||||
m_registered(false),
|
|
||||||
m_velocity(0,0,0),
|
|
||||||
m_acceleration(0,0,0),
|
|
||||||
m_last_sent_yaw(0),
|
|
||||||
m_last_sent_position(0,0,0),
|
|
||||||
m_last_sent_velocity(0,0,0),
|
|
||||||
m_last_sent_position_timer(0),
|
|
||||||
m_last_sent_move_precision(0),
|
|
||||||
m_current_texture_modifier("")
|
|
||||||
{
|
{
|
||||||
// Only register type if no environment supplied
|
// Only register type if no environment supplied
|
||||||
if(env == NULL){
|
if(env == NULL){
|
||||||
@ -783,29 +762,7 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, u16 peer_id
|
|||||||
UnitSAO(env_, v3f(0,0,0)),
|
UnitSAO(env_, v3f(0,0,0)),
|
||||||
m_player(player_),
|
m_player(player_),
|
||||||
m_peer_id(peer_id_),
|
m_peer_id(peer_id_),
|
||||||
m_inventory(NULL),
|
m_is_singleplayer(is_singleplayer)
|
||||||
m_damage(0),
|
|
||||||
m_last_good_position(0,0,0),
|
|
||||||
m_time_from_last_teleport(0),
|
|
||||||
m_time_from_last_punch(0),
|
|
||||||
m_nocheat_dig_pos(32767, 32767, 32767),
|
|
||||||
m_nocheat_dig_time(0),
|
|
||||||
m_wield_index(0),
|
|
||||||
m_position_not_sent(false),
|
|
||||||
m_is_singleplayer(is_singleplayer),
|
|
||||||
m_breath(PLAYER_MAX_BREATH),
|
|
||||||
m_pitch(0),
|
|
||||||
m_fov(0),
|
|
||||||
m_wanted_range(0),
|
|
||||||
m_extended_attributes_modified(false),
|
|
||||||
// public
|
|
||||||
m_physics_override_speed(1),
|
|
||||||
m_physics_override_jump(1),
|
|
||||||
m_physics_override_gravity(1),
|
|
||||||
m_physics_override_sneak(true),
|
|
||||||
m_physics_override_sneak_glitch(false),
|
|
||||||
m_physics_override_new_move(true),
|
|
||||||
m_physics_override_sent(false)
|
|
||||||
{
|
{
|
||||||
assert(m_peer_id != 0); // pre-condition
|
assert(m_peer_id != 0); // pre-condition
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "serverobject.h"
|
#include "serverobject.h"
|
||||||
#include "itemgroup.h"
|
#include "itemgroup.h"
|
||||||
#include "object_properties.h"
|
#include "object_properties.h"
|
||||||
|
#include "constants.h"
|
||||||
|
|
||||||
class UnitSAO: public ServerActiveObject
|
class UnitSAO: public ServerActiveObject
|
||||||
{
|
{
|
||||||
@ -56,31 +57,31 @@ public:
|
|||||||
ObjectProperties* accessObjectProperties();
|
ObjectProperties* accessObjectProperties();
|
||||||
void notifyObjectPropertiesModified();
|
void notifyObjectPropertiesModified();
|
||||||
protected:
|
protected:
|
||||||
s16 m_hp;
|
s16 m_hp = -1;
|
||||||
float m_yaw;
|
float m_yaw = 0.0f;
|
||||||
|
|
||||||
bool m_properties_sent;
|
bool m_properties_sent = true;
|
||||||
struct ObjectProperties m_prop;
|
struct ObjectProperties m_prop;
|
||||||
|
|
||||||
ItemGroupList m_armor_groups;
|
ItemGroupList m_armor_groups;
|
||||||
bool m_armor_groups_sent;
|
bool m_armor_groups_sent = false;
|
||||||
|
|
||||||
v2f m_animation_range;
|
v2f m_animation_range;
|
||||||
float m_animation_speed;
|
float m_animation_speed = 0.0f;
|
||||||
float m_animation_blend;
|
float m_animation_blend = 0.0f;
|
||||||
bool m_animation_loop;
|
bool m_animation_loop = true;
|
||||||
bool m_animation_sent;
|
bool m_animation_sent = false;
|
||||||
|
|
||||||
// Stores position and rotation for each bone name
|
// Stores position and rotation for each bone name
|
||||||
std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
|
std::unordered_map<std::string, core::vector2d<v3f>> m_bone_position;
|
||||||
bool m_bone_position_sent;
|
bool m_bone_position_sent = false;
|
||||||
|
|
||||||
int m_attachment_parent_id;
|
int m_attachment_parent_id = 0;
|
||||||
std::unordered_set<int> m_attachment_child_ids;
|
std::unordered_set<int> m_attachment_child_ids;
|
||||||
std::string m_attachment_bone;
|
std::string m_attachment_bone = "";
|
||||||
v3f m_attachment_position;
|
v3f m_attachment_position;
|
||||||
v3f m_attachment_rotation;
|
v3f m_attachment_rotation;
|
||||||
bool m_attachment_sent;
|
bool m_attachment_sent = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -133,17 +134,17 @@ private:
|
|||||||
|
|
||||||
std::string m_init_name;
|
std::string m_init_name;
|
||||||
std::string m_init_state;
|
std::string m_init_state;
|
||||||
bool m_registered;
|
bool m_registered = false;
|
||||||
|
|
||||||
v3f m_velocity;
|
v3f m_velocity;
|
||||||
v3f m_acceleration;
|
v3f m_acceleration;
|
||||||
|
|
||||||
float m_last_sent_yaw;
|
float m_last_sent_yaw = 0.0f;
|
||||||
v3f m_last_sent_position;
|
v3f m_last_sent_position;
|
||||||
v3f m_last_sent_velocity;
|
v3f m_last_sent_velocity;
|
||||||
float m_last_sent_position_timer;
|
float m_last_sent_position_timer = 0.0f;
|
||||||
float m_last_sent_move_precision;
|
float m_last_sent_move_precision = 0.0f;
|
||||||
std::string m_current_texture_modifier;
|
std::string m_current_texture_modifier = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -152,11 +153,10 @@ private:
|
|||||||
|
|
||||||
class LagPool
|
class LagPool
|
||||||
{
|
{
|
||||||
float m_pool;
|
float m_pool = 15.0f;
|
||||||
float m_max;
|
float m_max = 15.0f;
|
||||||
public:
|
public:
|
||||||
LagPool(): m_pool(15), m_max(15)
|
LagPool() {}
|
||||||
{}
|
|
||||||
|
|
||||||
void setMax(float new_max)
|
void setMax(float new_max)
|
||||||
{
|
{
|
||||||
@ -368,47 +368,47 @@ private:
|
|||||||
std::string getPropertyPacket();
|
std::string getPropertyPacket();
|
||||||
void unlinkPlayerSessionAndSave();
|
void unlinkPlayerSessionAndSave();
|
||||||
|
|
||||||
RemotePlayer *m_player;
|
RemotePlayer *m_player = nullptr;
|
||||||
u16 m_peer_id;
|
u16 m_peer_id = 0;
|
||||||
Inventory *m_inventory;
|
Inventory *m_inventory = nullptr;
|
||||||
s16 m_damage;
|
s16 m_damage = 0;
|
||||||
|
|
||||||
// Cheat prevention
|
// Cheat prevention
|
||||||
LagPool m_dig_pool;
|
LagPool m_dig_pool;
|
||||||
LagPool m_move_pool;
|
LagPool m_move_pool;
|
||||||
v3f m_last_good_position;
|
v3f m_last_good_position;
|
||||||
float m_time_from_last_teleport;
|
float m_time_from_last_teleport = 0.0f;
|
||||||
float m_time_from_last_punch;
|
float m_time_from_last_punch = 0.0f;
|
||||||
v3s16 m_nocheat_dig_pos;
|
v3s16 m_nocheat_dig_pos = v3s16(32767, 32767, 32767);
|
||||||
float m_nocheat_dig_time;
|
float m_nocheat_dig_time = 0.0f;
|
||||||
|
|
||||||
// Timers
|
// Timers
|
||||||
IntervalLimiter m_breathing_interval;
|
IntervalLimiter m_breathing_interval;
|
||||||
IntervalLimiter m_drowning_interval;
|
IntervalLimiter m_drowning_interval;
|
||||||
IntervalLimiter m_node_hurt_interval;
|
IntervalLimiter m_node_hurt_interval;
|
||||||
|
|
||||||
int m_wield_index;
|
int m_wield_index = 0;
|
||||||
bool m_position_not_sent;
|
bool m_position_not_sent = false;
|
||||||
|
|
||||||
// Cached privileges for enforcement
|
// Cached privileges for enforcement
|
||||||
std::set<std::string> m_privs;
|
std::set<std::string> m_privs;
|
||||||
bool m_is_singleplayer;
|
bool m_is_singleplayer;
|
||||||
|
|
||||||
u16 m_breath;
|
u16 m_breath = PLAYER_MAX_BREATH;
|
||||||
f32 m_pitch;
|
f32 m_pitch = 0.0f;
|
||||||
f32 m_fov;
|
f32 m_fov = 0.0f;
|
||||||
s16 m_wanted_range;
|
s16 m_wanted_range = 0.0f;
|
||||||
|
|
||||||
PlayerAttributes m_extra_attributes;
|
PlayerAttributes m_extra_attributes;
|
||||||
bool m_extended_attributes_modified;
|
bool m_extended_attributes_modified = false;
|
||||||
public:
|
public:
|
||||||
float m_physics_override_speed;
|
float m_physics_override_speed = 1.0f;
|
||||||
float m_physics_override_jump;
|
float m_physics_override_jump = 1.0f;
|
||||||
float m_physics_override_gravity;
|
float m_physics_override_gravity = 1.0f;
|
||||||
bool m_physics_override_sneak;
|
bool m_physics_override_sneak = true;
|
||||||
bool m_physics_override_sneak_glitch;
|
bool m_physics_override_sneak_glitch = false;
|
||||||
bool m_physics_override_new_move;
|
bool m_physics_override_new_move = true;
|
||||||
bool m_physics_override_sent;
|
bool m_physics_override_sent = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -70,17 +70,17 @@ const int craft_hash_type_max = (int) CRAFT_HASH_TYPE_UNHASHED;
|
|||||||
*/
|
*/
|
||||||
struct CraftInput
|
struct CraftInput
|
||||||
{
|
{
|
||||||
CraftMethod method;
|
CraftMethod method = CRAFT_METHOD_NORMAL;
|
||||||
unsigned int width;
|
unsigned int width = 0;
|
||||||
std::vector<ItemStack> items;
|
std::vector<ItemStack> items;
|
||||||
|
|
||||||
CraftInput():
|
CraftInput() {}
|
||||||
method(CRAFT_METHOD_NORMAL), width(0), items()
|
|
||||||
{}
|
|
||||||
CraftInput(CraftMethod method_, unsigned int width_,
|
CraftInput(CraftMethod method_, unsigned int width_,
|
||||||
const std::vector<ItemStack> &items_):
|
const std::vector<ItemStack> &items_):
|
||||||
method(method_), width(width_), items(items_)
|
method(method_), width(width_), items(items_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
std::string dump() const;
|
std::string dump() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -90,13 +90,12 @@ struct CraftInput
|
|||||||
struct CraftOutput
|
struct CraftOutput
|
||||||
{
|
{
|
||||||
// Used for normal crafting and cooking, itemstring
|
// Used for normal crafting and cooking, itemstring
|
||||||
std::string item;
|
std::string item = "";
|
||||||
// Used for cooking (cook time) and fuel (burn time), seconds
|
// Used for cooking (cook time) and fuel (burn time), seconds
|
||||||
float time;
|
float time = 0.0f;
|
||||||
|
|
||||||
|
CraftOutput() {}
|
||||||
|
|
||||||
CraftOutput():
|
|
||||||
item(""), time(0)
|
|
||||||
{}
|
|
||||||
CraftOutput(const std::string &item_, float time_):
|
CraftOutput(const std::string &item_, float time_):
|
||||||
item(item_), time(time_)
|
item(item_), time(time_)
|
||||||
{}
|
{}
|
||||||
@ -171,16 +170,15 @@ public:
|
|||||||
class CraftDefinitionShaped: public CraftDefinition
|
class CraftDefinitionShaped: public CraftDefinition
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CraftDefinitionShaped():
|
CraftDefinitionShaped() {}
|
||||||
output(""), width(1), recipe(), hash_inited(false), replacements()
|
|
||||||
{}
|
|
||||||
CraftDefinitionShaped(
|
CraftDefinitionShaped(
|
||||||
const std::string &output_,
|
const std::string &output_,
|
||||||
unsigned int width_,
|
unsigned int width_,
|
||||||
const std::vector<std::string> &recipe_,
|
const std::vector<std::string> &recipe_,
|
||||||
const CraftReplacements &replacements_):
|
const CraftReplacements &replacements_):
|
||||||
output(output_), width(width_), recipe(recipe_),
|
output(output_), width(width_), recipe(recipe_),
|
||||||
hash_inited(false), replacements(replacements_)
|
replacements(replacements_)
|
||||||
{}
|
{}
|
||||||
virtual ~CraftDefinitionShaped(){}
|
virtual ~CraftDefinitionShaped(){}
|
||||||
|
|
||||||
@ -200,15 +198,15 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// Output itemstring
|
// Output itemstring
|
||||||
std::string output;
|
std::string output = "";
|
||||||
// Width of recipe
|
// Width of recipe
|
||||||
unsigned int width;
|
unsigned int width = 1;
|
||||||
// Recipe matrix (itemstrings)
|
// Recipe matrix (itemstrings)
|
||||||
std::vector<std::string> recipe;
|
std::vector<std::string> recipe;
|
||||||
// Recipe matrix (item names)
|
// Recipe matrix (item names)
|
||||||
std::vector<std::string> recipe_names;
|
std::vector<std::string> recipe_names;
|
||||||
// bool indicating if initHash has been called already
|
// bool indicating if initHash has been called already
|
||||||
bool hash_inited;
|
bool hash_inited = false;
|
||||||
// Replacement items for decrementInput()
|
// Replacement items for decrementInput()
|
||||||
CraftReplacements replacements;
|
CraftReplacements replacements;
|
||||||
};
|
};
|
||||||
|
@ -43,9 +43,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "remoteplayer.h"
|
#include "remoteplayer.h"
|
||||||
|
|
||||||
Database_PostgreSQL::Database_PostgreSQL(const std::string &connect_string) :
|
Database_PostgreSQL::Database_PostgreSQL(const std::string &connect_string) :
|
||||||
m_connect_string(connect_string),
|
m_connect_string(connect_string)
|
||||||
m_conn(NULL),
|
|
||||||
m_pgversion(0)
|
|
||||||
{
|
{
|
||||||
if (m_connect_string.empty()) {
|
if (m_connect_string.empty()) {
|
||||||
throw SettingNotFoundException(
|
throw SettingNotFoundException(
|
||||||
|
@ -104,8 +104,8 @@ private:
|
|||||||
|
|
||||||
// Attributes
|
// Attributes
|
||||||
std::string m_connect_string;
|
std::string m_connect_string;
|
||||||
PGconn *m_conn;
|
PGconn *m_conn = nullptr;
|
||||||
int m_pgversion;
|
int m_pgversion = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MapDatabasePostgreSQL : private Database_PostgreSQL, public MapDatabase
|
class MapDatabasePostgreSQL : private Database_PostgreSQL, public MapDatabase
|
||||||
|
@ -45,8 +45,8 @@ public:
|
|||||||
void listAllLoadableBlocks(std::vector<v3s16> &dst);
|
void listAllLoadableBlocks(std::vector<v3s16> &dst);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
redisContext *ctx;
|
redisContext *ctx = nullptr;
|
||||||
std::string hash;
|
std::string hash = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USE_REDIS
|
#endif // USE_REDIS
|
||||||
|
@ -114,12 +114,8 @@ int Database_SQLite3::busyHandler(void *data, int count)
|
|||||||
|
|
||||||
|
|
||||||
Database_SQLite3::Database_SQLite3(const std::string &savedir, const std::string &dbname) :
|
Database_SQLite3::Database_SQLite3(const std::string &savedir, const std::string &dbname) :
|
||||||
m_database(NULL),
|
|
||||||
m_initialized(false),
|
|
||||||
m_savedir(savedir),
|
m_savedir(savedir),
|
||||||
m_dbname(dbname),
|
m_dbname(dbname)
|
||||||
m_stmt_begin(NULL),
|
|
||||||
m_stmt_end(NULL)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,13 +199,8 @@ Database_SQLite3::~Database_SQLite3()
|
|||||||
|
|
||||||
MapDatabaseSQLite3::MapDatabaseSQLite3(const std::string &savedir):
|
MapDatabaseSQLite3::MapDatabaseSQLite3(const std::string &savedir):
|
||||||
Database_SQLite3(savedir, "map"),
|
Database_SQLite3(savedir, "map"),
|
||||||
MapDatabase(),
|
MapDatabase()
|
||||||
m_stmt_read(NULL),
|
|
||||||
m_stmt_write(NULL),
|
|
||||||
m_stmt_list(NULL),
|
|
||||||
m_stmt_delete(NULL)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MapDatabaseSQLite3::~MapDatabaseSQLite3()
|
MapDatabaseSQLite3::~MapDatabaseSQLite3()
|
||||||
@ -334,24 +325,10 @@ void MapDatabaseSQLite3::listAllLoadableBlocks(std::vector<v3s16> &dst)
|
|||||||
|
|
||||||
PlayerDatabaseSQLite3::PlayerDatabaseSQLite3(const std::string &savedir):
|
PlayerDatabaseSQLite3::PlayerDatabaseSQLite3(const std::string &savedir):
|
||||||
Database_SQLite3(savedir, "players"),
|
Database_SQLite3(savedir, "players"),
|
||||||
PlayerDatabase(),
|
PlayerDatabase()
|
||||||
m_stmt_player_load(NULL),
|
|
||||||
m_stmt_player_add(NULL),
|
|
||||||
m_stmt_player_update(NULL),
|
|
||||||
m_stmt_player_remove(NULL),
|
|
||||||
m_stmt_player_list(NULL),
|
|
||||||
m_stmt_player_load_inventory(NULL),
|
|
||||||
m_stmt_player_load_inventory_items(NULL),
|
|
||||||
m_stmt_player_add_inventory(NULL),
|
|
||||||
m_stmt_player_add_inventory_items(NULL),
|
|
||||||
m_stmt_player_remove_inventory(NULL),
|
|
||||||
m_stmt_player_remove_inventory_items(NULL),
|
|
||||||
m_stmt_player_metadata_load(NULL),
|
|
||||||
m_stmt_player_metadata_remove(NULL),
|
|
||||||
m_stmt_player_metadata_add(NULL)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerDatabaseSQLite3::~PlayerDatabaseSQLite3()
|
PlayerDatabaseSQLite3::~PlayerDatabaseSQLite3()
|
||||||
{
|
{
|
||||||
FINALIZE_STATEMENT(m_stmt_player_load)
|
FINALIZE_STATEMENT(m_stmt_player_load)
|
||||||
|
@ -113,18 +113,18 @@ protected:
|
|||||||
virtual void createDatabase() = 0;
|
virtual void createDatabase() = 0;
|
||||||
virtual void initStatements() = 0;
|
virtual void initStatements() = 0;
|
||||||
|
|
||||||
sqlite3 *m_database;
|
sqlite3 *m_database = nullptr;
|
||||||
private:
|
private:
|
||||||
// Open the database
|
// Open the database
|
||||||
void openDatabase();
|
void openDatabase();
|
||||||
|
|
||||||
bool m_initialized;
|
bool m_initialized = false;
|
||||||
|
|
||||||
std::string m_savedir;
|
std::string m_savedir = "";
|
||||||
std::string m_dbname;
|
std::string m_dbname = "";
|
||||||
|
|
||||||
sqlite3_stmt *m_stmt_begin;
|
sqlite3_stmt *m_stmt_begin = nullptr;
|
||||||
sqlite3_stmt *m_stmt_end;
|
sqlite3_stmt *m_stmt_end = nullptr;
|
||||||
|
|
||||||
s64 m_busy_handler_data[2];
|
s64 m_busy_handler_data[2];
|
||||||
|
|
||||||
@ -152,10 +152,10 @@ private:
|
|||||||
void bindPos(sqlite3_stmt *stmt, const v3s16 &pos, int index = 1);
|
void bindPos(sqlite3_stmt *stmt, const v3s16 &pos, int index = 1);
|
||||||
|
|
||||||
// Map
|
// Map
|
||||||
sqlite3_stmt *m_stmt_read;
|
sqlite3_stmt *m_stmt_read = nullptr;
|
||||||
sqlite3_stmt *m_stmt_write;
|
sqlite3_stmt *m_stmt_write = nullptr;
|
||||||
sqlite3_stmt *m_stmt_list;
|
sqlite3_stmt *m_stmt_list = nullptr;
|
||||||
sqlite3_stmt *m_stmt_delete;
|
sqlite3_stmt *m_stmt_delete = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PlayerDatabaseSQLite3 : private Database_SQLite3, public PlayerDatabase
|
class PlayerDatabaseSQLite3 : private Database_SQLite3, public PlayerDatabase
|
||||||
@ -177,20 +177,20 @@ private:
|
|||||||
bool playerDataExists(const std::string &name);
|
bool playerDataExists(const std::string &name);
|
||||||
|
|
||||||
// Players
|
// Players
|
||||||
sqlite3_stmt *m_stmt_player_load;
|
sqlite3_stmt *m_stmt_player_load = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_add;
|
sqlite3_stmt *m_stmt_player_add = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_update;
|
sqlite3_stmt *m_stmt_player_update = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_remove;
|
sqlite3_stmt *m_stmt_player_remove = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_list;
|
sqlite3_stmt *m_stmt_player_list = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_load_inventory;
|
sqlite3_stmt *m_stmt_player_load_inventory = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_load_inventory_items;
|
sqlite3_stmt *m_stmt_player_load_inventory_items = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_add_inventory;
|
sqlite3_stmt *m_stmt_player_add_inventory = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_add_inventory_items;
|
sqlite3_stmt *m_stmt_player_add_inventory_items = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_remove_inventory;
|
sqlite3_stmt *m_stmt_player_remove_inventory = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_remove_inventory_items;
|
sqlite3_stmt *m_stmt_player_remove_inventory_items = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_metadata_load;
|
sqlite3_stmt *m_stmt_player_metadata_load = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_metadata_remove;
|
sqlite3_stmt *m_stmt_player_metadata_remove = nullptr;
|
||||||
sqlite3_stmt *m_stmt_player_metadata_add;
|
sqlite3_stmt *m_stmt_player_metadata_add = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -144,10 +144,6 @@ void DebugStack::print(std::ostream &os, bool everything)
|
|||||||
std::map<std::thread::id, DebugStack*> g_debug_stacks;
|
std::map<std::thread::id, DebugStack*> g_debug_stacks;
|
||||||
std::mutex g_debug_stacks_mutex;
|
std::mutex g_debug_stacks_mutex;
|
||||||
|
|
||||||
void debug_stacks_init()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void debug_stacks_print_to(std::ostream &os)
|
void debug_stacks_print_to(std::ostream &os)
|
||||||
{
|
{
|
||||||
MutexAutoLock lock(g_debug_stacks_mutex);
|
MutexAutoLock lock(g_debug_stacks_mutex);
|
||||||
|
@ -92,7 +92,6 @@ void debug_set_exception_handler();
|
|||||||
#define DEBUG_STACK_SIZE 50
|
#define DEBUG_STACK_SIZE 50
|
||||||
#define DEBUG_STACK_TEXT_SIZE 300
|
#define DEBUG_STACK_TEXT_SIZE 300
|
||||||
|
|
||||||
extern void debug_stacks_init();
|
|
||||||
extern void debug_stacks_print_to(std::ostream &os);
|
extern void debug_stacks_print_to(std::ostream &os);
|
||||||
extern void debug_stacks_print();
|
extern void debug_stacks_print();
|
||||||
|
|
||||||
|
@ -96,12 +96,10 @@ EmergeManager::EmergeManager(Server *server)
|
|||||||
this->oremgr = new OreManager(server);
|
this->oremgr = new OreManager(server);
|
||||||
this->decomgr = new DecorationManager(server);
|
this->decomgr = new DecorationManager(server);
|
||||||
this->schemmgr = new SchematicManager(server);
|
this->schemmgr = new SchematicManager(server);
|
||||||
this->gen_notify_on = 0;
|
|
||||||
|
|
||||||
// Note that accesses to this variable are not synchronized.
|
// Note that accesses to this variable are not synchronized.
|
||||||
// This is because the *only* thread ever starting or stopping
|
// This is because the *only* thread ever starting or stopping
|
||||||
// EmergeThreads should be the ServerThread.
|
// EmergeThreads should be the ServerThread.
|
||||||
this->m_threads_active = false;
|
|
||||||
|
|
||||||
enable_mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
enable_mapgen_debug_info = g_settings->getBool("enable_mapgen_debug_info");
|
||||||
|
|
||||||
|
17
src/emerge.h
17
src/emerge.h
@ -47,20 +47,15 @@ class Server;
|
|||||||
|
|
||||||
// Structure containing inputs/outputs for chunk generation
|
// Structure containing inputs/outputs for chunk generation
|
||||||
struct BlockMakeData {
|
struct BlockMakeData {
|
||||||
MMVManip *vmanip;
|
MMVManip *vmanip = nullptr;
|
||||||
u64 seed;
|
u64 seed = 0;
|
||||||
v3s16 blockpos_min;
|
v3s16 blockpos_min;
|
||||||
v3s16 blockpos_max;
|
v3s16 blockpos_max;
|
||||||
v3s16 blockpos_requested;
|
v3s16 blockpos_requested;
|
||||||
UniqueQueue<v3s16> transforming_liquid;
|
UniqueQueue<v3s16> transforming_liquid;
|
||||||
INodeDefManager *nodedef;
|
INodeDefManager *nodedef = nullptr;
|
||||||
|
|
||||||
BlockMakeData():
|
|
||||||
vmanip(NULL),
|
|
||||||
seed(0),
|
|
||||||
nodedef(NULL)
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
BlockMakeData() {}
|
||||||
~BlockMakeData() { delete vmanip; }
|
~BlockMakeData() { delete vmanip; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -96,7 +91,7 @@ public:
|
|||||||
bool enable_mapgen_debug_info;
|
bool enable_mapgen_debug_info;
|
||||||
|
|
||||||
// Generation Notify
|
// Generation Notify
|
||||||
u32 gen_notify_on;
|
u32 gen_notify_on = 0;
|
||||||
std::set<u32> gen_notify_on_deco_ids;
|
std::set<u32> gen_notify_on_deco_ids;
|
||||||
|
|
||||||
// Parameters passed to mapgens owned by ServerMap
|
// Parameters passed to mapgens owned by ServerMap
|
||||||
@ -154,7 +149,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
std::vector<Mapgen *> m_mapgens;
|
std::vector<Mapgen *> m_mapgens;
|
||||||
std::vector<EmergeThread *> m_threads;
|
std::vector<EmergeThread *> m_threads;
|
||||||
bool m_threads_active;
|
bool m_threads_active = false;
|
||||||
|
|
||||||
std::mutex m_queue_mutex;
|
std::mutex m_queue_mutex;
|
||||||
std::map<v3s16, BlockEmergeData> m_blocks_enqueued;
|
std::map<v3s16, BlockEmergeData> m_blocks_enqueued;
|
||||||
|
@ -28,13 +28,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
|
|
||||||
Environment::Environment(IGameDef *gamedef):
|
Environment::Environment(IGameDef *gamedef):
|
||||||
m_time_of_day_speed(0),
|
m_gamedef(gamedef),
|
||||||
m_time_of_day(9000),
|
m_time_of_day_speed(0.0f),
|
||||||
m_time_of_day_f(9000./24000),
|
m_day_count(0)
|
||||||
m_time_conversion_skew(0.0f),
|
|
||||||
m_enable_day_night_ratio_override(false),
|
|
||||||
m_day_night_ratio_override(0.0f),
|
|
||||||
m_gamedef(gamedef)
|
|
||||||
{
|
{
|
||||||
m_cache_enable_shaders = g_settings->getBool("enable_shaders");
|
m_cache_enable_shaders = g_settings->getBool("enable_shaders");
|
||||||
m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval");
|
m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval");
|
||||||
|
@ -88,15 +88,15 @@ protected:
|
|||||||
* Below: values managed by m_time_lock
|
* Below: values managed by m_time_lock
|
||||||
*/
|
*/
|
||||||
// Time of day in milli-hours (0-23999); determines day and night
|
// Time of day in milli-hours (0-23999); determines day and night
|
||||||
u32 m_time_of_day;
|
u32 m_time_of_day = 9000;
|
||||||
// Time of day in 0...1
|
// Time of day in 0...1
|
||||||
float m_time_of_day_f;
|
float m_time_of_day_f = 9000.0f / 24000.0f;
|
||||||
// Stores the skew created by the float -> u32 conversion
|
// Stores the skew created by the float -> u32 conversion
|
||||||
// to be applied at next conversion, so that there is no real skew.
|
// to be applied at next conversion, so that there is no real skew.
|
||||||
float m_time_conversion_skew;
|
float m_time_conversion_skew = 0.0f;
|
||||||
// Overriding the day-night ratio is useful for custom sky visuals
|
// Overriding the day-night ratio is useful for custom sky visuals
|
||||||
bool m_enable_day_night_ratio_override;
|
bool m_enable_day_night_ratio_override = false;
|
||||||
u32 m_day_night_ratio_override;
|
u32 m_day_night_ratio_override = 0.0f;
|
||||||
// Days from the server start, accounts for time shift
|
// Days from the server start, accounts for time shift
|
||||||
// in game (e.g. /time or bed usage)
|
// in game (e.g. /time or bed usage)
|
||||||
std::atomic<u32> m_day_count;
|
std::atomic<u32> m_day_count;
|
||||||
|
@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
class MtEvent
|
class MtEvent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~MtEvent(){};
|
virtual ~MtEvent() {};
|
||||||
//virtual MtEvent* clone(){ return new IEvent; }
|
//virtual MtEvent* clone(){ return new IEvent; }
|
||||||
virtual const char* getType() const = 0;
|
virtual const char* getType() const = 0;
|
||||||
|
|
||||||
|
@ -37,16 +37,6 @@ protected:
|
|||||||
std::string m_s;
|
std::string m_s;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AsyncQueuedException : public BaseException {
|
|
||||||
public:
|
|
||||||
AsyncQueuedException(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class NotImplementedException : public BaseException {
|
|
||||||
public:
|
|
||||||
NotImplementedException(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class AlreadyExistsException : public BaseException {
|
class AlreadyExistsException : public BaseException {
|
||||||
public:
|
public:
|
||||||
AlreadyExistsException(const std::string &s): BaseException(s) {}
|
AlreadyExistsException(const std::string &s): BaseException(s) {}
|
||||||
@ -77,16 +67,6 @@ public:
|
|||||||
PacketError(const std::string &s): BaseException(s) {}
|
PacketError(const std::string &s): BaseException(s) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LoadError : public BaseException {
|
|
||||||
public:
|
|
||||||
LoadError(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class ContainerFullException : public BaseException {
|
|
||||||
public:
|
|
||||||
ContainerFullException(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SettingNotFoundException : public BaseException {
|
class SettingNotFoundException : public BaseException {
|
||||||
public:
|
public:
|
||||||
SettingNotFoundException(const std::string &s): BaseException(s) {}
|
SettingNotFoundException(const std::string &s): BaseException(s) {}
|
||||||
@ -97,16 +77,6 @@ public:
|
|||||||
InvalidFilenameException(const std::string &s): BaseException(s) {}
|
InvalidFilenameException(const std::string &s): BaseException(s) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProcessingLimitException : public BaseException {
|
|
||||||
public:
|
|
||||||
ProcessingLimitException(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class CommandLineError : public BaseException {
|
|
||||||
public:
|
|
||||||
CommandLineError(const std::string &s): BaseException(s) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class ItemNotFoundException : public BaseException {
|
class ItemNotFoundException : public BaseException {
|
||||||
public:
|
public:
|
||||||
ItemNotFoundException(const std::string &s): BaseException(s) {}
|
ItemNotFoundException(const std::string &s): BaseException(s) {}
|
||||||
@ -160,21 +130,5 @@ public:
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TargetInexistentException : public std::exception
|
|
||||||
{
|
|
||||||
virtual const char * what() const throw()
|
|
||||||
{
|
|
||||||
return "Somebody tried to refer to something that doesn't exist.";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class NullPointerException : public std::exception
|
|
||||||
{
|
|
||||||
virtual const char * what() const throw()
|
|
||||||
{
|
|
||||||
return "NullPointerException";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -43,12 +43,7 @@ static void font_setting_changed(const std::string &name, void *userdata)
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
FontEngine::FontEngine(Settings* main_settings, gui::IGUIEnvironment* env) :
|
FontEngine::FontEngine(Settings* main_settings, gui::IGUIEnvironment* env) :
|
||||||
m_settings(main_settings),
|
m_settings(main_settings),
|
||||||
m_env(env),
|
m_env(env)
|
||||||
m_font_cache(),
|
|
||||||
m_currentMode(FM_Standard),
|
|
||||||
m_lastMode(),
|
|
||||||
m_lastSize(0),
|
|
||||||
m_lastFont(NULL)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
for (unsigned int i = 0; i < FM_MaxMode; i++) {
|
for (unsigned int i = 0; i < FM_MaxMode; i++) {
|
||||||
|
@ -120,16 +120,16 @@ private:
|
|||||||
unsigned int m_default_size[FM_MaxMode];
|
unsigned int m_default_size[FM_MaxMode];
|
||||||
|
|
||||||
/** current font engine mode */
|
/** current font engine mode */
|
||||||
FontMode m_currentMode;
|
FontMode m_currentMode = FM_Standard;
|
||||||
|
|
||||||
/** font mode of last request */
|
/** font mode of last request */
|
||||||
FontMode m_lastMode;
|
FontMode m_lastMode;
|
||||||
|
|
||||||
/** size of last request */
|
/** size of last request */
|
||||||
unsigned int m_lastSize;
|
unsigned int m_lastSize = 0;
|
||||||
|
|
||||||
/** last font returned */
|
/** last font returned */
|
||||||
irr::gui::IGUIFont* m_lastFont;
|
irr::gui::IGUIFont* m_lastFont = nullptr;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "irrlichttypes_bloated.h"
|
#include "irrlichttypes_bloated.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include "itemgroup.h"
|
||||||
|
|
||||||
enum GenericCMD {
|
enum GenericCMD {
|
||||||
GENERIC_CMD_SET_PROPERTIES,
|
GENERIC_CMD_SET_PROPERTIES,
|
||||||
@ -64,7 +65,6 @@ std::string gob_cmd_set_sprite(
|
|||||||
|
|
||||||
std::string gob_cmd_punched(s16 damage, s16 result_hp);
|
std::string gob_cmd_punched(s16 damage, s16 result_hp);
|
||||||
|
|
||||||
#include "itemgroup.h"
|
|
||||||
std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups);
|
std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups);
|
||||||
|
|
||||||
std::string gob_cmd_update_physics_override(float physics_override_speed,
|
std::string gob_cmd_update_physics_override(float physics_override_speed,
|
||||||
|
@ -54,22 +54,7 @@ GUIChatConsole::GUIChatConsole(
|
|||||||
m_chat_backend(backend),
|
m_chat_backend(backend),
|
||||||
m_client(client),
|
m_client(client),
|
||||||
m_menumgr(menumgr),
|
m_menumgr(menumgr),
|
||||||
m_screensize(v2u32(0,0)),
|
m_animate_time_old(porting::getTimeMs())
|
||||||
m_animate_time_old(porting::getTimeMs()),
|
|
||||||
m_open(false),
|
|
||||||
m_close_on_enter(false),
|
|
||||||
m_height(0),
|
|
||||||
m_desired_height(0),
|
|
||||||
m_desired_height_fraction(0.0),
|
|
||||||
m_height_speed(5.0),
|
|
||||||
m_open_inhibited(0),
|
|
||||||
m_cursor_blink(0.0),
|
|
||||||
m_cursor_blink_speed(0.0),
|
|
||||||
m_cursor_height(0.0),
|
|
||||||
m_background(NULL),
|
|
||||||
m_background_color(255, 0, 0, 0),
|
|
||||||
m_font(NULL),
|
|
||||||
m_fontsize(0, 0)
|
|
||||||
{
|
{
|
||||||
// load background settings
|
// load background settings
|
||||||
s32 console_alpha = g_settings->getS32("console_alpha");
|
s32 console_alpha = g_settings->getS32("console_alpha");
|
||||||
|
@ -101,35 +101,35 @@ private:
|
|||||||
u64 m_animate_time_old;
|
u64 m_animate_time_old;
|
||||||
|
|
||||||
// should the console be opened or closed?
|
// should the console be opened or closed?
|
||||||
bool m_open;
|
bool m_open = false;
|
||||||
// should it close after you press enter?
|
// should it close after you press enter?
|
||||||
bool m_close_on_enter;
|
bool m_close_on_enter = false;
|
||||||
// current console height [pixels]
|
// current console height [pixels]
|
||||||
s32 m_height;
|
s32 m_height = 0;
|
||||||
// desired height [pixels]
|
// desired height [pixels]
|
||||||
f32 m_desired_height;
|
f32 m_desired_height = 0.0f;
|
||||||
// desired height [screen height fraction]
|
// desired height [screen height fraction]
|
||||||
f32 m_desired_height_fraction;
|
f32 m_desired_height_fraction = 0.0f;
|
||||||
// console open/close animation speed [screen height fraction / second]
|
// console open/close animation speed [screen height fraction / second]
|
||||||
f32 m_height_speed;
|
f32 m_height_speed = 5.0f;
|
||||||
// if nonzero, opening the console is inhibited [milliseconds]
|
// if nonzero, opening the console is inhibited [milliseconds]
|
||||||
u32 m_open_inhibited;
|
u32 m_open_inhibited = 0;
|
||||||
|
|
||||||
// cursor blink frame (16-bit value)
|
// cursor blink frame (16-bit value)
|
||||||
// cursor is off during [0,32767] and on during [32768,65535]
|
// cursor is off during [0,32767] and on during [32768,65535]
|
||||||
u32 m_cursor_blink;
|
u32 m_cursor_blink = 0;
|
||||||
// cursor blink speed [on/off toggles / second]
|
// cursor blink speed [on/off toggles / second]
|
||||||
f32 m_cursor_blink_speed;
|
f32 m_cursor_blink_speed = 0.0f;
|
||||||
// cursor height [line height]
|
// cursor height [line height]
|
||||||
f32 m_cursor_height;
|
f32 m_cursor_height = 0.0f;
|
||||||
|
|
||||||
// background texture
|
// background texture
|
||||||
video::ITexture* m_background;
|
video::ITexture *m_background = nullptr;
|
||||||
// background color (including alpha)
|
// background color (including alpha)
|
||||||
video::SColor m_background_color;
|
video::SColor m_background_color = video::SColor(255, 0, 0, 0);
|
||||||
|
|
||||||
// font
|
// font
|
||||||
gui::IGUIFont* m_font;
|
gui::IGUIFont *m_font = nullptr;
|
||||||
v2u32 m_fontsize;
|
v2u32 m_fontsize;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -142,18 +142,7 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
|
|||||||
m_menumanager(menumgr),
|
m_menumanager(menumgr),
|
||||||
m_smgr(smgr),
|
m_smgr(smgr),
|
||||||
m_data(data),
|
m_data(data),
|
||||||
m_texture_source(NULL),
|
m_kill(kill)
|
||||||
m_sound_manager(NULL),
|
|
||||||
m_formspecgui(0),
|
|
||||||
m_buttonhandler(0),
|
|
||||||
m_menu(0),
|
|
||||||
m_kill(kill),
|
|
||||||
m_startgame(false),
|
|
||||||
m_script(0),
|
|
||||||
m_scriptdir(""),
|
|
||||||
m_irr_toplefttext(0),
|
|
||||||
m_clouds_enabled(true),
|
|
||||||
m_cloud()
|
|
||||||
{
|
{
|
||||||
//initialize texture pointers
|
//initialize texture pointers
|
||||||
for (unsigned int i = 0; i < TEX_LAYER_MAX; i++) {
|
for (unsigned int i = 0; i < TEX_LAYER_MAX; i++) {
|
||||||
|
@ -203,28 +203,28 @@ private:
|
|||||||
/** pointer to data beeing transfered back to main game handling */
|
/** pointer to data beeing transfered back to main game handling */
|
||||||
MainMenuData* m_data;
|
MainMenuData* m_data;
|
||||||
/** pointer to texture source */
|
/** pointer to texture source */
|
||||||
ISimpleTextureSource* m_texture_source;
|
ISimpleTextureSource *m_texture_source = nullptr;
|
||||||
/** pointer to soundmanager*/
|
/** pointer to soundmanager*/
|
||||||
ISoundManager* m_sound_manager;
|
ISoundManager *m_sound_manager = nullptr;
|
||||||
|
|
||||||
/** representation of form source to be used in mainmenu formspec */
|
/** representation of form source to be used in mainmenu formspec */
|
||||||
FormspecFormSource* m_formspecgui;
|
FormspecFormSource *m_formspecgui = nullptr;
|
||||||
/** formspec input receiver */
|
/** formspec input receiver */
|
||||||
TextDestGuiEngine* m_buttonhandler;
|
TextDestGuiEngine *m_buttonhandler = nullptr;
|
||||||
/** the formspec menu */
|
/** the formspec menu */
|
||||||
GUIFormSpecMenu* m_menu;
|
GUIFormSpecMenu *m_menu = nullptr;
|
||||||
|
|
||||||
/** reference to kill variable managed by SIGINT handler */
|
/** reference to kill variable managed by SIGINT handler */
|
||||||
bool& m_kill;
|
bool& m_kill;
|
||||||
|
|
||||||
/** variable used to abort menu and return back to main game handling */
|
/** variable used to abort menu and return back to main game handling */
|
||||||
bool m_startgame;
|
bool m_startgame = false;
|
||||||
|
|
||||||
/** scripting interface */
|
/** scripting interface */
|
||||||
MainMenuScripting* m_script;
|
MainMenuScripting *m_script = nullptr;
|
||||||
|
|
||||||
/** script basefolder */
|
/** script basefolder */
|
||||||
std::string m_scriptdir;
|
std::string m_scriptdir = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* draw background layer
|
* draw background layer
|
||||||
@ -272,7 +272,7 @@ private:
|
|||||||
void setTopleftText(const std::string &text);
|
void setTopleftText(const std::string &text);
|
||||||
|
|
||||||
/** pointer to gui element shown at topleft corner */
|
/** pointer to gui element shown at topleft corner */
|
||||||
irr::gui::IGUIStaticText* m_irr_toplefttext;
|
irr::gui::IGUIStaticText *m_irr_toplefttext = nullptr;
|
||||||
/** and text that is in it */
|
/** and text that is in it */
|
||||||
EnrichedString m_toplefttext;
|
EnrichedString m_toplefttext;
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/** is drawing of clouds enabled atm */
|
/** is drawing of clouds enabled atm */
|
||||||
bool m_clouds_enabled;
|
bool m_clouds_enabled = true;
|
||||||
/** data used to draw clouds */
|
/** data used to draw clouds */
|
||||||
clouddata m_cloud;
|
clouddata m_cloud;
|
||||||
|
|
||||||
@ -308,6 +308,4 @@ private:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* GUI_ENGINE_H_ */
|
#endif /* GUI_ENGINE_H_ */
|
||||||
|
@ -89,22 +89,9 @@ GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
|||||||
m_invmgr(client),
|
m_invmgr(client),
|
||||||
m_tsrc(tsrc),
|
m_tsrc(tsrc),
|
||||||
m_client(client),
|
m_client(client),
|
||||||
m_selected_item(NULL),
|
|
||||||
m_selected_amount(0),
|
|
||||||
m_selected_dragging(false),
|
|
||||||
m_tooltip_element(NULL),
|
|
||||||
m_hovered_time(0),
|
|
||||||
m_old_tooltip_id(-1),
|
|
||||||
m_rmouse_auto_place(false),
|
|
||||||
m_allowclose(true),
|
|
||||||
m_lock(false),
|
|
||||||
m_form_src(fsrc),
|
m_form_src(fsrc),
|
||||||
m_text_dst(tdst),
|
m_text_dst(tdst),
|
||||||
m_formspec_version(0),
|
|
||||||
m_focused_element(""),
|
|
||||||
m_joystick(joystick),
|
m_joystick(joystick),
|
||||||
current_field_enter_pending(""),
|
|
||||||
m_font(NULL),
|
|
||||||
m_remap_dbl_click(remap_dbl_click)
|
m_remap_dbl_click(remap_dbl_click)
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
, m_JavaDialogFieldName("")
|
, m_JavaDialogFieldName("")
|
||||||
@ -2629,7 +2616,6 @@ void GUIFormSpecMenu::drawMenu()
|
|||||||
u64 delta = 0;
|
u64 delta = 0;
|
||||||
if (id == -1) {
|
if (id == -1) {
|
||||||
m_old_tooltip_id = id;
|
m_old_tooltip_id = id;
|
||||||
m_old_tooltip = L"";
|
|
||||||
} else {
|
} else {
|
||||||
if (id == m_old_tooltip_id) {
|
if (id == m_old_tooltip_id) {
|
||||||
delta = porting::getDeltaMs(m_hovered_time, porting::getTimeMs());
|
delta = porting::getDeltaMs(m_hovered_time, porting::getTimeMs());
|
||||||
@ -2673,7 +2659,6 @@ void GUIFormSpecMenu::showTooltip(const std::wstring &text,
|
|||||||
{
|
{
|
||||||
m_tooltip_element->setOverrideColor(color);
|
m_tooltip_element->setOverrideColor(color);
|
||||||
m_tooltip_element->setBackgroundColor(bgcolor);
|
m_tooltip_element->setBackgroundColor(bgcolor);
|
||||||
m_old_tooltip = text;
|
|
||||||
setStaticText(m_tooltip_element, text.c_str());
|
setStaticText(m_tooltip_element, text.c_str());
|
||||||
|
|
||||||
// Tooltip size and offset
|
// Tooltip size and offset
|
||||||
@ -3037,7 +3022,6 @@ bool GUIFormSpecMenu::preprocessEvent(const SEvent& event)
|
|||||||
core::position2d<s32>(x, y));
|
core::position2d<s32>(x, y));
|
||||||
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) {
|
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) {
|
||||||
m_old_tooltip_id = -1;
|
m_old_tooltip_id = -1;
|
||||||
m_old_tooltip = L"";
|
|
||||||
}
|
}
|
||||||
if (!isChild(hovered,this)) {
|
if (!isChild(hovered,this)) {
|
||||||
if (DoubleClickDetection(event)) {
|
if (DoubleClickDetection(event)) {
|
||||||
|
@ -402,9 +402,9 @@ protected:
|
|||||||
std::vector<std::pair<FieldSpec,gui::IGUIScrollBar*> > m_scrollbars;
|
std::vector<std::pair<FieldSpec,gui::IGUIScrollBar*> > m_scrollbars;
|
||||||
std::vector<std::pair<FieldSpec, std::vector<std::string> > > m_dropdowns;
|
std::vector<std::pair<FieldSpec, std::vector<std::string> > > m_dropdowns;
|
||||||
|
|
||||||
ItemSpec *m_selected_item;
|
ItemSpec *m_selected_item = nullptr;
|
||||||
u32 m_selected_amount;
|
u32 m_selected_amount = 0;
|
||||||
bool m_selected_dragging;
|
bool m_selected_dragging = false;
|
||||||
|
|
||||||
// WARNING: BLACK MAGIC
|
// WARNING: BLACK MAGIC
|
||||||
// Used to guess and keep up with some special things the server can do.
|
// Used to guess and keep up with some special things the server can do.
|
||||||
@ -414,17 +414,16 @@ protected:
|
|||||||
|
|
||||||
v2s32 m_pointer;
|
v2s32 m_pointer;
|
||||||
v2s32 m_old_pointer; // Mouse position after previous mouse event
|
v2s32 m_old_pointer; // Mouse position after previous mouse event
|
||||||
gui::IGUIStaticText *m_tooltip_element;
|
gui::IGUIStaticText *m_tooltip_element = nullptr;
|
||||||
|
|
||||||
u64 m_tooltip_show_delay;
|
u64 m_tooltip_show_delay;
|
||||||
u64 m_hovered_time;
|
u64 m_hovered_time = 0;
|
||||||
s32 m_old_tooltip_id;
|
s32 m_old_tooltip_id = -1;
|
||||||
std::wstring m_old_tooltip;
|
|
||||||
|
|
||||||
bool m_rmouse_auto_place;
|
bool m_rmouse_auto_place = false;
|
||||||
|
|
||||||
bool m_allowclose;
|
bool m_allowclose = true;
|
||||||
bool m_lock;
|
bool m_lock = false;
|
||||||
v2u32 m_lockscreensize;
|
v2u32 m_lockscreensize;
|
||||||
|
|
||||||
bool m_bgfullscreen;
|
bool m_bgfullscreen;
|
||||||
@ -439,8 +438,8 @@ protected:
|
|||||||
private:
|
private:
|
||||||
IFormSource *m_form_src;
|
IFormSource *m_form_src;
|
||||||
TextDest *m_text_dst;
|
TextDest *m_text_dst;
|
||||||
unsigned int m_formspec_version;
|
u32 m_formspec_version = 0;
|
||||||
std::string m_focused_element;
|
std::string m_focused_element = "";
|
||||||
JoystickController *m_joystick;
|
JoystickController *m_joystick;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -467,7 +466,7 @@ private:
|
|||||||
} fs_key_pendig;
|
} fs_key_pendig;
|
||||||
|
|
||||||
fs_key_pendig current_keys_pending;
|
fs_key_pendig current_keys_pending;
|
||||||
std::string current_field_enter_pending;
|
std::string current_field_enter_pending = "";
|
||||||
|
|
||||||
void parseElement(parserData* data, const std::string &element);
|
void parseElement(parserData* data, const std::string &element);
|
||||||
|
|
||||||
@ -531,7 +530,7 @@ private:
|
|||||||
clickpos m_doubleclickdetect[2];
|
clickpos m_doubleclickdetect[2];
|
||||||
|
|
||||||
int m_btn_height;
|
int m_btn_height;
|
||||||
gui::IGUIFont *m_font;
|
gui::IGUIFont *m_font = nullptr;
|
||||||
|
|
||||||
std::wstring getLabelByID(s32 id);
|
std::wstring getLabelByID(s32 id);
|
||||||
std::string getNameByID(s32 id);
|
std::string getNameByID(s32 id);
|
||||||
|
Loading…
Reference in New Issue
Block a user