private void UpdateDamageOverhead(double totalMS, double frameMS) { foreach (KeyValuePair <GameObject, Deque <DamageOverhead> > pair in _damageOverheads) { Mobile parent = (Mobile)pair.Key; var deque = pair.Value; int offY = parent.IsMounted ? 0 : -22; for (int i = 0; i < deque.Count; i++) { DamageOverhead obj = deque[i]; obj.Update(totalMS, frameMS); if (obj.IsDisposed) { deque.RemoveAt(i--); } else { obj.Bounds.X = (obj.Texture.Width >> 1) - 22; obj.Bounds.Y = offY + obj.Texture.Height - obj.OffsetY; obj.Bounds.Width = obj.Texture.Width; obj.Bounds.Height = obj.Texture.Height; offY += obj.Texture.Height; } } if (deque.Count == 0) { _toRemoveDamages.Add(parent); } } }
public override bool Draw(SpriteBatch3D spriteBatch, Vector3 position, MouseOverList objectList) { DamageOverhead dmg = (DamageOverhead)GameObject; if (dmg.MovingTime >= 50) { dmg.MovingTime = 0; dmg.OffsetY -= 2; } return(base.Draw(spriteBatch, position, objectList)); }
internal void AddDamage(GameObject obj, DamageOverhead text) { if (!_damageOverheads.TryGetValue(obj, out Deque <DamageOverhead> deque) || deque == null) { deque = new Deque <DamageOverhead>(); _damageOverheads[obj] = deque; } deque.AddToFront(text); if (deque.Count > 10) { deque.RemoveFromBack(); } }
public DamageOverheadView(DamageOverhead parent, int maxwidth = 0, ushort hue = 0xFFFF, byte font = 0, bool isunicode = false, FontStyle style = FontStyle.None) : base(parent, maxwidth, hue, font, isunicode, style) { }