[Fix] Added PLAYER_CREATING flag to fix all creation/death issues propperly.

This commit is contained in:
Allanis 2013-06-01 18:39:37 +01:00
parent 3ff2885fd2
commit 848a5e120d
3 changed files with 16 additions and 10 deletions

View File

@ -154,7 +154,7 @@ void player_new(void) {
int r;
// Let's not seg fault due to a lack of environment.
player_flags = 0;
player_setFlag(PLAYER_DESTROYED);
player_setFlag(PLAYER_CREATING);
vectnull(&player_cam);
gl_bindCamera(&player_cam);
@ -296,7 +296,7 @@ static void player_newShipMake(char* name) {
}
// In case we're respawning.
player_rmFlag(PLAYER_DESTROYED);
player_rmFlag(PLAYER_CREATING);
vect_cset(&vp, player_px, player_py);
vect_cset(&vv, player_vx, player_vy);
@ -456,8 +456,8 @@ void player_renderBG(void) {
glColour* c;
Planet* planet;
if(player_isFlag(PLAYER_DESTROYED) ||
pilot_isFlag(player, PILOT_DEAD)) return;
if(player_isFlag(PLAYER_DESTROYED) || player_isFlag(PLAYER_CREATING) ||
pilot_isFlag(player, PLAYER_DESTROYED)) return;
if(planet_target >= 0) {
planet = &cur_system->planets[planet_target];
@ -489,13 +489,17 @@ void player_render(void) {
glColour* c;
glFont* f;
// Pilot is dead, just render her and stop.
if(player_isFlag(PLAYER_DESTROYED) || pilot_isFlag(player, PILOT_DEAD)) {
// Pilot is dead or being created, just render her and stop.
if(player_isFlag(PLAYER_DESTROYED) || player_isFlag(PLAYER_CREATING) ||
pilot_isFlag(player, PILOT_DEAD)) {
if(player_isFlag(PLAYER_DESTROYED)) {
if(!toolkit && (player != NULL) && (SDL_GetTicks() > player_timer)) {
if(!toolkit && !player_isFlag(PLAYER_CREATING) &&
(SDL_GetTicks() > player_timer)) {
menu_death();
}
} else
}
else if(!player_isFlag(PLAYER_CREATING))
pilot_render(player);
// Fancy cinematic scene borders.

View File

@ -11,6 +11,7 @@
#define PLAYER_PRIMARY (1<<11) // Player is shooting primary weapon.
#define PLAYER_SECONDARY (1<<12) // Player is shooting secondary weapon.
#define PLAYER_LANDACK (1<<13) // Player has permission to land.
#define PLAYER_CREATING (1<<14) // Player is being created.
// Flag functions.
#define player_isFlag(f) (player_flags & f)

View File

@ -972,7 +972,7 @@ void space_render(double dt) {
glTranslated(-(double)gl_screen.w/2., -(double)gl_screen.h/2., 0);
t = SDL_GetTicks();
if(!player_isFlag(PLAYER_DESTROYED) &&
if(!player_isFlag(PLAYER_DESTROYED) && !player_isFlag(PLAYER_CREATING) &&
pilot_isFlag(player, PILOT_HYPERSPACE) && // Hyperspace fancy effect.
!paused && (player->ptimer-HYPERSPACE_STARS_BLUR < t)) {
@ -1000,7 +1000,8 @@ void space_render(double dt) {
} else {
glBegin(GL_POINTS); // Normal rendering.
if(!paused && !player_isFlag(PLAYER_DESTROYED)) { // Update position.
if(!paused && !player_isFlag(PLAYER_DESTROYED) &&
!player_isFlag(PLAYER_CREATING)) { // Update position.
for(i = 0; i < nstars; i++) {
b = 13.-10.*stars[i].brightness;
stars[i].x -= player->solid->vel.x/b*dt;