mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Chat bubble.
This commit is contained in:
parent
f946cc6f5f
commit
30a027a0da
|
@ -181,6 +181,10 @@ images {
|
|||
cloud_3 {
|
||||
filename "data/cloud-3.png"
|
||||
}
|
||||
|
||||
chat_bubbles {
|
||||
filename "data/chatbubbles.png"
|
||||
}
|
||||
}
|
||||
|
||||
particles {
|
||||
|
@ -525,6 +529,10 @@ sprites {
|
|||
|
||||
tee_eye_normal 10 2 1 1
|
||||
}
|
||||
|
||||
chatbubbles images.chat_bubbles 4 4 {
|
||||
chat_dotdot 0 1 1 1
|
||||
}
|
||||
}
|
||||
|
||||
animations {
|
||||
|
|
|
@ -1012,6 +1012,17 @@ static void render_player(obj_player *prev, obj_player *player)
|
|||
// render the tee
|
||||
int skin = gametype == GAMETYPE_TDM ? skinseed + player->team : player->clientid;
|
||||
render_tee(&state, skin, direction, position);
|
||||
|
||||
if(player->state == STATE_CHATTING)
|
||||
{
|
||||
|
||||
gfx_texture_set(data->images[IMAGE_CHAT_BUBBLES].id);
|
||||
gfx_quads_begin();
|
||||
select_sprite(SPRITE_CHAT_DOTDOT);
|
||||
gfx_quads_draw(position.x + 24, position.y - 40, 64,64);
|
||||
gfx_quads_end();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1212,8 +1223,13 @@ void modc_render()
|
|||
input.target_y = (int)mouse_pos.y; //(int)(a*256.0f);
|
||||
input.activeweapon = -1;
|
||||
|
||||
if(!chat_active && !menu_active)
|
||||
if(chat_active)
|
||||
input.state = STATE_CHATTING;
|
||||
else if(menu_active)
|
||||
input.state = STATE_IN_MENU;
|
||||
else
|
||||
{
|
||||
input.state = STATE_PLAYING;
|
||||
input.left = inp_key_pressed(config.key_move_left);
|
||||
input.right = inp_key_pressed(config.key_move_right);
|
||||
input.jump = inp_key_pressed(config.key_jump);
|
||||
|
|
|
@ -62,6 +62,14 @@ enum
|
|||
EMOTE_HAPPY,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
STATE_UNKNOWN=0,
|
||||
STATE_PLAYING,
|
||||
STATE_IN_MENU,
|
||||
STATE_CHATTING,
|
||||
};
|
||||
|
||||
struct player_input
|
||||
{
|
||||
int left;
|
||||
|
@ -75,6 +83,7 @@ struct player_input
|
|||
int hook;
|
||||
int blink;
|
||||
int activeweapon;
|
||||
int state;
|
||||
};
|
||||
|
||||
|
||||
|
@ -141,6 +150,7 @@ struct obj_player
|
|||
{
|
||||
int local;
|
||||
int clientid;
|
||||
int state;
|
||||
|
||||
int health;
|
||||
int armor;
|
||||
|
|
|
@ -675,6 +675,7 @@ void player::reset()
|
|||
score = 0;
|
||||
dead = true;
|
||||
die_tick = 0;
|
||||
state = STATE_UNKNOWN;
|
||||
}
|
||||
|
||||
void player::destroy() { }
|
||||
|
@ -686,6 +687,7 @@ void player::respawn()
|
|||
jumped = 0;
|
||||
dead = false;
|
||||
set_flag(entity::FLAG_ALIVE);
|
||||
state = STATE_PLAYING;
|
||||
|
||||
mem_zero(&input, sizeof(input));
|
||||
vel = vec2(0.0f, 0.0f);
|
||||
|
@ -1208,6 +1210,8 @@ void player::tick()
|
|||
move_box(&defered_pos, &vel, vec2(phys_size, phys_size), 0);
|
||||
}
|
||||
|
||||
state = input.state;
|
||||
|
||||
// Previnput
|
||||
previnput = input;
|
||||
return;
|
||||
|
@ -1353,6 +1357,8 @@ void player::snap(int snaping_client)
|
|||
|
||||
player->score = score;
|
||||
player->team = team;
|
||||
|
||||
player->state = state;
|
||||
}
|
||||
|
||||
player players[MAX_CLIENTS];
|
||||
|
|
|
@ -243,6 +243,7 @@ public:
|
|||
|
||||
int score;
|
||||
int team;
|
||||
int state;
|
||||
|
||||
bool dead;
|
||||
int die_tick;
|
||||
|
|
Loading…
Reference in a new issue