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); }