예제 #1
0
 public override bool IsMatch(int cell, int parent_cell, int cost)
 {
     SafeCellQuery.SafeFlags flags = SafeCellQuery.GetFlags(cell, brain, false);
     if ((flags & SafeCellQuery.SafeFlags.IsClear) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotLadder) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotTube) != 0 && (flags & SafeCellQuery.SafeFlags.IsBreathable) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotLiquid) != 0)
     {
         targetCell = cell;
     }
     return(cost > maxCost);
 }
    public void RunSafeCellQuery(bool avoid_light)
    {
        MinionPathFinderAbilities minionPathFinderAbilities = (MinionPathFinderAbilities)navigator.GetCurrentAbilities();

        minionPathFinderAbilities.SetIdleNavMaskEnabled(true);
        SafeCellQuery safeCellQuery = PathFinderQueries.safeCellQuery.Reset(brain, avoid_light);

        navigator.RunQuery(safeCellQuery);
        minionPathFinderAbilities.SetIdleNavMaskEnabled(false);
        cell = safeCellQuery.GetResultCell();
        if (cell == Grid.PosToCell(navigator))
        {
            cell = Grid.InvalidCell;
        }
    }