diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-08-28 20:02:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-28 20:02:23 +0200 |
commit | 5f38fe33f89e87b56ab95370c2f07fe6117b5eb0 (patch) | |
tree | e2a497bb99f37ce6baae56d2979a2ae957829dc2 /src/client | |
parent | 6fd8a27c91b09f51693243586af3615f962d1730 (diff) | |
download | minetest-5f38fe33f89e87b56ab95370c2f07fe6117b5eb0.tar.gz minetest-5f38fe33f89e87b56ab95370c2f07fe6117b5eb0.tar.bz2 minetest-5f38fe33f89e87b56ab95370c2f07fe6117b5eb0.zip |
Clientevent refactor (#6320)
* Refactor clientevent structure
* Move structure outside of client header
* Create client events on heap not stack, this remove the ClientEvent object copy
* Use clientEventHandler to route events
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/clientevent.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/src/client/clientevent.h b/src/client/clientevent.h new file mode 100644 index 000000000..67125cce6 --- /dev/null +++ b/src/client/clientevent.h @@ -0,0 +1,170 @@ +/* +Minetest +Copyright (C) 2017 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 <string> +#include "irrlichttypes_bloated.h" +#include "hud.h" + +enum ClientEventType : u8 +{ + CE_NONE, + CE_PLAYER_DAMAGE, + CE_PLAYER_FORCE_MOVE, + CE_DEATHSCREEN, + CE_SHOW_FORMSPEC, + CE_SHOW_LOCAL_FORMSPEC, + CE_SPAWN_PARTICLE, + CE_ADD_PARTICLESPAWNER, + CE_DELETE_PARTICLESPAWNER, + CE_HUDADD, + CE_HUDRM, + CE_HUDCHANGE, + CE_SET_SKY, + CE_OVERRIDE_DAY_NIGHT_RATIO, + CE_CLOUD_PARAMS, + CLIENTEVENT_MAX, +}; + +struct ClientEvent +{ + ClientEventType type; + union + { + // struct{ + //} none; + struct + { + u8 amount; + } player_damage; + struct + { + f32 pitch; + f32 yaw; + } player_force_move; + struct + { + bool set_camera_point_target; + f32 camera_point_target_x; + f32 camera_point_target_y; + f32 camera_point_target_z; + } deathscreen; + struct + { + std::string *formspec; + std::string *formname; + } show_formspec; + // struct{ + //} textures_updated; + struct + { + v3f *pos; + v3f *vel; + v3f *acc; + f32 expirationtime; + f32 size; + bool collisiondetection; + bool collision_removal; + bool vertical; + std::string *texture; + struct TileAnimationParams animation; + u8 glow; + } spawn_particle; + struct + { + u16 amount; + f32 spawntime; + v3f *minpos; + v3f *maxpos; + v3f *minvel; + v3f *maxvel; + v3f *minacc; + v3f *maxacc; + f32 minexptime; + f32 maxexptime; + f32 minsize; + f32 maxsize; + bool collisiondetection; + bool collision_removal; + u16 attached_id; + bool vertical; + std::string *texture; + u32 id; + struct TileAnimationParams animation; + u8 glow; + } add_particlespawner; + struct + { + u32 id; + } delete_particlespawner; + struct + { + u32 id; + u8 type; + v2f *pos; + std::string *name; + v2f *scale; + std::string *text; + u32 number; + u32 item; + u32 dir; + v2f *align; + v2f *offset; + v3f *world_pos; + v2s32 *size; + } hudadd; + struct + { + u32 id; + } hudrm; + struct + { + u32 id; + HudElementStat stat; + v2f *v2fdata; + std::string *sdata; + u32 data; + v3f *v3fdata; + v2s32 *v2s32data; + } hudchange; + struct + { + video::SColor *bgcolor; + std::string *type; + std::vector<std::string> *params; + bool clouds; + } set_sky; + struct + { + bool do_override; + float ratio_f; + } override_day_night_ratio; + struct + { + f32 density; + u32 color_bright; + u32 color_ambient; + f32 height; + f32 thickness; + f32 speed_x; + f32 speed_y; + } cloud_params; + }; +}; |