using CommonAI.Zone; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommonAI.ZoneClient { public class ZoneItem : ZoneObject { public readonly ItemTemplate Info; public readonly SyncItemInfo SyncInfo; public int Force { get; private set; } public string Alias { get; private set; } public int ExpireTimeMS { get; private set; } public int TotalTimeMS { get; private set; } public int PassTimeMS { get { return TotalTimeMS - ExpireTimeMS; } } public override string Name { get { return null; } } public override string DisplayName { get { return Info.Name; } } public override float RadiusSize { get { return Info.BodySize; } } public ZoneItem(ItemTemplate info, SyncItemInfo syn, ZoneLayer parent, AddItemEvent add) : base(syn.ObjectID, parent) { this.SyncInfo = syn; this.mPos.SetX(syn.x); this.mPos.SetY(syn.y); this.Direction = syn.direction; this.Info = info; this.Force = syn.Force; this.Alias = syn.Alias; this.ExpireTimeMS = syn.ItemExpireTimeMS; this.TotalTimeMS = syn.ItemTotalTimeMS; } protected internal override void OnAdded() { base.OnAdded(); if (Info.DropEffect != null) { Parent.PreQueueEvent(new AddEffectEvent(0, X, Y, Direction, Info.DropEffect)); } } internal protected override void DoEvent(ObjectEvent e) { if (e is ObjectForceSyncPosEvent) { var oe = e as ObjectForceSyncPosEvent; this.ForceSyncPos(oe.X, oe.Y); this.Direction = oe.Direction; } } internal protected override void Update() { if (ExpireTimeMS > 0) { ExpireTimeMS -= Parent.CurrentIntervalMS; if (ExpireTimeMS < 0) { ExpireTimeMS = 0; } } } } }