private List <IObject> getDisplayList(IViewport viewport) { var settings = viewport.DisplayListSettings; var room = viewport.RoomProvider.Room; int count = 1 + (room == null ? 0 : room.Objects.Count) + _gameState.UI.Count; var displayList = new List <IObject>(count); if (settings.DisplayRoom && room != null) { if (room.Background != null) { addToDisplayList(displayList, room.Background, viewport); } foreach (IObject obj in room.Objects) { if (!room.ShowPlayer && obj == _gameState.Player) { continue; } addToDisplayList(displayList, obj, viewport); } foreach (var area in room.Areas) { addDebugDrawArea(displayList, area, viewport); } foreach (var area in room.Areas) { if (!area.Enabled || room.Background == null || room.Background.Image == null) { continue; } IObject drawable = _walkBehinds.GetDrawable(area, room.Background.Image.OriginalBitmap); if (drawable == null) { continue; } addToDisplayList(displayList, drawable, viewport); } } if (settings.DisplayGUIs) { foreach (IObject ui in _gameState.UI) { addToDisplayList(displayList, ui, viewport); } } displayList.Sort(_comparer); return(displayList); }
private List <IObject> getDisplayList(IRoom room) { int count = 1 + room.Objects.Count + _gameState.UI.Count; List <IObject> displayList = new List <IObject> (count); if (room.Background != null) { addToDisplayList(displayList, room.Background); } foreach (IObject obj in room.Objects) { if (!room.ShowPlayer && obj == _gameState.Player) { continue; } addToDisplayList(displayList, obj, room); } foreach (var area in room.Areas) { addDebugDrawArea(displayList, area, room); } foreach (var area in room.Areas) { if (!area.Enabled || room.Background == null || room.Background.Image == null) { continue; } IObject drawable = _walkBehinds.GetDrawable(area, room.Background.Image.OriginalBitmap); if (drawable == null) { continue; } addToDisplayList(displayList, drawable, room); } foreach (IObject ui in _gameState.UI) { addToDisplayList(displayList, ui, room); } displayList.Sort(_comparer); addCursor(displayList, room); return(displayList); }