/// <summary> /// Add new event /// </summary> /// <param name="func">code to execute</param> /// <param name="name">name, used to remove event on demand</param> /// <param name="delay">how long to wait before start,0 to start immediately</param> /// <param name="life">how long before remove, 0 to never remove</param> /// <param name="tick">periodic triggering, 0 to trigger every frame</param> public Event AddEvent(IntFunction func, string name, bool front, TimeSpan delay, TimeSpan life, TimeSpan tick, EventType type = EventType.PostEvent) { if (Debug.DebugMode && name == "debugevents") { foreach (Event ev in zEvents) Debug.Write(ev.zName); } Event e = new Event(func, name, delay, life, tick); e.zType = type; if (front) zNewFrontEvents.Add(e); else zEvents.Add(e); return e; }
protected bool Collect; //used to signal running events that this window has been destroyed public Window(Window owner = null, bool modal = false, string sprite = "") { if (owner != null && modal) throw new ArgumentException("Child cannot be modal"); Collect = false; Immovable = false; zEventEscape = null; zModal = modal; Name = string.Empty; zOrigin = new Vector2(0, 0); if (sprite == "") zSprite = SpriteManager.AddSprite(Path.Make(Path.Misc, "pixel.bmp")); else zSprite = SpriteManager.AddSprite(sprite); zSprite.ColorOperation = ColorOperation.ColorTextureAlpha; Color = Color.White; zVisible = true; OnClick = delegate () { }; Hover = delegate () { }; HoverMousedown = delegate () { }; MouseLeave = delegate () { }; MouseEnter = delegate () { }; zParent = owner; zChildren = new List<Window>(); zText = TextManager.AddText(string.Empty, Globals.Font); zText.ColorOperation = ColorOperation.ColorTextureAlpha; zText.AttachTo(zSprite, false); Size = new Vector2(1, 1); if (owner == null) InitializeAsTopLevel(); else InitializeAsChild(); SpriteManager.AddToLayer(zSprite, zLayer); TextManager.AddToLayer(zText, zLayer); zSprite.AttachTo(Camera.Main, true); }
/// <summary> /// Add new event /// </summary> /// <param name="func">code to execute</param> /// <param name="name">name, used to remove event on demand</param> /// <param name="delay">how long to wait before start,0 to start immediately</param> /// <param name="life">how long before remove, 0 to never remove</param> /// <param name="tick">periodic triggering, 0 to trigger every frame</param> public Event AddEvent(IntFunction func, string name, bool front = false, float delay=0, float life=0, float tick=0, EventType type = EventType.PostEvent) { if (Debug.DebugMode && name == "debugevents") { foreach (Event ev in zEvents) Debug.Write(ev.zName); } Event e = new Event(func, name, TimeSpan.FromSeconds(delay), TimeSpan.FromSeconds(life), TimeSpan.FromSeconds(tick)); e.zType = type; if (front) zNewFrontEvents.Add(e); else zEvents.Add(e); return e; }
/// <summary> /// Remove event /// </summary> /// <param name="name"></param> public void RemoveEvent(Event e) { if(e != null) e.zCollect = true; }
public bool HasEvent(Event e) => zEvents.Contains(e);