Esempio n. 1
0
    public static void CircuitSearchLoop(IElectricityIO Thiswire, IProvidePower ProvidingPower)
    {
        InputOutputFunctions.DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject(), Thiswire);
        bool Break = true;
        List <IElectricityIO> IterateDirectionWorkOnNextList = new List <IElectricityIO> ();

        while (Break)
        {
            IterateDirectionWorkOnNextList = new List <IElectricityIO> (ProvidingPower.DirectionWorkOnNextList);
            ProvidingPower.DirectionWorkOnNextList.Clear();
            for (int i = 0; i < IterateDirectionWorkOnNextList.Count; i++)
            {
                IterateDirectionWorkOnNextList [i].DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject());
            }
            if (ProvidingPower.DirectionWorkOnNextList.Count <= 0)
            {
                IterateDirectionWorkOnNextList = new List <IElectricityIO> (ProvidingPower.DirectionWorkOnNextListWait);
                ProvidingPower.DirectionWorkOnNextListWait.Clear();
                for (int i = 0; i < IterateDirectionWorkOnNextList.Count; i++)
                {
                    IterateDirectionWorkOnNextList [i].DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject());
                }
            }
            if (ProvidingPower.DirectionWorkOnNextList.Count <= 0 && ProvidingPower.DirectionWorkOnNextListWait.Count <= 0)
            {
                //Logger.Log ("stop!");
                Break = false;
            }
        }
    }
    public static void CircuitSearchLoop(ElectricalOIinheritance Thiswire)
    {
        //Logger.Log("CircuitSearchLoop Enter", Category.Electrical);
        GameObject GameObject = Thiswire.GameObject();

        if (GameObject == null)
        {
            return;
        }

        InputOutputFunctions.DirectionOutput(GameObject, Thiswire);
        bool Break = true;

        while (Break)
        {
            UesAlternativeDirectionWorkOnNextList = false;
            DOCircuitSearchLoop(GameObject, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait);

            UesAlternativeDirectionWorkOnNextList = true;
            DOCircuitSearchLoop(GameObject, DirectionWorkOnNextList, DirectionWorkOnNextListWait);

            if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 &
                _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0)
            {
                //Logger.Log ("CircuitSearchLoop stop!", Category.Electrical );
                Break = false;
            }
        }
    }
Esempio n. 3
0
    public override void DirectionOutput(GameObject SourceInstance)
    {
        int SourceInstanceID = SourceInstance.GetInstanceID();

        //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Data.Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Data.Upstream[SourceInstanceID].Count.ToString () + this.name + " <  name! ", Category.Electrical);
        if (RelatedLine == null)
        {
            InputOutputFunctions.DirectionOutput(SourceInstance, this);
        }
        else
        {
            IElectricityIO GoingTo;
            if (RelatedLine.TheEnd == this.GetComponent <IElectricityIO> ())
            {
                GoingTo = RelatedLine.TheStart;
            }
            else if (RelatedLine.TheStart == this.GetComponent <IElectricityIO> ())
            {
                GoingTo = RelatedLine.TheEnd;
            }
            else
            {
                GoingTo = null;
                return;
            }

            if (!(Data.Upstream.ContainsKey(SourceInstanceID)))
            {
                Data.Upstream[SourceInstanceID] = new HashSet <IElectricityIO>();
            }
            if (!(Data.Downstream.ContainsKey(SourceInstanceID)))
            {
                Data.Downstream[SourceInstanceID] = new HashSet <IElectricityIO>();
            }

            if (GoingTo != null)
            {
                //Logger.Log ("to" + GoingTo.GameObject ().name);///wow
            }


            foreach (IElectricityIO bob in Data.Upstream[SourceInstanceID])
            {
                //Logger.Log("Upstream" + bob.GameObject ().name );
            }
            if (!(Data.Downstream [SourceInstanceID].Contains(GoingTo) || Data.Upstream [SourceInstanceID].Contains(GoingTo)))
            {
                Data.Downstream [SourceInstanceID].Add(GoingTo);

                RelatedLine.DirectionInput(SourceInstance, this);
            }
            else
            {
                InputOutputFunctions.DirectionOutput(SourceInstance, this, RelatedLine);
            }
        }

        Data.DownstreamCount = Data.Downstream[SourceInstanceID].Count;
        Data.UpstreamCount   = Data.Upstream[SourceInstanceID].Count;
    }
