123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- /*
- Minetest
- Copyright (C) 2010-2016 celeron55, Perttu Ahola <celeron55@gmail.com>
- Copyright (C) 2014-2016 nerzhul, Loic Blot <loic.blot@unix-experience.fr>
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
- #pragma once
- #include "player.h"
- #include "cloudparams.h"
- class PlayerSAO;
- enum RemotePlayerChatResult
- {
- RPLAYER_CHATRESULT_OK,
- RPLAYER_CHATRESULT_FLOODING,
- RPLAYER_CHATRESULT_KICK,
- };
- /*
- Player on the server
- */
- class RemotePlayer : public Player
- {
- friend class PlayerDatabaseFiles;
- public:
- RemotePlayer(const char *name, IItemDefManager *idef);
- virtual ~RemotePlayer() = default;
- void deSerialize(std::istream &is, const std::string &playername, PlayerSAO *sao);
- PlayerSAO *getPlayerSAO() { return m_sao; }
- void setPlayerSAO(PlayerSAO *sao) { m_sao = sao; }
- const RemotePlayerChatResult canSendChatMessage();
- void setHotbarItemcount(s32 hotbar_itemcount)
- {
- hud_hotbar_itemcount = hotbar_itemcount;
- }
- s32 getHotbarItemcount() const { return hud_hotbar_itemcount; }
- void overrideDayNightRatio(bool do_override, float ratio)
- {
- m_day_night_ratio_do_override = do_override;
- m_day_night_ratio = ratio;
- }
- void getDayNightRatio(bool *do_override, float *ratio)
- {
- *do_override = m_day_night_ratio_do_override;
- *ratio = m_day_night_ratio;
- }
- void setHotbarImage(const std::string &name) { hud_hotbar_image = name; }
- const std::string &getHotbarImage() const { return hud_hotbar_image; }
- void setHotbarSelectedImage(const std::string &name)
- {
- hud_hotbar_selected_image = name;
- }
- const std::string &getHotbarSelectedImage() const
- {
- return hud_hotbar_selected_image;
- }
- void setSky(const video::SColor &bgcolor, const std::string &type,
- const std::vector<std::string> ¶ms, bool &clouds)
- {
- m_sky_bgcolor = bgcolor;
- m_sky_type = type;
- m_sky_params = params;
- m_sky_clouds = clouds;
- }
- void getSky(video::SColor *bgcolor, std::string *type,
- std::vector<std::string> *params, bool *clouds)
- {
- *bgcolor = m_sky_bgcolor;
- *type = m_sky_type;
- *params = m_sky_params;
- *clouds = m_sky_clouds;
- }
- void setCloudParams(const CloudParams &cloud_params)
- {
- m_cloud_params = cloud_params;
- }
- const CloudParams &getCloudParams() const { return m_cloud_params; }
- bool checkModified() const { return m_dirty || inventory.checkModified(); }
- void setModified(const bool x)
- {
- m_dirty = x;
- if (!x)
- inventory.setModified(x);
- }
- void setLocalAnimations(v2s32 frames[4], float frame_speed)
- {
- for (int i = 0; i < 4; i++)
- local_animations[i] = frames[i];
- local_animation_speed = frame_speed;
- }
- void getLocalAnimations(v2s32 *frames, float *frame_speed)
- {
- for (int i = 0; i < 4; i++)
- frames[i] = local_animations[i];
- *frame_speed = local_animation_speed;
- }
- void setDirty(bool dirty) { m_dirty = true; }
- u16 protocol_version = 0;
- session_t getPeerId() const { return m_peer_id; }
- void setPeerId(session_t peer_id) { m_peer_id = peer_id; }
- private:
- /*
- serialize() writes a bunch of text that can contain
- any characters except a '\0', and such an ending that
- deSerialize stops reading exactly at the right point.
- */
- void serialize(std::ostream &os);
- void serializeExtraAttributes(std::string &output);
- PlayerSAO *m_sao = nullptr;
- bool m_dirty = false;
- static bool m_setting_cache_loaded;
- static float m_setting_chat_message_limit_per_10sec;
- static u16 m_setting_chat_message_limit_trigger_kick;
- u32 m_last_chat_message_sent = std::time(0);
- float m_chat_message_allowance = 5.0f;
- u16 m_message_rate_overhead = 0;
- bool m_day_night_ratio_do_override = false;
- float m_day_night_ratio;
- std::string hud_hotbar_image = "";
- std::string hud_hotbar_selected_image = "";
- std::string m_sky_type;
- video::SColor m_sky_bgcolor;
- std::vector<std::string> m_sky_params;
- bool m_sky_clouds;
- CloudParams m_cloud_params;
- session_t m_peer_id = PEER_ID_INEXISTENT;
- };
|