Esempio n. 1
0
        public void UpdateGrid(List <TileData> tileData, TwoDCoordinate boardSize)
        {
            int index = 0;

            for (int y = 0; y < boardSize.y; y++)
            {
                for (int x = 0; x < boardSize.x; x++)
                {
                    if (tileData[index].isFilled)
                    {
                        GridNode node = new GridNode();
                        node.x         = tileData[index].coordinates.x / 2;
                        node.y         = tileData[index].coordinates.y / 2;
                        node.isVisited = -1;
                        node.hasPortal = tileData[index].hasPortal;
                        node.portalX   = tileData[index].portalX;
                        node.portalY   = tileData[index].portalY;
                        grid[x, y]     = node;
                    }
                    else
                    {
                        grid[x, y] = null;
                    }
                    index++;
                }
            }
        }
Esempio n. 2
0
        public List <GridNode> GetPath(List <TileData> tileData, TwoDCoordinate startPos, TwoDCoordinate endPos)
        {
            UpdateGrid(tileData, boardSize);
            grid[startPos.x / 2, startPos.y / 2].isVisited = 0;
            SetDistance(startPos.x, startPos.y);
            SetPath(endPos.x, endPos.y);

            path.Reverse();

            return(path);
        }
Esempio n. 3
0
        GridNode FindClosest(int x, int y, List <GridNode> nodes)
        {
            int currentDistance = 999999;
            int indexNumber     = 0;

            for (int i = 0; i < nodes.Count; i++)
            {
                if (TwoDCoordinate.Distance(new TwoDCoordinate(x, y), new TwoDCoordinate(nodes[i].x, nodes[i].y)) < currentDistance)
                {
                    currentDistance = TwoDCoordinate.Distance(new TwoDCoordinate(x, y), new TwoDCoordinate(nodes[i].x, nodes[i].y));
                    indexNumber     = i;
                }
            }
            return(nodes[indexNumber]);
        }
Esempio n. 4
0
 bool CanAttack(string playerUUID, int agentIndex, int targetAgentIndex, int attackIndex)
 {
     if (IsTurnAndPhase(playerUUID, TurnPhase.Battle))
     {
         if (board.GetAgent(agentIndex).MonsterData != null &&
             board.GetAgent(targetAgentIndex).MonsterData != null &&
             GetPlayer(playerUUID).HasCrests(RequestedCrestData.GetRequestedCrestDatasFromCosts(board.GetAgent(agentIndex).MonsterData.SpecialAbilities[attackIndex].Costs)))
         {
             float distance = TwoDCoordinate.FlyDistance(board.GetAgent(agentIndex).TileData.coordinates, board.GetAgent(targetAgentIndex).TileData.coordinates);
             if (distance <= board.GetAgent(agentIndex).MonsterData.SpecialAbilities[attackIndex].Range)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Esempio n. 5
0
 public void SetGrid(List <TileData> tileData, TwoDCoordinate boardSize)
 {
     this.boardSize = new TwoDCoordinate(boardSize.x, boardSize.y);
     grid           = new GridNode[boardSize.x, boardSize.y];
     UpdateGrid(tileData, boardSize);
 }