/// <summary> /// returns the special event at the specified location /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public IEventExtender GetEvent(int x, int y, int border) { for (int i = 0; i < mEvents.Count; i++) { IEventExtender e = mEvents[i]; if (x >= e.Rectangle.X - border && y >= e.Rectangle.Y - border && x < e.Rectangle.Right + border && y < e.Rectangle.Bottom + border) { return(e); } } return(null); }
protected virtual async Task <bool> CanPlayerStep(int dx, int dy) { IEventExtender evt = GetEvent(Player.X + dx, Player.Y + dy, 0); if (evt != null) { bool allowStep = await evt.TryToStepOn(dx, dy); if (allowStep == false) { return(false); } } return(CanPlayerStepIntoImpl(Player.X + dx, Player.Y + dy)); }