/// <summary> /// 设置热源 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="energy"></param> public void SetHotPot(int x, int y, int width, int height, double energy) { for (var i = x; i <= x + width; i++) { for (var j = y; j <= y + height; j++) { var cell = EnergyCells.FirstOrDefault(c => c.CellX == i && c.CellY == j); if (cell != null) { cell.Energy = energy; cell.IsHotPot = true; } } } }
/// <summary> /// 初始化能量格子 /// </summary> /// <param name="maxX"></param> /// <param name="maxY"></param> /// <param name="darkEnergy"></param> /// <param name="countRange"></param> public void InitEnergyCells(int maxX, int maxY, double darkEnergy, int countRange = 1) { int cellId = 0; for (var i = 1; i <= maxX; i++) { for (var j = 1; j <= maxY; j++) { cellId++; EnergyCells.Add(new EnergyCellExtend() { Order = cellId, CellX = i, CellY = j, IsHotPot = false }); } } foreach (var cell in EnergyCells) { var argCell = new ArgEnergyCell() { RelactedCells = new List <EnergyCellExtend>(), CellX = cell.CellX, CellY = cell.CellY }; // 取得能量平均单元格 int startX = cell.CellX - countRange; int startY = cell.CellY - countRange; int endX = cell.CellX + countRange; int endY = cell.CellY + countRange; for (var i = startX; i <= endX; i++) { for (var j = startY; j <= endY; j++) { var subArgCell = EnergyCells.FirstOrDefault(c => c.CellX == i && c.CellY == j); argCell.RelactedCells.Add(subArgCell ?? new EnergyCellExtend() { CellX = i, CellY = j, Energy = darkEnergy }); } } ArgCells.Add(argCell); } }