public GraphicsData(Pos pos, LocationGraphicsData location, StructureGraphicsData structure = null, ResourceGraphicsData resource = null)
 {
     _pos       = pos;
     _location  = location;
     _structure = structure;
     _resource  = resource;
 }
    public virtual GraphicsData Draw()
    {
        LocationGraphicsData  lgd = _viewer.Draw(this, _stats);
        StructureGraphicsData sgd = null;
        ResourceGraphicsData  rgd = null;

        Player currentPlayer = _game._playerSystem._currentPlayer;

        if (currentPlayer != null)
        {
            bool visibleToPlayer       = _stats._vision._visibility[currentPlayer] == eVisibility.Visible;
            bool visibleBecauseGodMode = _game._viewer._viewType == eView.God;

            if (visibleToPlayer || visibleBecauseGodMode)
            {
                if (_structure != null)
                {
                    sgd = _structure.Draw();
                }
                if (_stats._build._buildingsQueued[currentPlayer] != null)
                {
                    sgd = new StructureGraphicsData(Color.black);
                }
                if (_resource != null)
                {
                    rgd = _resource.Draw();
                }
            }

            GraphicsData gd = new GraphicsData(_pos, lgd, sgd, rgd);

            return(gd);
        }
        else
        {
            return(null);
        }
    }