summaryrefslogtreecommitdiff
path: root/src/game.c
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2022-12-13 17:40:23 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2022-12-13 17:40:23 +0100
commitf8ccfba637267bae8064daa320cfb00b8ffe3e66 (patch)
tree1a039335d09db5159b17bd7909a93039f0de1386 /src/game.c
parentcaac4b1d169425ad7dda15fe8fceca9c5a95400b (diff)
movement working
Diffstat (limited to 'src/game.c')
-rw-r--r--src/game.c61
1 files changed, 9 insertions, 52 deletions
diff --git a/src/game.c b/src/game.c
index 00f7bbb..4daf6c8 100644
--- a/src/game.c
+++ b/src/game.c
@@ -73,53 +73,6 @@ static void rotate_user(platform_window* window, protocol_user_look *message) {
p->guny = message->guny;
}
-static void move_user(platform_window* window, protocol_move *message) {
- float speed = 0.1f;
- float pad_between_player_and_obj = 0.01f;
-
- player* p = get_player_by_id(message->id);
- if (p == 0) {
- log_info("Unknown user moved");
- return;
- }
-
- if (message->move == MOVE_UP) {
- float newy = p->playery - speed;
- if (is_in_bounds(p->playerx, newy)) {
- p->playery = newy;
- object o = check_if_player_collided_with_object(window, *p);
- if (o.active) p->playery = o.position.y+o.size.y - get_player_size_in_tile() + pad_between_player_and_obj;
- }
- }
-
- if (message->move == MOVE_DOWN) {
- float newy = p->playery + speed;
- if (is_in_bounds(p->playerx, newy)) {
- p->playery = newy;
- object o = check_if_player_collided_with_object(window, *p);
- if (o.active) p->playery = o.position.y - get_player_size_in_tile() - pad_between_player_and_obj;
- }
- }
-
- if (message->move == MOVE_LEFT) {
- float newx = p->playerx - speed;
- if (is_in_bounds(newx, p->playery)) {
- p->playerx = newx;
- object o = check_if_player_collided_with_object(window, *p);
- if (o.active) p->playerx = o.position.x+o.size.x + pad_between_player_and_obj;
- }
- }
-
- if (message->move == MOVE_RIGHT) {
- float newx = p->playerx + speed;
- if (is_in_bounds(newx, p->playery)) {
- p->playerx = newx;
- object o = check_if_player_collided_with_object(window, *p);
- if (o.active) p->playerx = o.position.x-get_player_size_in_tile() - pad_between_player_and_obj;
- }
- }
-}
-
float update_timer = 0.0f;
void update_server(platform_window* window) {
update_spawners();
@@ -138,7 +91,8 @@ void update_server(platform_window* window) {
} break;
case MESSAGE_USER_MOVED: {
- move_user(window, (protocol_move*)msg->message);
+ protocol_move* move_msg = (protocol_move*)msg->message;
+ move_user(window, move_msg->id, move_msg->move);
} break;
case MESSAGE_USER_LOOK: {
@@ -156,10 +110,9 @@ void update_server(platform_window* window) {
i--;
}
- broadcast_to_clients(create_protocol_user_list());
-
- if (update_timer > 0.2f) {
- //broadcast_to_clients(create_protocol_zombie_list());
+ if (update_timer > 0.0f) {
+ broadcast_to_clients(create_protocol_user_list());
+ broadcast_to_clients(create_protocol_zombie_list());
update_timer = 0.0f;
}
@@ -183,7 +136,11 @@ void update_client(platform_window* window) {
case MESSAGE_USER_LIST: {
protocol_user_list* msg_players = (protocol_user_list*)msg;
+ player* p = get_player_by_id(my_id);
+ player copy;
+ if (p) copy = *p;
memcpy(players, msg_players->players, sizeof(players));
+ if (p) *p = copy;
} break;
case MESSAGE_ZOMBIE_LIST: {
if (global_state.server) break; // zombies are simulated on server so dont overwrite data.