[Balder-cvs] balder2d/src probe.cpp,1.35,1.36
Status: Beta
Brought to you by:
holomorph
From: Reuben <col...@us...> - 2006-06-22 18:07:59
|
Update of /cvsroot/balder/balder2d/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv608/src Modified Files: probe.cpp Log Message: 22-June-2006 - Reuben added code to the Probe::fire() method to allow for an option to be set in the config file that will either shoot projectiles with a fixed speed or with a speed based off of the probes current speed and direction of movement. New option in config file is named: "Calculate_Projectile_Velocity_With_Probe_Velocity". Index: probe.cpp =================================================================== RCS file: /cvsroot/balder/balder2d/src/probe.cpp,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** probe.cpp 19 May 2006 21:56:48 -0000 1.35 --- probe.cpp 22 Jun 2006 18:07:56 -0000 1.36 *************** *** 36,45 **** const double Probe::POWERUPTIME = ConfigManager::GetDoubleValue("Probe", "poweruptime"); const double Probe::TURNINGSPEED = M_PI*ConfigManager::GetDoubleValue("Probe", "turningspeed"); ! Probe::Probe(GameManager* gm, double x_pos, double y_pos, double x_vel, double y_vel, bool stuck, probe_color c, player_id p) ! :Entity(gm, x_pos, y_pos, x_vel, y_vel, PROBEWIDTH, PROBEHEIGHT), ! charge_remaining(MAXCHARGE), life_remaining(MAXHITS), shield_power(0), ! facing_angle(0),stick(false), stuck(stuck), pushOffState(0), pushOffSpeed(0), rotation_state(NO_ROT), x_vel_add(0), y_vel_add(0), death_frame(0), hit_frame(0), ammo_angle(0), color(c), owner(p), powerups(2), deaths(0), removeFromGame(false) --- 36,46 ---- const double Probe::POWERUPTIME = ConfigManager::GetDoubleValue("Probe", "poweruptime"); const double Probe::TURNINGSPEED = M_PI*ConfigManager::GetDoubleValue("Probe", "turningspeed"); + const bool Probe::Calculate_Projectile_Velocity_With_Probe_Velocity = ConfigManager::GetIntValue("Projectile", "Calculate_Projectile_Velocity_With_Probe_Velocity"); ! Probe::Probe(GameManager* gm, double x_pos, double y_pos, double x_vel, double y_vel, bool stuck, probe_color c, player_id p) ! :Entity(gm, x_pos, y_pos, x_vel, y_vel, PROBEWIDTH, PROBEHEIGHT), ! charge_remaining(MAXCHARGE), life_remaining(MAXHITS), shield_power(0), ! facing_angle(0),stick(false), stuck(stuck), pushOffState(0), pushOffSpeed(0), rotation_state(NO_ROT), x_vel_add(0), y_vel_add(0), death_frame(0), hit_frame(0), ammo_angle(0), color(c), owner(p), powerups(2), deaths(0), removeFromGame(false) *************** *** 239,246 **** } // add power to push off with if pushing off ! if ( (PUSH_POWERING == pushOffState) && (pushOffSpeed < MAXSPEED) ) { pushOffSpeed += MAXSPEED/POWERUPTIME; } ! } --- 240,247 ---- } // add power to push off with if pushing off ! if ( (PUSH_POWERING == pushOffState) && (pushOffSpeed < MAXSPEED) ) { pushOffSpeed += MAXSPEED/POWERUPTIME; } ! } *************** *** 276,280 **** double norm = sqrt(x*x+y*y); x = x/norm; ! y = y/norm; // now project our velocity along that direction double projection = x*x_velocity + y*y_velocity; --- 277,281 ---- double norm = sqrt(x*x+y*y); x = x/norm; ! y = y/norm; // now project our velocity along that direction double projection = x*x_velocity + y*y_velocity; *************** *** 310,323 **** return false; } ! // We're hit! // if we have shields, just absorb it if (shield_power >=1) { shield_power = 0; return true; ! } // so take damage and return true --life_remaining; if (0 == life_remaining) { ! // time to die! Destroy(); // if this wasn't fired by us, give credit to whoever shot us --- 311,324 ---- return false; } ! // We're hit! // if we have shields, just absorb it if (shield_power >=1) { shield_power = 0; return true; ! } // so take damage and return true --life_remaining; if (0 == life_remaining) { ! // time to die! Destroy(); // if this wasn't fired by us, give credit to whoever shot us *************** *** 327,331 **** // lose a point for dying game_manager->ScoreAdd(owner, -1); ! } else if (life_remaining > 0){ hit_frame = 1; --- 328,332 ---- // lose a point for dying game_manager->ScoreAdd(owner, -1); ! } else if (life_remaining > 0){ hit_frame = 1; *************** *** 391,395 **** pushOffSpeed = 0; pushOffState = 0; ! } if (!stuck){ --- 392,396 ---- pushOffSpeed = 0; pushOffState = 0; ! } if (!stuck){ *************** *** 477,481 **** float x_pos = x_position + x_direction*2*PROBEWIDTH/3; float y_pos = y_position + y_direction*2*PROBEHEIGHT/3; ! game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); if (powerups & EFFECT_SPREADFIRE) { // fire 2 bonus shots x_direction = cos(facing_angle + M_PI/48); --- 478,483 ---- float x_pos = x_position + x_direction*2*PROBEWIDTH/3; float y_pos = y_position + y_direction*2*PROBEHEIGHT/3; ! if (!Calculate_Projectile_Velocity_With_Probe_Velocity) game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); ! else game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4+x_velocity, y_direction*4+y_velocity); if (powerups & EFFECT_SPREADFIRE) { // fire 2 bonus shots x_direction = cos(facing_angle + M_PI/48); *************** *** 483,492 **** x_pos = x_position + cos(facing_angle + M_PI/12)*2*PROBEWIDTH/3; y_pos = y_position + sin(facing_angle + M_PI/12)*2*PROBEHEIGHT/3; ! game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); x_direction = cos(facing_angle - M_PI/48); y_direction = sin(facing_angle - M_PI/48); x_pos = x_position + cos(facing_angle - M_PI/12)*2*PROBEWIDTH/3; y_pos = y_position + sin(facing_angle - M_PI/12)*2*PROBEHEIGHT/3; ! game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); } // now the reaction from firing if not stuck to a wall --- 485,496 ---- x_pos = x_position + cos(facing_angle + M_PI/12)*2*PROBEWIDTH/3; y_pos = y_position + sin(facing_angle + M_PI/12)*2*PROBEHEIGHT/3; ! if (!Calculate_Projectile_Velocity_With_Probe_Velocity) game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); ! else game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4+x_velocity, y_direction*4+y_velocity); x_direction = cos(facing_angle - M_PI/48); y_direction = sin(facing_angle - M_PI/48); x_pos = x_position + cos(facing_angle - M_PI/12)*2*PROBEWIDTH/3; y_pos = y_position + sin(facing_angle - M_PI/12)*2*PROBEHEIGHT/3; ! if (!Calculate_Projectile_Velocity_With_Probe_Velocity) game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4, y_direction*4); ! else game_manager->CreateProjectile(owner, x_pos, y_pos , x_direction*4+x_velocity, y_direction*4+y_velocity); } // now the reaction from firing if not stuck to a wall |