Beispiel #1
0
        public override void DrawPanel()
        {
            TCODConsole.root.setForegroundColor(TCODColor.white);
            //Draw the map
            for (int i = 0; i < _map.Height; i++)
            {
                for (int k = 0; k < _map.Width; k++)
                {
                    IntVector2 tile = new IntVector2(k, i);
                    if (_scene.GetStudent().HasAttribute("XRAY") ||
                        _scene.IsTileVisibleFromLocation(_scene.GetStudent().Position, tile, _scene.GetStudent().SightRange))
                    {
                        RenderTile(tile, false);
                        _map.SetTileExplored(tile, true);
                    }
                    else if (_map.IsTileExplored(tile))
                    {
                        RenderTile(tile, true);
                    }
                }
            }

            //Draw items
            List <ItemToken> items = _gameObjectPool.GetAllAliveItemTokens();

            foreach (ItemToken i in items)
            {
                Item item = _gameObjectPool.GetItem(i.ItemID);
                if (_scene.GetStudent().HasAttribute("XRAY") ||
                    _scene.IsTileVisibleFromLocation(_scene.GetStudent().Position, i.Position, _scene.GetStudent().SightRange))
                {
                    TCODConsole.root.setForegroundColor(new TCODColor(item.SpriteColor.R, item.SpriteColor.G, item.SpriteColor.B)); //TODO: Get color properly
                    DrawCharacterInPanel(i.Position, item.Sprite);
                }
                else if (i.PositionKnown)
                {
                    TCODConsole.root.setForegroundColor(TCODColor.darkGrey);
                    DrawCharacterInPanel(i.Position, item.Sprite);
                }
            }


            //Draw actors
            List <Actor> actors = _gameObjectPool.GetAllAliveActors();

            foreach (Actor a in actors)
            {
                if (_scene.GetStudent().HasAttribute("XRAY") ||
                    _scene.IsTileVisibleFromLocation(_scene.GetStudent().Position, a.Position, _scene.GetStudent().SightRange))
                {
                    Color spriteColor = a.GetSpriteColor();
                    TCODConsole.root.setForegroundColor(new TCODColor(spriteColor.R, spriteColor.G, spriteColor.B)); //TODO: Get color properly
                    DrawCharacterInPanel(a.Position, a.Sprite);
                }
            }

            //Draw special effects
            List <SpecialEffect> effects = _gameObjectPool.GetAllAliveSpecialEffects();

            foreach (SpecialEffect fx in effects)
            {
                List <Tuple <IntVector2, char, Color> > fxSprites = fx.Draw();
                foreach (Tuple <IntVector2, char, Color> sprite in fxSprites)
                {
                    TCODConsole.root.setForegroundColor(new TCODColor(sprite.Item3.R, sprite.Item3.G, sprite.Item3.B));
                    DrawCharacterInPanel(sprite.Item1, sprite.Item2);
                }
            }

            //Draw command interface (targeting, etc)
            _command.Draw(_windowPosition);
        }