Exemplo n.º 1
0
        public IEnumerator <bool> Run()
        {
            while (true)
            {
                // Get Position
                Position = Entity.GetPosition();
                yield return(true);

                // Get Entities
                Targets.Clear();
                List <long> entities = MyVisualScriptLogicProvider.GetEntitiesInSphere(Position, Config.Instance.Radius);
                foreach (long entityId in entities)
                {
                    if (entityId == Entity.EntityId)
                    {
                        continue;
                    }

                    IMyEntity entity = MyVisualScriptLogicProvider.GetEntityById(entityId);
                    if (entity is IMyBatteryBlock)
                    {
                        IMyBatteryBlock bat = entity as IMyBatteryBlock;
                        if (bat.IsSameConstructAs(Battery))
                        {
                            continue;
                        }
                        if (!bat.Enabled)
                        {
                            continue;
                        }
                        if (bat.ChargeMode == Sandbox.ModAPI.Ingame.ChargeMode.Discharge)
                        {
                            continue;
                        }
                        Target targ = new Target()
                        {
                            IBattery = bat,
                            Distance = (float)Vector3D.Distance(entity.GetPosition(), Position)
                        };
                        targ.Loss = targ.Distance * Config.Instance.LossPercentPerM;
                        Targets.Add(targ);
                    }
                }
                yield return(true);

                yield return(true);
            }
        }