summaryrefslogtreecommitdiff
path: root/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'player.c')
-rw-r--r--player.c27
1 files changed, 27 insertions, 0 deletions
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);
+}