Move Last_afterburner_time into laser_info

This commit is contained in:
Kp 2013-08-24 22:09:58 +00:00
parent 051e346186
commit e23035e61f
5 changed files with 16 additions and 6 deletions

View file

@ -214,6 +214,9 @@ typedef struct laser_info {
short track_goal; // Object this object is tracking.
fix multiplier; // Power if this is a fusion bolt (or other super weapon to be added).
fix track_turn_time;
#if defined(DXX_BUILD_DESCENT_II)
fix64 last_afterburner_time; // Time at which this object last created afterburner blobs.
#endif
} __pack__ laser_info;
// Same as above but structure Savegames/Multiplayer objects expect

View file

@ -423,6 +423,7 @@ void read_object(object *obj,PHYSFS_file *f,int version)
obj->ctype.laser_info.parent_type = PHYSFSX_readShort(f);
obj->ctype.laser_info.parent_num = PHYSFSX_readShort(f);
obj->ctype.laser_info.parent_signature = PHYSFSX_readInt(f);
obj->ctype.laser_info.last_afterburner_time = 0;
break;

View file

@ -5699,6 +5699,9 @@ void multi_object_rw_to_object(object_rw *obj_rw, object *obj)
obj->ctype.laser_info.track_goal = obj_rw->ctype.laser_info.track_goal;
obj->ctype.laser_info.multiplier = obj_rw->ctype.laser_info.multiplier;
obj->ctype.laser_info.track_turn_time = HOMING_TURN_TIME;
#if defined(DXX_BUILD_DESCENT_II)
obj->ctype.laser_info.last_afterburner_time = 0;
#endif
break;
case CT_EXPLOSION:

View file

@ -1206,6 +1206,9 @@ int obj_create(enum object_type_t type, ubyte id,int segnum,const vms_vector *po
obj->ctype.laser_info.last_hitobj = -1;
memset(&obj->ctype.laser_info.hitobj_list, 0, sizeof(ubyte)*MAX_OBJECTS);
obj->ctype.laser_info.multiplier = F1_0;
#if defined(DXX_BUILD_DESCENT_II)
obj->ctype.laser_info.last_afterburner_time = 0;
#endif
}
#if defined(DXX_BUILD_DESCENT_II)
@ -1688,9 +1691,6 @@ extern void fuelcen_check_for_goal (segment *);
//see if wall is volatile, and if so, cause damage to player
//returns true if player is in lava
int check_volatile_wall(object *obj,int segnum,int sidenum,vms_vector *hitpt);
// Time at which this object last created afterburner blobs.
fix64 Last_afterburner_time[MAX_OBJECTS];
#endif
//--------------------------------------------------------------------
@ -1891,7 +1891,6 @@ void object_move_one( object * obj )
}
if ((obj->type == OBJ_WEAPON) && (Weapon_info[obj->id].afterburner_size)) {
int objnum = obj-Objects;
fix vel = vm_vec_mag_quick(&obj->mtype.phys_info.velocity);
fix delay, lifetime;
@ -1908,9 +1907,10 @@ void object_move_one( object * obj )
lifetime *= 2;
}
if ((Last_afterburner_time[objnum] + delay < GameTime64) || (Last_afterburner_time[objnum] > GameTime64)) {
assert(obj->control_type == CT_WEAPON);
if ((obj->ctype.laser_info.last_afterburner_time + delay < GameTime64) || (obj->ctype.laser_info.last_afterburner_time > GameTime64)) {
drop_afterburner_blobs(obj, 1, i2f(Weapon_info[obj->id].afterburner_size)/16, lifetime);
Last_afterburner_time[objnum] = GameTime64;
obj->ctype.laser_info.last_afterburner_time = GameTime64;
}
}
#endif

View file

@ -360,6 +360,9 @@ void state_object_rw_to_object(object_rw *obj_rw, object *obj)
obj->ctype.laser_info.track_goal = obj_rw->ctype.laser_info.track_goal;
obj->ctype.laser_info.multiplier = obj_rw->ctype.laser_info.multiplier;
obj->ctype.laser_info.track_turn_time = HOMING_TURN_TIME;
#if defined(DXX_BUILD_DESCENT_II)
obj->ctype.laser_info.last_afterburner_time = 0;
#endif
break;
case CT_EXPLOSION: