diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-09 22:41:26 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-01-09 22:41:26 +0000 |
| commit | 1f2ffb0ffeeccd2e9ec7cf549a27a60929853d72 (patch) | |
| tree | 2aed92b1a63ba92f3d0f29062eb6a5042ba1f870 | |
| parent | c3b6b87b5ae19fbeac1ab29f73625eed802651b2 (diff) | |
| download | zcatch-1f2ffb0ffeeccd2e9ec7cf549a27a60929853d72.tar.gz zcatch-1f2ffb0ffeeccd2e9ec7cf549a27a60929853d72.zip | |
applied patch for hook bug
| -rw-r--r-- | src/game/gamecore.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/game/gamecore.cpp b/src/game/gamecore.cpp index c15f3adf..8d167398 100644 --- a/src/game/gamecore.cpp +++ b/src/game/gamecore.cpp @@ -314,6 +314,7 @@ void CHARACTER_CORE::tick(bool use_input) // Check against other players first if(world) { + float dist = 0.0f; for(int i = 0; i < MAX_CLIENTS; i++) { CHARACTER_CORE *p = world->characters[i]; @@ -323,10 +324,13 @@ void CHARACTER_CORE::tick(bool use_input) vec2 closest_point = closest_point_on_line(hook_pos, new_pos, p->pos); if(distance(p->pos, closest_point) < phys_size+2.0f) { - triggered_events |= COREEVENT_HOOK_ATTACH_PLAYER; - hook_state = HOOK_GRABBED; - hooked_player = i; - break; + if (hooked_player == -1 || distance (hook_pos, p->pos) < dist) + { + triggered_events |= COREEVENT_HOOK_ATTACH_PLAYER; + hook_state = HOOK_GRABBED; + hooked_player = i; + dist = distance (hook_pos, p->pos); + } } } } |