コード例 #1
0
ファイル: Level.cs プロジェクト: krisz2000/hevadea
        public RenderState Prepare(bool drawHint)
        {
            Coordinates focusedTile = _gameState.Camera.FocusedTile;

            Point dist = new Point((_gameState.Camera.GetWidth() / 2 / Game.Unit) + 1,
                                   _gameState.Camera.GetHeight() / 2 / Game.Unit);

            Point renderBegin = new Point(Math.Max(0, focusedTile.X - dist.X),
                                          Math.Max(0, focusedTile.Y - dist.Y - 1));

            Point renderEnd = new Point(Math.Min(Width, focusedTile.X + dist.X + 1),
                                        Math.Min(Height, focusedTile.Y + dist.Y + 6));

            EntityColection onScreenEntities = new EntityColection();
            EntityColection aliveEntities    = new EntityColection();

            for (int x = renderBegin.X; x < renderEnd.X; x++)
            {
                for (int y = renderBegin.Y; y < renderEnd.Y; y++)
                {
                    onScreenEntities.AddRange(GetEntitiesAt(x, y));
                }
            }

            if (drawHint)
            {
                onScreenEntities.SortForRender();
            }

            // TODO: For now the alives entities is equal to on screen entities,
            // BUT: in the futur this will depend on the field of view of all the player connected on the server.
            aliveEntities.AddRange(onScreenEntities);

            return(new RenderState(renderBegin, renderEnd, onScreenEntities, aliveEntities));
        }
コード例 #2
0
ファイル: LevelRenderState.cs プロジェクト: krisz2000/hevadea
        public RenderState(Point renderBegin, Point renderEnd, EntityColection onScreenEntities, EntityColection aliveEntities)
        {
            RenderBegin = renderBegin;
            RenderEnd   = renderEnd;

            OnScreenEntities = onScreenEntities;
            AliveEntities    = aliveEntities;
        }