diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-08-30 08:20:06 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-08-30 08:20:06 +0000 |
| commit | 71fa35606c268594f8cf4c52626057f86861c3de (patch) | |
| tree | bbb67479ab1b89a0e18af6cd4dc9c3a3cca5d0ba /src/game/client/components/emoticon.cpp | |
| parent | b4cef60d62e24d3c0c0451e94adf99254a259a3d (diff) | |
| download | zcatch-71fa35606c268594f8cf4c52626057f86861c3de.tar.gz zcatch-71fa35606c268594f8cf4c52626057f86861c3de.zip | |
fixed emoticons
Diffstat (limited to 'src/game/client/components/emoticon.cpp')
| -rw-r--r-- | src/game/client/components/emoticon.cpp | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/game/client/components/emoticon.cpp b/src/game/client/components/emoticon.cpp index f359530a..75859f60 100644 --- a/src/game/client/components/emoticon.cpp +++ b/src/game/client/components/emoticon.cpp @@ -3,6 +3,7 @@ #include <game/generated/gc_data.hpp> #include <game/gamecore.hpp> // get_angle +#include <game/client/gameclient.hpp> #include <game/client/gc_ui.hpp> #include <game/client/gc_render.hpp> #include "emoticon.hpp" @@ -12,22 +13,42 @@ EMOTICON::EMOTICON() on_reset(); } +void EMOTICON::con_key_emoticon(void *result, void *user_data) +{ + ((EMOTICON *)user_data)->active = console_arg_int(result, 0) != 0; +} + +void EMOTICON::on_init() +{ + MACRO_REGISTER_COMMAND("+emote", "", con_key_emoticon, this); +} + void EMOTICON::on_reset() { - selector_active = 0; + was_active = false; + active = false; selected_emote = -1; } void EMOTICON::on_message(int msgtype, void *rawmsg) { + if(msgtype == NETMSGTYPE_SV_EMOTICON) + { + NETMSG_SV_EMOTICON *msg = (NETMSG_SV_EMOTICON *)rawmsg; + gameclient.clients[msg->cid].emoticon = msg->emoticon; + gameclient.clients[msg->cid].emoticon_start = client_tick(); + } } -bool EMOTICON::on_input(INPUT_EVENT e) +bool EMOTICON::on_mousemove(float x, float y) { - return false; + if(!active) + return false; + + selector_mouse += vec2(x,y); + return true; } - void EMOTICON::draw_circle(float x, float y, float r, int segments) { float f_segments = (float)segments; @@ -54,6 +75,16 @@ void EMOTICON::draw_circle(float x, float y, float r, int segments) void EMOTICON::on_render() { + if(!active) + { + if(was_active && selected_emote) + emote(selected_emote); + was_active = false; + return; + } + + was_active = true; + int x, y; inp_mouse_relative(&x, &y); @@ -110,8 +141,6 @@ void EMOTICON::on_render() gfx_quads_end(); } - - void EMOTICON::emote(int emoticon) { NETMSG_CL_EMOTICON msg; |