diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/components/camera.cpp | 4 | ||||
| -rw-r--r-- | src/game/client/components/items.cpp | 11 | ||||
| -rw-r--r-- | src/game/client/components/players.cpp | 4 | ||||
| -rw-r--r-- | src/game/client/gameclient.cpp | 22 | ||||
| -rw-r--r-- | src/game/server/player.cpp | 2 |
5 files changed, 14 insertions, 29 deletions
diff --git a/src/game/client/components/camera.cpp b/src/game/client/components/camera.cpp index ba9aed46..7b188e00 100644 --- a/src/game/client/components/camera.cpp +++ b/src/game/client/components/camera.cpp @@ -19,7 +19,8 @@ void CAMERA::on_render() { //vec2 center; zoom = 1.0f; - + + // update camera center if(gameclient.snap.spectate) center = gameclient.controls->mouse_pos; else @@ -37,4 +38,3 @@ void CAMERA::on_render() center = gameclient.local_character_pos + camera_offset; } } - diff --git a/src/game/client/components/items.cpp b/src/game/client/components/items.cpp index 43ad3319..c880b93e 100644 --- a/src/game/client/components/items.cpp +++ b/src/game/client/components/items.cpp @@ -14,8 +14,6 @@ void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid) { - gfx_texture_set(data->images[IMAGE_GAME].id); - gfx_quads_begin(); // get positions float curvature = 0; @@ -36,12 +34,19 @@ void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid) speed = gameclient.tuning.gun_speed; } - float ct = (client_tick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime()*1/(float)SERVER_TICK_SPEED; + float ct = (client_prevtick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime(); + if(ct < 0) + return; // projectile havn't been shot yet + vec2 startpos(current->x, current->y); vec2 startvel(current->vx/100.0f, current->vy/100.0f); vec2 pos = calc_pos(startpos, startvel, curvature, speed, ct); vec2 prevpos = calc_pos(startpos, startvel, curvature, speed, ct-0.001f); + + gfx_texture_set(data->images[IMAGE_GAME].id); + gfx_quads_begin(); + select_sprite(data->weapons.id[clamp(current->type, 0, NUM_WEAPONS-1)].sprite_proj); vec2 vel = pos-prevpos; //vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), client_intratick()); diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp index 02977632..8125b6d9 100644 --- a/src/game/client/components/players.cpp +++ b/src/game/client/components/players.cpp @@ -145,12 +145,10 @@ void PLAYERS::render_player( intratick = client_predintratick(); } } - + vec2 position = mix(vec2(prev.x, prev.y), vec2(player.x, player.y), intratick); vec2 vel = mix(vec2(prev.vx/256.0f, prev.vy/256.0f), vec2(player.vx/256.0f, player.vy/256.0f), intratick); - //dbg_msg("", "%d %d %d %d %f", prev.x, prev.y, player.x, player.y, intratick); - gameclient.flow->add(position, vel*100.0f, 10.0f); render_info.got_airjump = player.jumped&2?0:1; diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp index 7c9a1ed6..22800a7a 100644 --- a/src/game/client/gameclient.cpp +++ b/src/game/client/gameclient.cpp @@ -303,7 +303,7 @@ void GAMECLIENT::on_reset() void GAMECLIENT::update_local_character_pos() { - if(config.cl_predict) + if(config.cl_predict && client_state() != CLIENTSTATE_DEMOPLAYBACK) { if(!snap.local_character || (snap.local_character->health < 0) || (snap.gameobj && snap.gameobj->game_over)) { @@ -328,7 +328,7 @@ static void evolve(NETOBJ_CHARACTER *character, int tick) mem_zero(&tempcore, sizeof(tempcore)); tempcore.world = &tempworld; tempcore.read(character); - //tempcore.input.direction = character->wanted_direction; + while(character->tick < tick) { character->tick++; @@ -343,21 +343,6 @@ static void evolve(NETOBJ_CHARACTER *character, int tick) void GAMECLIENT::on_render() { - // perform dead reckoning - // TODO: move this to a betterlocation - /* - for(int i = 0; i < MAX_CLIENTS; i++) - { - if(!snap.characters[i].active) - continue; - - // perform dead reckoning - if(snap.characters[i].prev.tick) - evolve(&snap.characters[i].prev, client_prevtick()); - if(snap.characters[i].cur.tick) - evolve(&snap.characters[i].cur, client_tick()); - }*/ - // update the local character position update_local_character_pos(); @@ -621,9 +606,6 @@ void GAMECLIENT::on_snapshot() } } - if(client_state() == CLIENTSTATE_DEMOPLAYBACK) - gameclient.snap.spectate = true; - // setup local pointers if(snap.local_cid >= 0) { diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index b2f72d0e..02e92c36 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -130,7 +130,7 @@ void PLAYER::kill_character() //CHARACTER *chr = get_character(); if(character) { - character->die(-1, -1); + character->die(client_id, -1); delete character; character = 0; } |