Esempio n. 4
0
    public void DirectionOutput(int tick, GameObject SourceInstance)
    {
        InputOutputFunctions.DirectionOutput(tick, SourceInstance, this);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        Data.DownstreamCount = Data.Downstream[SourceInstanceID].Count;
        Data.UpstreamCount   = Data.Upstream[SourceInstanceID].Count;
        //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Upstream[SourceInstanceID].Count.ToString (), Category.Electrical);
    }
Esempio n. 5
0
    /// <summary>
    /// Sets the downstream and pokes the next one along
    /// </summary>
    public virtual void DirectionOutput(GameObject SourceInstance)
    {
        int SourceInstanceID = SourceInstance.GetInstanceID();

        InputOutputFunctions.DirectionOutput(SourceInstance, this);
        if (Logall)
        {
            Logger.Log("this > " + this + "DirectionOutput " + this.gameObject + " <ID | Downstream = " + Data.SupplyDependent[SourceInstanceID].Downstream.Count + " Upstream = " + Data.SupplyDependent[SourceInstanceID].Upstream.Count + "connections " + (string.Join(",", Data.connections)), Category.Electrical);
        }
    }
 /// <summary>
 /// Sets the downstream and pokes the next one along
 /// </summary>
 public virtual void DirectionOutput(ElectricalOIinheritance SourceInstance)
 {
     if (Present != null)
     {
         Present.DirectionOutput(SourceInstance);
     }
     else
     {
         InputOutputFunctions.DirectionOutput(SourceInstance, this);
     }
 }
    public void CircuitSearchLoop(ElectricalOIinheritance wire)
    {
        InputOutputFunctions.DirectionOutput(wire, wire.InData);
        while (true)
        {
            UesAlternativeDirectionWorkOnNextList = false;
            CircuitSearch(wire, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait);

            UesAlternativeDirectionWorkOnNextList = true;
            CircuitSearch(wire, DirectionWorkOnNextList, DirectionWorkOnNextListWait);

            if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 &
                _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0)
            {
                break;
            }
        }
    }
    public void CircuitSearchLoop(ElectricalOIinheritance Thiswire)
    {
        InputOutputFunctions.DirectionOutput(Thiswire, Thiswire.InData);
        bool Break = true;

        while (Break)
        {
            UesAlternativeDirectionWorkOnNextList = false;
            DOCircuitSearchLoop(Thiswire, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait);

            UesAlternativeDirectionWorkOnNextList = true;
            DOCircuitSearchLoop(Thiswire, DirectionWorkOnNextList, DirectionWorkOnNextListWait);

            if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 &
                _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0)
            {
                Break = false;
            }
        }
    }
Esempio n. 9
0
    public override void DirectionOutput(GameObject SourceInstance)
    {
        int SourceInstanceID = SourceInstance.GetInstanceID();

        //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Data.Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Data.Upstream[SourceInstanceID].Count.ToString () + this.name + " <  name! ", Category.Electrical);
        if (RelatedLine == null)
        {
            InputOutputFunctions.DirectionOutput(SourceInstance, this);
        }
        else
        {
            ElectricalOIinheritance GoingTo;
            if (RelatedLine.TheEnd == this.GetComponent <ElectricalOIinheritance>())
            {
                GoingTo = RelatedLine.TheStart;
            }
            else if (RelatedLine.TheStart == this.GetComponent <ElectricalOIinheritance>())
            {
                GoingTo = RelatedLine.TheEnd;
            }
            else
            {
                GoingTo = null;
                return;
            }

            if (!(Data.SupplyDependent[SourceInstanceID].Downstream.Contains(GoingTo) ||
                  Data.SupplyDependent[SourceInstanceID].Upstream.Contains(GoingTo)))
            {
                Data.SupplyDependent[SourceInstanceID].Downstream.Add(GoingTo);

                RelatedLine.DirectionInput(SourceInstance, this);
            }
            else
            {
                InputOutputFunctions.DirectionOutput(SourceInstance, this, RelatedLine);
            }
        }
    }
Esempio n. 10
0
 /// <summary>
 /// Sets the downstream and pokes the next one along
 /// </summary>
 public virtual void DirectionOutput(ElectricalOIinheritance SourceInstance)
 {
     InputOutputFunctions.DirectionOutput(SourceInstance, InData);
 }