more cleanups

This commit is contained in:
Magnus Auvinen 2008-01-29 21:55:13 +00:00
parent 5d1cb86943
commit 6c362f91eb
6 changed files with 43 additions and 186 deletions

View file

@ -5,8 +5,8 @@
#include <string.h> #include <string.h>
extern "C" { extern "C" {
#include <engine/e_config.h> #include <engine/e_config.h> // TODO: this shouldn't be here
#include <engine/client/ec_font.h> #include <engine/client/ec_font.h> // TODO: this shouldn't be here
#include <engine/e_client_interface.h> #include <engine/e_client_interface.h>
}; };
@ -24,8 +24,6 @@ extern "C" {
#include "gc_anim.h" #include "gc_anim.h"
#include "gc_console.h" #include "gc_console.h"
#include <GL/gl.h>
struct data_container *data = 0; struct data_container *data = 0;
static int64 debug_firedelay = 0; static int64 debug_firedelay = 0;

View file

@ -298,28 +298,16 @@ extern "C" void modc_render()
render_game(); render_game();
if (console_active()) if (console_active())
console_render(); console_render();
// handle team switching
// TODO: FUGLY!!!
/*
if(config.cl_team != -10)
{
}*/
} }
else // if (client_state() != CLIENTSTATE_CONNECTING && client_state() != CLIENTSTATE_LOADING) else
{ {
menu_render(); menu_render();
if (console_active()) if (console_active())
console_render(); console_render();
return; return;
} }
//
//config.cl_team = -10;
} }
extern "C" int modc_snap_input(int *data) extern "C" int modc_snap_input(int *data)
{ {
picked_up_weapon = -1; picked_up_weapon = -1;
@ -335,12 +323,12 @@ extern "C" int modc_snap_input(int *data)
input_target_lock = 0; input_target_lock = 0;
if(chat_mode != CHATMODE_NONE) if(chat_mode != CHATMODE_NONE)
input_data.state = STATE_CHATTING; input_data.player_state = PLAYERSTATE_CHATTING;
else if(menu_active) else if(menu_active)
input_data.state = STATE_IN_MENU; input_data.player_state = PLAYERSTATE_IN_MENU;
else else
{ {
input_data.state = STATE_PLAYING; input_data.player_state = PLAYERSTATE_PLAYING;
// TODO: this doesn't feel too pretty... look into it? // TODO: this doesn't feel too pretty... look into it?
if (console_active()) if (console_active())

View file

@ -434,7 +434,7 @@ void render_player(
// render the tee // render the tee
render_tee(&state, &render_info, player.emote, direction, position); render_tee(&state, &render_info, player.emote, direction, position);
if(player.state == STATE_CHATTING) if(player.player_state == PLAYERSTATE_CHATTING)
{ {
gfx_texture_set(data->images[IMAGE_EMOTICONS].id); gfx_texture_set(data->images[IMAGE_EMOTICONS].id);
gfx_quads_begin(); gfx_quads_begin();

View file

@ -81,10 +81,10 @@ enum
enum enum
{ {
STATE_UNKNOWN=0, PLAYERSTATE_UNKNOWN=0,
STATE_PLAYING, PLAYERSTATE_PLAYING,
STATE_IN_MENU, PLAYERSTATE_IN_MENU,
STATE_CHATTING, PLAYERSTATE_CHATTING,
GAMETYPE_DM=0, GAMETYPE_DM=0,
GAMETYPE_TDM, GAMETYPE_TDM,
@ -103,7 +103,8 @@ struct player_input
int fire; int fire;
int hook; int hook;
int blink; int blink;
int state;
int player_state;
int wanted_weapon; int wanted_weapon;
int next_weapon; int next_weapon;
@ -193,7 +194,7 @@ struct obj_player_core
// info about the player that is only needed when it's on screen // info about the player that is only needed when it's on screen
struct obj_player_character : public obj_player_core struct obj_player_character : public obj_player_core
{ {
int state; int player_state;
int health; int health;
int armor; int armor;

View file

@ -216,19 +216,6 @@ class player : public entity
{ {
public: public:
static const int phys_size = 28; static const int phys_size = 28;
enum // what are these?
{
MODIFIER_RETURNFLAGS_OVERRIDEVELOCITY = 1 << 0,
MODIFIER_RETURNFLAGS_OVERRIDEPOSITION = 1 << 1,
MODIFIER_RETURNFLAGS_OVERRIDEGRAVITY = 1 << 2,
MODIFIER_RETURNFLAGS_NOHOOK = 1 << 3,
WEAPONSTAGE_SNIPER_NEUTRAL = 0,
WEAPONSTAGE_SNIPER_CHARGING = 1,
};
// weapon info // weapon info
entity* hitobjects[10]; entity* hitobjects[10];
@ -238,23 +225,21 @@ public:
int ammoregenstart; int ammoregenstart;
int ammo; int ammo;
int ammocost; int ammocost;
int weaponstage;
bool got; bool got;
} weapons[NUM_WEAPONS]; } weapons[NUM_WEAPONS];
int active_weapon; int active_weapon;
int last_weapon; int last_weapon;
int wanted_weapon; int wanted_weapon;
int reload_timer; int reload_timer;
int attack_tick; int attack_tick;
int sniper_chargetick;
int damage_taken; int damage_taken;
int emote_type; int emote_type;
int emote_stop; int emote_stop;
int last_action; int last_action; // last tick that the player took any action ie some input
// //
int client_id; int client_id;
@ -263,7 +248,6 @@ public:
int color_body; int color_body;
int color_feet; int color_feet;
// these are non-heldback inputs // these are non-heldback inputs
player_input latest_previnput; player_input latest_previnput;
player_input latest_input; player_input latest_input;
@ -280,17 +264,18 @@ public:
int armor; int armor;
// ninja // ninja
vec2 activationdir; struct
int ninja_activationtick; {
int extrapowerflags; vec2 activationdir;
int currentcooldown; int activationtick;
int currentactivation; int currentcooldown;
int currentmovetime; int currentmovetime;
} ninja;
// //
int score; int score;
int team; int team;
int state; int player_state; // if the client is chatting, accessing a menu or so
bool spawning; bool spawning;
bool dead; bool dead;
@ -325,8 +310,6 @@ public:
int handle_weapons(); int handle_weapons();
int handle_ninja(); int handle_ninja();
int handle_sniper();
int handle_bomb();
virtual void tick(); virtual void tick();
virtual void tick_defered(); virtual void tick_defered();

View file

@ -457,7 +457,6 @@ void player::init()
proximity_radius = phys_size; proximity_radius = phys_size;
client_id = -1; client_id = -1;
team = -1; // -1 == spectator team = -1; // -1 == spectator
extrapowerflags = 0;
latency_accum = 0; latency_accum = 0;
latency_accum_min = 0; latency_accum_min = 0;
@ -481,7 +480,7 @@ void player::reset()
die_tick = 0; die_tick = 0;
die_pos = vec2(0,0); die_pos = vec2(0,0);
damage_taken = 0; damage_taken = 0;
state = STATE_UNKNOWN; player_state = PLAYERSTATE_UNKNOWN;
mem_zero(&input, sizeof(input)); mem_zero(&input, sizeof(input));
mem_zero(&previnput, sizeof(previnput)); mem_zero(&previnput, sizeof(previnput));
@ -493,9 +492,8 @@ void player::reset()
damage_taken_tick = 0; damage_taken_tick = 0;
attack_tick = 0; attack_tick = 0;
numobjectshit = 0; numobjectshit = 0;
ninja_activationtick = 0;
sniper_chargetick = -1; mem_zero(&ninja, sizeof(ninja));
currentmovetime = 0;
active_weapon = WEAPON_GUN; active_weapon = WEAPON_GUN;
last_weapon = WEAPON_HAMMER; last_weapon = WEAPON_HAMMER;
@ -687,13 +685,11 @@ void player::try_respawn()
armor = 0; armor = 0;
jumped = 0; jumped = 0;
ninja_activationtick = 0; mem_zero(&ninja, sizeof(ninja));
sniper_chargetick = -1;
currentcooldown = 0;
dead = false; dead = false;
set_flag(entity::FLAG_PHYSICS); set_flag(entity::FLAG_PHYSICS);
state = STATE_PLAYING; player_state = PLAYERSTATE_PLAYING;
core.hook_state = HOOK_IDLE; core.hook_state = HOOK_IDLE;
@ -735,7 +731,7 @@ int player::handle_ninja()
{ {
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y)); vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
if ((server_tick() - ninja_activationtick) > (data->weapons[WEAPON_NINJA].duration * server_tickspeed() / 1000)) if ((server_tick() - ninja.activationtick) > (data->weapons[WEAPON_NINJA].duration * server_tickspeed() / 1000))
{ {
// time's up, return // time's up, return
weapons[WEAPON_NINJA].got = false; weapons[WEAPON_NINJA].got = false;
@ -745,13 +741,13 @@ int player::handle_ninja()
} }
// Check if it should activate // Check if it should activate
if (count_input(latest_previnput.fire, latest_input.fire).presses && (server_tick() > currentcooldown)) if (count_input(latest_previnput.fire, latest_input.fire).presses && (server_tick() > ninja.currentcooldown))
{ {
// ok then, activate ninja // ok then, activate ninja
attack_tick = server_tick(); attack_tick = server_tick();
activationdir = direction; ninja.activationdir = direction;
currentmovetime = data->weapons[WEAPON_NINJA].movetime * server_tickspeed() / 1000; ninja.currentmovetime = data->weapons[WEAPON_NINJA].movetime * server_tickspeed() / 1000;
currentcooldown = data->weapons[WEAPON_NINJA].firedelay * server_tickspeed() / 1000 + server_tick(); ninja.currentcooldown = data->weapons[WEAPON_NINJA].firedelay * server_tickspeed() / 1000 + server_tick();
// reset hit objects // reset hit objects
numobjectshit = 0; numobjectshit = 0;
@ -763,24 +759,24 @@ int player::handle_ninja()
//release_hooks(); //release_hooks();
} }
currentmovetime--; ninja.currentmovetime--;
if (currentmovetime == 0) if (ninja.currentmovetime == 0)
{ {
// reset player velocity // reset player velocity
core.vel *= 0.2f; core.vel *= 0.2f;
//return MODIFIER_RETURNFLAGS_OVERRIDEWEAPON; //return MODIFIER_RETURNFLAGS_OVERRIDEWEAPON;
} }
if (currentmovetime > 0) if (ninja.currentmovetime > 0)
{ {
// Set player velocity // Set player velocity
core.vel = activationdir * data->weapons[WEAPON_NINJA].velocity; core.vel = ninja.activationdir * data->weapons[WEAPON_NINJA].velocity;
vec2 oldpos = pos; vec2 oldpos = pos;
move_box(&core.pos, &core.vel, vec2(phys_size, phys_size), 0.0f); move_box(&core.pos, &core.vel, vec2(phys_size, phys_size), 0.0f);
// reset velocity so the client doesn't predict stuff // reset velocity so the client doesn't predict stuff
core.vel = vec2(0.0f,0.0f); core.vel = vec2(0.0f,0.0f);
if ((currentmovetime % 2) == 0) if ((ninja.currentmovetime % 2) == 0)
{ {
create_smoke(pos); create_smoke(pos);
} }
@ -821,114 +817,12 @@ int player::handle_ninja()
ents[i]->take_damage(vec2(0,10.0f), data->weapons[WEAPON_NINJA].meleedamage, client_id,WEAPON_NINJA); ents[i]->take_damage(vec2(0,10.0f), data->weapons[WEAPON_NINJA].meleedamage, client_id,WEAPON_NINJA);
} }
} }
return MODIFIER_RETURNFLAGS_OVERRIDEVELOCITY | MODIFIER_RETURNFLAGS_OVERRIDEPOSITION | MODIFIER_RETURNFLAGS_OVERRIDEGRAVITY; return 0;
} }
return 0; return 0;
} }
int player::handle_sniper()
{
/*
struct input_count button = count_input(previnput.fire, input.fire);
bool must_release = false;
int current_load = (server_tick()-sniper_chargetick) / server_tickspeed() + 1;
if(input.fire&1)
{
if(sniper_chargetick == -1)
{
// start charge
sniper_chargetick = server_tick();
}
else
{
if(current_load > weapons[WEAPON_SNIPER].ammo+3)
must_release = true;
}
}
if(button.releases || must_release)
{
vec2 direction = normalize(vec2(input.target_x, input.target_y));
// released
sniper_chargetick = -1;
if(current_load > weapons[WEAPON_SNIPER].ammo)
current_load = weapons[WEAPON_SNIPER].ammo;
weapons[WEAPON_SNIPER].ammo -= current_load;
new projectile(projectile::WEAPON_PROJECTILETYPE_SNIPER,
client_id, pos+vec2(0,0), direction*50.0f,
100, this, current_load, 0, 0, -1, WEAPON_SNIPER);
create_sound(pos, SOUND_SNIPER_FIRE);
}
*/
/*
if(button.releases)
{
vec2 direction = normalize(vec2(input.target_x, input.target_y));
// Check if we were charging, if so fire
if (weapons[WEAPON_SNIPER].weaponstage >= WEAPONSTAGE_SNIPER_CHARGING)
{
new projectile(projectile::WEAPON_PROJECTILETYPE_SNIPER,
client_id, pos+vec2(0,0), direction*50.0f,
100 + weapons[WEAPON_SNIPER].weaponstage * 20,this, weapons[WEAPON_SNIPER].weaponstage, 0, 0, -1, WEAPON_SNIPER);
create_sound(pos, SOUND_SNIPER_FIRE);
}
// Add blowback
core.vel = -direction * 10.0f * weapons[WEAPON_SNIPER].weaponstage;
// update ammo and stuff
weapons[WEAPON_SNIPER].ammo = max(0,weapons[WEAPON_SNIPER].ammo - weapons[WEAPON_SNIPER].weaponstage);
weapons[WEAPON_SNIPER].weaponstage = WEAPONSTAGE_SNIPER_NEUTRAL;
weapons[WEAPON_SNIPER].chargetick = 0;
}
else if (input.fire & 1)
{
// Charge!! (if we are on the ground)
if (is_grounded() && weapons[WEAPON_SNIPER].ammo > 0)
{
if (!weapons[WEAPON_SNIPER].chargetick)
{
weapons[WEAPON_SNIPER].chargetick = server_tick();
dbg_msg("game", "Chargetick='%d:'", server_tick());
}
if ((server_tick() - weapons[WEAPON_SNIPER].chargetick) > server_tickspeed() * data->weapons[active_weapon].chargetime)
{
if (weapons[WEAPON_SNIPER].ammo > weapons[WEAPON_SNIPER].weaponstage)
{
weapons[WEAPON_SNIPER].weaponstage++;
weapons[WEAPON_SNIPER].chargetick = server_tick();
}
else if ((server_tick() - weapons[WEAPON_SNIPER].chargetick) > server_tickspeed() * data->weapons[active_weapon].overchargetime)
{
// Ooopsie, weapon exploded
create_explosion(pos, client_id, WEAPON_SNIPER, false);
create_sound(pos, SOUND_ROCKET_EXPLODE);
// remove this weapon and change weapon to gun
weapons[WEAPON_SNIPER].got = false;
weapons[WEAPON_SNIPER].ammo = 0;
last_weapon = active_weapon;
active_weapon = WEAPON_GUN;
return 0;
}
}
// While charging, don't move
return 0;
}
else if (weapons[WEAPON_SNIPER].weaponstage)
weapons[WEAPON_SNIPER].weaponstage = WEAPONSTAGE_SNIPER_NEUTRAL;
}*/
return 0;
}
int player::handle_weapons() int player::handle_weapons()
{ {
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y)); vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
@ -1000,12 +894,6 @@ int player::handle_weapons()
} }
} }
// don't update other weapons while sniper is active
/*
if (active_weapon == WEAPON_SNIPER)
return handle_sniper();
*/
if(reload_timer == 0) if(reload_timer == 0)
{ {
bool fullauto = false; bool fullauto = false;
@ -1257,7 +1145,7 @@ void player::tick()
// handle weapons // handle weapons
handle_weapons(); handle_weapons();
state = input.state; player_state = input.player_state;
// Previnput // Previnput
previnput = input; previnput = input;
@ -1468,7 +1356,6 @@ void player::snap(int snaping_client)
character->health = 0; character->health = 0;
character->armor = 0; character->armor = 0;
character->weapon = active_weapon; character->weapon = active_weapon;
character->weaponstage = weapons[active_weapon].weaponstage;
character->attacktick = attack_tick; character->attacktick = attack_tick;
if(client_id == snaping_client) if(client_id == snaping_client)
@ -1492,7 +1379,7 @@ void player::snap(int snaping_client)
character->emote = EMOTE_BLINK; character->emote = EMOTE_BLINK;
} }
character->state = state; character->player_state = player_state;
} }
} }
@ -1589,7 +1476,7 @@ void powerup::tick()
case POWERUP_NINJA: case POWERUP_NINJA:
{ {
// activate ninja on target player // activate ninja on target player
pplayer->ninja_activationtick = server_tick(); pplayer->ninja.activationtick = server_tick();
pplayer->weapons[WEAPON_NINJA].got = true; pplayer->weapons[WEAPON_NINJA].got = true;
pplayer->last_weapon = pplayer->active_weapon; pplayer->last_weapon = pplayer->active_weapon;
pplayer->active_weapon = WEAPON_NINJA; pplayer->active_weapon = WEAPON_NINJA;