예제 #1
0
        protected override void OnSetup()
        {
            cachedBody = Agent.Body;
            cachedTurn = Agent.Turner;
            cachedMove = Agent.Mover;
            if (Sight < Range)
            {
                _sight = Range;
            }
            baseDeltaCount  = InfluenceManager.GenerateDeltaCount(Sight);
            rangeDeltaCount = InfluenceManager.GenerateDeltaCount(Range);

            fastRange        = (Range * Range);
            attackFrameCount = AttackRate;
            basePriority     = cachedBody.Priority;

            CanMove = cachedMove.IsNotNull();
            if (CanMove)
            {
                cachedMove.OnArrive         += HandleOnArrive;
                cachedMove.onGroupProcessed += _HandleMoveGroupProcessed;
            }

            CanTurn = cachedTurn.IsNotNull();
        }
예제 #2
0
        private static void Scan(Vector2d center, long radius, Func <LSAgent, bool> conditional)
        {
            int gridX;
            int gridY;

            GridManager.GetScanCoordinates(center.x, center.y, out gridX, out gridY);
            InfluenceManager.ScanAll(gridX, gridY, InfluenceManager.GenerateDeltaCount(radius), LSProjectile.outputAgents, conditional);
        }
예제 #3
0
        private static IEnumerable <LSAgent> Scan(Vector2d center, long radius, LSAgent sourceAgent, AllegianceType targetAllegiance)
        {
            int gridX;
            int gridY;

            GridManager.GetScanCoordinates(center.x, center.y, out gridX, out gridY);
            foreach (LSAgent agent in InfluenceManager.ScanAll(gridX, gridY, InfluenceManager.GenerateDeltaCount(radius), sourceAgent, targetAllegiance))
            {
                yield return(agent);
            }
        }
예제 #4
0
        private IEnumerable <LSAgent> Scan(Vector2d center, long radius)
        {
            int gridX;
            int gridY;

            GridManager.GetScanCoordinates(center.x, center.y, out gridX, out gridY);
            foreach (LSAgent agent in InfluenceManager.ScanAll(
                         gridX,
                         gridY,
                         InfluenceManager.GenerateDeltaCount(radius),
                         this.AgentConditional,
                         this.BucketConditional)
                     )
            {
                yield return(agent);
            }
        }