public override void Update(GameTime gt) { //remove dead spawners for (int i = 0; i < spawners.Count; i++) { if (spawners[i].Dead && !spawners[i].Animate && !spawners[i].FocusedWeapon.Hot) { spawners.RemoveAt(i); i--; } } //reset collisions foreach (HenrySpawner s in spawners) s.CollidedThisFrame = false; //update foreach (HenrySpawner s in spawners) s.Update(gt); //update charge time if (ChargeStatus == ChargeStatusEnum.Charging) chargingTime += (float)gt.ElapsedGameTime.TotalSeconds; if (ChargeStatus == ChargeStatusEnum.Charging && (!chargingThisFrame || chargingTime >= chargingTimeMax)) { //charging is complete SpawnBullets(); timeSinceLastFired = 0; chargingTime = 0; ChargeStatus = ChargeStatusEnum.PreCharge; } //reset charge status chargingThisFrame = false; base.Update(gt); }
public override void Fire() { chargingThisFrame = true; if (!Ship.Dead && timeSinceLastFired >= 1 / (rateOfFire * Ship.FireRateMultiplier) ) { //I've finished reloading if (ChargeStatus == ChargeStatusEnum.PreCharge) ChargeStatus = ChargeStatusEnum.Charging; //begin charging else if (ChargeStatus == ChargeStatusEnum.Charging) { //hmm ... continue charging }/* else if (ChargeStatus == ChargeStatusEnum.PostCharge) { //done charging... fire! SpawnBullets(); timeSinceLastFired = 0; chargingTime = 0; ChargeStatus = ChargeStatusEnum.PreCharge; }*/ } }