Пример #1
0
        public void Update()
        {
            foreach (var kvp in _ships)
            {
                IShip s = kvp.Value;

                float oldHealth = s.CurrentHealth;
                s.Update();


                if (oldHealth != s.CurrentHealth && TimeKeeper.MsSinceInitialization - s.LastHealthUpdateTime >= s.HealthUpdatePeriod)
                {
                    var data = new MessageSetHealth();
                    data.HealthData.Add(new HealthData()
                    {
                        Health = (int)s.CurrentHealth, Shields = (int)s.Shields.CurrentShields, Energy = (int)s.CurrentEnergy
                    });

                    s.GetPlayer().SendMessage(new NetworkMessageContainer(data, MessageTypes.SetHealth));

                    s.LastHealthUpdateTime = TimeKeeper.MsSinceInitialization;
                }

                if (s.IsDead)
                {
                    if (TimeKeeper.MsSinceInitialization - s.KillTimeStamp > s.RespawnTimeDelay)
                    {
                        ReviveShip(s.Id, _areaLocator.GetArea(s.ReviveAreaID == null?_areaLocator.SolAreaID:s.ReviveAreaID), .2f, 0);
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Set debuffsToAdd to null if there are none to add
        /// </summary>
        /// <param name="s"></param>
        /// <param name="debuffsToAdd">Debuffs added since the last damage was sent</param>
        public void SendShipDamage(IShip s, Dictionary <DebuffTypes, int> debuffsToAdd = null)
        {
            MessageSetHealth data = new MessageSetHealth();
            HealthData       hd   = new HealthData()
            {
                ShipID = s.Id, Health = (int)s.CurrentHealth, Shields = (int)s.Shields.CurrentShields, Energy = (int)s.CurrentEnergy
            };

            if (debuffsToAdd != null)
            {
                foreach (var kvp in debuffsToAdd)
                {
                    hd.DebuffTypesToAdd.Add(kvp.Key);
                    hd.DebuffCountsToAdd.Add(kvp.Value);
                }
            }
            data.HealthData.Add(hd);

            s.GetPlayer().SendMessage(new NetworkMessageContainer(data, MessageTypes.SetHealth));
        }