protected override bool HasAccessToInfo_Comprehensive(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Resources:
         default:
             return false;
     }
 }
 private bool HasAccessToInfo(IntelCoverage coverage, ItemInfoID infoID, Player player) {
     switch (coverage) {
         case IntelCoverage.Comprehensive:
             if (HasAccessToInfo_Comprehensive(infoID, player)) {
                 return true;
             }
             goto case IntelCoverage.Broad;
         case IntelCoverage.Broad:
             if (HasAccessToInfo_Broad(infoID, player)) {
                 return true;
             }
             goto case IntelCoverage.Essential;
         case IntelCoverage.Essential:
             if (HasAccessToInfo_Essential(infoID, player)) {
                 return true;
             }
             goto case IntelCoverage.Basic;
         case IntelCoverage.Basic:
             if (HasAccessToInfo_Basic(infoID, player)) {
                 return true;
             }
             goto case IntelCoverage.None;
         case IntelCoverage.None:
             return false;
         default:
             throw new NotImplementedException(ErrorMessages.UnanticipatedSwitchValue.Inject(coverage));
     }
 }
        protected override bool HasAccessToInfo_Basic(ItemInfoID infoID, Player player) {
            switch (infoID) {
                case ItemInfoID.Name:
                case ItemInfoID.Position:
                case ItemInfoID.SectorID:
                    return true;
                case ItemInfoID.Owner:
                    // If gets here, System IntelCoverage is Basic, but a member could be allowing access
                    SystemData sysData = _data as SystemData;
                    bool starHasAccess = sysData.StarData.InfoAccessCntlr.HasAccessToInfo(player, infoID);
                    if (starHasAccess) {
                        return true;
                    }
                    else {
                        bool anyPlanetoidHasAccess = sysData.AllPlanetoidData.Select(pData => pData.InfoAccessCntlr).Any(iac => iac.HasAccessToInfo(player, infoID));
                        if (anyPlanetoidHasAccess) {
                            return true;
                        }
                        // WARNING: Do not inquire about Settlement Owner as Settlement inquires about System Owner creating a circular loop
                    }
                    return false;

                default:
                    return false;
            }
        }
 protected override bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Capacity:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Essential(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Owner:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Basic(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Name:
         case ItemInfoID.Position:
             return true;
         default:
             return false;
     }
 }
        public sealed override bool HasAccessToInfo(Player player, ItemInfoID infoID) {
            if (player == TempGameValues.NoPlayer) {
                D.Error("{0}: NoPlayer used to attempt access to {1}.{2}.", _data.DebugName, typeof(ItemInfoID).Name, infoID.GetValueName());
            }
            D.AssertNotDefault((int)infoID);

            var coverage = (_data as AIntelItemData).GetIntelCoverage(player);
            //D.Log(ShowDebugLog, "{0}: {1}.IntelCoverage for {2} is {3}.", GetType().Name, _data.DebugName, player, coverage.GetValueName());
            return HasAccessToInfo(coverage, infoID, player);
        }
 protected override bool HasAccessToInfo_Comprehensive(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Culture:
         case ItemInfoID.Science:
         case ItemInfoID.NetIncome:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Comprehensive(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.CurrentHitPoints:
         case ItemInfoID.Health:
         case ItemInfoID.Resources:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.CurrentHitPoints:
         case ItemInfoID.Health:
         case ItemInfoID.Defense:
         case ItemInfoID.Offense:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Essential(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Owner:
         case ItemInfoID.Category:
         case ItemInfoID.CurrentSpeedSetting:
         case ItemInfoID.AlertStatus:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Basic(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Name:
         case ItemInfoID.ParentName:
         case ItemInfoID.Position:
         case ItemInfoID.SectorID:
         case ItemInfoID.OrbitalSpeed:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Comprehensive(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.CurrentCmdEffectiveness:
         case ItemInfoID.UnitScience:
         case ItemInfoID.UnitNetIncome:
         case ItemInfoID.Resources:
         case ItemInfoID.UnitCulture:
         case ItemInfoID.Capacity:
         case ItemInfoID.UnitCurrentHitPts:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Essential(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Category:
         case ItemInfoID.MaxHitPoints:
         case ItemInfoID.Mass:
         case ItemInfoID.WeaponsRange:
         case ItemInfoID.SensorRange:
         case ItemInfoID.Owner:
         case ItemInfoID.AlertStatus:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Basic(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Name:
         case ItemInfoID.ParentName:
         case ItemInfoID.Position:
         case ItemInfoID.SectorID:
             return true;
         case ItemInfoID.Owner:
             // If gets here, Settlement IntelCoverage is Basic, but ParentSystem could be allowing access.
             // System uses ImprovingIntel where Coverage can't regress. Settlement uses Intel which allows regress
             SystemInfoAccessController parentSysAccessCntlr = (_data as SettlementCmdData).ParentSystemData.InfoAccessCntlr;
             return parentSysAccessCntlr.HasAccessToInfo(player, ItemInfoID.Owner);
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.UnitWeaponsRange:
         case ItemInfoID.UnitSensorRange:
         case ItemInfoID.UnitHealth:
         case ItemInfoID.UnitMaxHitPts:
         case ItemInfoID.Formation:
         case ItemInfoID.Composition:
         case ItemInfoID.UnitOffense:
         case ItemInfoID.UnitDefense:
             //D.Log(ShowDebugLog, "{0}.HasAccesstoInfo_Broad({1}, {2}) called.", GetType().Name, infoID.GetValueName(), player);
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.UnitWeaponsRange:
         case ItemInfoID.UnitSensorRange:
         case ItemInfoID.UnitHealth:
         case ItemInfoID.UnitMaxHitPts:
         case ItemInfoID.UnitCurrentHitPts:
         case ItemInfoID.Composition:
         case ItemInfoID.Formation:
         case ItemInfoID.UnitDefense:
         case ItemInfoID.UnitOffense:
             return true;
         default:
             return false;
     }
 }
 protected override bool HasAccessToInfo_Basic(ItemInfoID infoID, Player player) {
     switch (infoID) {
         case ItemInfoID.Name:
         case ItemInfoID.Position:
         case ItemInfoID.SectorID:
             return true;
         case ItemInfoID.Owner:
             // If gets here, Sector IntelCoverage is Basic, but a member could be allowing access.
             SectorData sectorData = _data as SectorData;
             bool systemHasAccess = sectorData.SystemData != null ? sectorData.SystemData.InfoAccessCntlr.HasAccessToInfo(player, infoID) : false;
             if (systemHasAccess) {
                 return true;
             }
             return false;
         default:
             return false;
     }
 }
 /// <summary>
 /// Returns <c>true</c> if <c>Player</c> with IntelCoverage.Essential should have access to the info identified by infoID,
 /// <c>false</c> otherwise. If false, the next lower IntelCoverage level will be tested until true is returned or Basic has been evaluated.
 /// </summary>
 /// <param name="infoID">The information identifier.</param>
 /// <param name="player">The player requesting the access. 
 /// Only used when this InfoAccessCntlr needs to consult with another to make a decision.</param>
 /// <returns></returns>
 protected abstract bool HasAccessToInfo_Essential(ItemInfoID infoID, Player player);
 /// <summary>
 /// Returns <c>true</c> if <c>Player</c> with IntelCoverage.Broad should have access to the info identified by infoID,
 /// <c>false</c> otherwise. If false, the next lower IntelCoverage level will be tested until true is returned or Basic has been evaluated.
 /// </summary>
 /// <param name="infoID">The information identifier.</param>
 /// <param name="player">The player requesting the access. 
 /// Only used when this InfoAccessCntlr needs to consult with another to make a decision.</param>
 /// <returns></returns>
 protected abstract bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player);
 /// <summary>
 /// Returns <c>true</c> if <c>Player</c> with IntelCoverage.Comprehensive should have access to the info identified by infoID,
 /// <c>false</c> otherwise. If false, the next lower IntelCoverage level will be tested until true is returned or Basic has been evaluated.
 /// </summary>
 /// <param name="infoID">The information identifier.</param>
 /// <param name="player">The player requesting the access. 
 /// Only used when this InfoAccessCntlr needs to consult with another to make a decision.</param>
 /// <returns></returns>
 protected abstract bool HasAccessToInfo_Comprehensive(ItemInfoID infoID, Player player);
 public abstract bool HasAccessToInfo(Player player, ItemInfoID infoID);
 protected override bool HasAccessToInfo_Broad(ItemInfoID infoID, Player player) {
     switch (infoID) {
         default:
             return false;
     }
 }