private void RefreshLineOfSight(IVisibilityArea visibilityArea, int needRefreshBits) { MajorEmpire majorEmpire = visibilityArea.Empire as MajorEmpire; if (majorEmpire == null) { if (visibilityArea.VisibilityDirty && visibilityArea.Empire != null) { visibilityArea.VisibilityDirty = false; } return; } if ((needRefreshBits & majorEmpire.Bits) != majorEmpire.Bits) { return; } visibilityArea.VisibilityDirty = false; foreach (WorldPosition worldPosition in visibilityArea.VisibleWorldPositions) { if (worldPosition.IsValid && worldPosition.Row < this.world.WorldParameters.Rows && worldPosition.Column < this.world.WorldParameters.Columns) { this.SetWorldPositionAsVisible(worldPosition, majorEmpire, 0, visibilityArea.VisibilityAccessibilityLevel); if (ELCPUtilities.SpectatorMode) { foreach (int num in ELCPUtilities.EliminatedEmpireIndices) { this.SetWorldPositionAsVisible(worldPosition, base.Game.Empires[num], 0, visibilityArea.VisibilityAccessibilityLevel); } } } } }
private bool EvaluateVisibilityRefresh() { if (this.NeedRefreshBits == 0) { for (int i = 0; i < this.gameEntities.Count; i++) { IGameEntityWithLineOfSight gameEntityWithLineOfSight = this.gameEntities[i]; if (gameEntityWithLineOfSight.LineOfSightActive && gameEntityWithLineOfSight.LineOfSightDirty) { MajorEmpire majorEmpire = gameEntityWithLineOfSight.Empire as MajorEmpire; if (majorEmpire != null) { this.NeedRefreshBits |= majorEmpire.Bits; this.NeedRefreshBits |= gameEntityWithLineOfSight.EmpireInfiltrationBits; } } } int j = 0; while (j < this.visibilityProviders.Count) { if (!this.visibilityProviders[j].VisibilityDirty) { foreach (ILineOfSightEntity lineOfSightEntity in this.visibilityProviders[j].LineOfSightEntities) { if (lineOfSightEntity.LineOfSightActive && lineOfSightEntity.LineOfSightDirty) { MajorEmpire majorEmpire2 = lineOfSightEntity.Empire as MajorEmpire; if (majorEmpire2 != null) { this.NeedRefreshBits |= majorEmpire2.Bits; this.NeedRefreshBits |= lineOfSightEntity.EmpireInfiltrationBits; } } } using (IEnumerator <IVisibilityArea> enumerator2 = this.visibilityProviders[j].VisibleAreas.GetEnumerator()) { while (enumerator2.MoveNext()) { IVisibilityArea visibilityArea = enumerator2.Current; if (visibilityArea.VisibilityDirty) { MajorEmpire majorEmpire3 = visibilityArea.Empire as MajorEmpire; if (majorEmpire3 != null) { this.NeedRefreshBits |= majorEmpire3.Bits; } if (ELCPUtilities.SpectatorMode) { foreach (int num in ELCPUtilities.EliminatedEmpireIndices) { this.NeedRefreshBits |= base.Game.Empires[num].Bits; } } } } goto IL_295; } goto IL_1E3; } goto IL_1E3; IL_295: j++; continue; IL_1E3: foreach (Empire empire in this.visibilityProviders[j].VisibilityEmpires) { if (empire is MajorEmpire) { this.NeedRefreshBits |= empire.Bits; } if (ELCPUtilities.SpectatorMode) { foreach (int num2 in ELCPUtilities.EliminatedEmpireIndices) { this.NeedRefreshBits |= base.Game.Empires[num2].Bits; } } } goto IL_295; } } int num3 = (this.majorEmpires == null) ? 0 : ((int)Mathf.Pow(2f, (float)this.majorEmpires.Length) - 1); this.NeedRefreshBits &= num3; return(this.NeedRefreshBits != 0); }