//传入一个生物,判断出这个生物的可移动距离 public Dictionary <HexCoordinates, HexCellItem> GetCanMoveCellByMinionCard(CardEntry minionCard, HexModelInfo modelInfo) { Dictionary <HexCoordinates, HexCellItem> alreadyPassedCellMap = new Dictionary <HexCoordinates, HexCellItem>(); alreadyPassedCellMap.Add(minionCard.nowIndex, HexGrid.cellMap[minionCard.nowIndex]); for (int n = 0; n < minionCard.cardInfo.movingDistance; n++) { Dictionary <HexCoordinates, HexCellItem> oneCheckAddMap = new Dictionary <HexCoordinates, HexCellItem>(); foreach (KeyValuePair <HexCoordinates, HexCellItem> keyValuePair in alreadyPassedCellMap) { HexCoordinates startCoordinates = keyValuePair.Key; foreach (HexCoordinates hexCoordinates in modelInfo.expansionVector) { HexCoordinates targetHexCoordinates = HexUtil.GetTargetHexCoordinatesByStartPointAndVector(startCoordinates, hexCoordinates); if (HexGrid.cellMap.ContainsKey(targetHexCoordinates)) { if (HexGrid.cellMap[targetHexCoordinates].inThisCellCardList.Count == 0) { if (!alreadyPassedCellMap.ContainsKey(targetHexCoordinates) && !oneCheckAddMap.ContainsKey(targetHexCoordinates)) { HexGrid.cellMap[targetHexCoordinates].pathfindingLastCell = keyValuePair.Value; oneCheckAddMap.Add(targetHexCoordinates, HexGrid.cellMap[targetHexCoordinates]); } } } } } foreach (KeyValuePair <HexCoordinates, HexCellItem> keyValuePair in oneCheckAddMap) { alreadyPassedCellMap.Add(keyValuePair.Key, keyValuePair.Value); } } return(alreadyPassedCellMap); }
public HexGridItem(HexModelInfo modelInfo) { this.modelInfo = modelInfo; }