Esempio n. 1
0
 public void Damage(float amountOfDamage)
 {
     CurrentHullPoints -= amountOfDamage;
     if (CurrentHullPoints >= 0)
     {
         Parant.Destroy("due to massive hull damage");
     }
 }
Esempio n. 2
0
        private void OkClick(object sender, RoutedEventArgs e)
        {
            FillInStudent();

            if (Mode == Modes.CREATE)
            {
                Parant.SelectedGroup.Push(Student);

                ClearForm();
            }

            Parant.RefreshStudentsList();
        }
        public override void Update(GameTime gameTime)
        {
            if (Online)
            {
                var   storage     = Parant.FindAllSubsystems <IStorage>();
                float consumption = CurrentFuelConsumption * (float)gameTime.ElapsedGameTime.TotalSeconds;
                for (int i = 0; consumption > 0; i++)
                {
                    if (storage.Count <= i)
                    {
                        Online       = false;
                        CurrentSpeed = 0;
                    }
                    consumption -= storage[i].GetItem(Item.GetFuel(consumption)).Amount;
                }
            }

            base.Update(gameTime);
        }
Esempio n. 4
0
        public void Damage(float amountOfDamage)
        {
            if (amountOfDamage > 0)
            {
                //TODO: Set DamageTimer
                //DamageTimeout = GameControl;
            }

            float newShields = CurrentShieldPower - amountOfDamage;

            if (newShields >= 0)
            {
                CurrentShieldPower = newShields;
                return;
            }
            else
            {
                float relayedDamage = -newShields - CurrentShieldPower;
                CurrentShieldPower = 0;
                Parant.FindSubsystem <IDamage>(Priority - 1).Damage(relayedDamage);
            }
        }
        protected void GetEngineSpeed()//XXX: possible performance issue, easy to adjust
        {
            var engines = Parant.FindAllSubsystems <IEngine>();

            engines.RemoveAll(p => !(p as Subsystem).Online);
            AssignedEngines = engines;

            float weightedTurnSpeeds = 0;

            MaxSpeed           = 0;
            MinSpeed           = 0;
            EngineAcceleration = 0;

            foreach (var elem in engines)
            {
                weightedTurnSpeeds += elem.MaxTurnSpeed * elem.MaxSpeed;
                MaxSpeed           += elem.MaxSpeed;
                MinSpeed           += elem.MinSpeed;
                EngineAcceleration += elem.EngineAcceleration;
            }

            MaxTurnSpeed = weightedTurnSpeeds / MaxSpeed;
        }