示例#1
0
        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);
        }
示例#2
0
        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);
        }