private void AssertCheckOreDeposits() { foreach (var oreDeposit in OreDepositsMutable) { Debug.Assert(oreDeposit.Value.TotalRareOreContent > 0); Debug.Assert(oreDeposit.Value.GetOreWithContent().Count > 0); } Dictionary <byte, int> materialsByIndex = new Dictionary <byte, int>(); for (int i = 0; i < m_materialCells.Length; ++i) { var contentCell = m_contentCells[i]; var materialCell = m_materialCells[i]; if ((contentCell != null && contentCell.CellType == MyVoxelRangeType.EMPTY) || !materialCell.ContainsRareMaterial) { Debug.Assert(!OreDepositsMutable.ContainsKey(i)); } else { for (int j = 0; j < MaterialCell.voxelsInCell; ++j) { var material = materialCell.GetMaterial(j); var content = (contentCell == null) ? MyVoxelConstants.VOXEL_CONTENT_FULL : contentCell.GetContent(j); if (material.IsRare && content > 0) { int contentPresent; materialsByIndex.TryGetValue(material.Index, out contentPresent); contentPresent += content; materialsByIndex[material.Index] = contentPresent; } } if (materialsByIndex.Count > 0) { IMyDepositCell deposit; if (OreDepositsMutable.TryGetValue(i, out deposit)) { foreach (var entry in materialsByIndex) { var material = MyDefinitionManager.Static.GetVoxelMaterialDefinition(entry.Key); Debug.Assert(deposit.GetOreWithContent().Contains(material)); } } else { Debug.Fail("Missing deposit cell when there is rare ore."); } } else { Debug.Assert(!OreDepositsMutable.ContainsKey(i)); } materialsByIndex.Clear(); } } }
private void AddDepositCell(DepositCell cell) { Debug.Assert(!OreDepositsMutable.ContainsKey(cell.CellIndex)); OreDepositsMutable[cell.CellIndex] = cell; }