From cfc86e984f965285094fca91fee7d9098423b4cb Mon Sep 17 00:00:00 2001 From: quou Date: Sat, 10 Aug 2024 19:21:55 +1000 Subject: draw the gun --- player.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'player.c') diff --git a/player.c b/player.c index a94b36b..07a6170 100644 --- a/player.c +++ b/player.c @@ -1,6 +1,8 @@ +#include "asset.h" #include "maths.h" #include "plat.h" #include "player.h" +#include "render.h" #include "services.h" void init_player(Player* p) { @@ -8,6 +10,7 @@ void init_player(Player* p) { vec_cpy(p->p, ip, 3); p->r[0] = 0; p->r[1] = 0; + p->anim = 0; } void update_player(Player* p, struct Services* s) { @@ -32,6 +35,10 @@ void update_player(Player* p, struct Services* s) { p->f[1] = dir[1]; p->l[0] = dir[2]; p->l[1] = dir[3]; + if (a->mbtn_states[mbtn_left] & key_state_just_pressed && p->anim < 16) + p->anim = 0xff; + if (p->anim > 16) + p->anim -= 16; } void push_player_cam(const Player* p) { @@ -47,3 +54,23 @@ void push_player_cam(const Player* p) { void pop_player_cam(void) { mtx_popn(3); } + +void draw_gun(Renderer* r, const Player* p) { + const Mesh* m = get_mesh(asset_id_gun_mesh); + const Texture* tex = get_texture(asset_id_gun_texture); + int pos[3]; + pos[0] = 0; + pos[1] = -f1; + pos[2] = cos_table[p->anim]; + mtx_push_trans(pos); + mtx_push_scale(f1/4); + mtx_push_rot_y(-64); + ren_mesh(r, m, tex); + mtx_popn(3); +} + + +void draw_player_world(Renderer* r, const Player* p) { + ren_cleard(r, f1 * 300); + draw_gun(r, p); +} -- cgit v1.2.3-54-g00ecf