Exemplo n.º 1
0
        //传入一个生物,判断出这个生物的可移动距离
        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);
        }
Exemplo n.º 2
0
 public HexGridItem(HexModelInfo modelInfo)
 {
     this.modelInfo = modelInfo;
 }