Ejemplo n.º 1
0
    public static void ElectricityInput(float Current, GameObject SourceInstance, ElectricalOIinheritance ComingFrom, ElectricalOIinheritance Thiswire)
    {
        //Logger.Log (tick.ToString () + " <tick " + Current.ToString () + " <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        if (!(Thiswire.Data.SourceVoltages.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.SourceVoltages[SourceInstanceID] = new float();
        }
        if (!(Thiswire.Data.CurrentComingFrom.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.CurrentComingFrom[SourceInstanceID] = new Dictionary <ElectricalOIinheritance, float>();
        }
        Thiswire.Data.CurrentComingFrom[SourceInstanceID][ComingFrom] = Current;

        if (!(Thiswire.Data.ResistanceComingFrom.ContainsKey(SourceInstanceID)))
        {
            ElectricalSynchronisation.StructureChange = true;
            ElectricalSynchronisation.NUStructureChangeReact.Add(Thiswire.InData.ControllingUpdate);
            ElectricalSynchronisation.NUResistanceChange.Add(Thiswire.InData.ControllingUpdate);
            ElectricalSynchronisation.NUCurrentChange.Add(Thiswire.InData.ControllingUpdate);
            Logger.LogErrorFormat("Resistance isn't initialised on {1}", Category.Electrical, SourceInstance);
            return;
        }
        Thiswire.Data.SourceVoltages[SourceInstanceID] = Current * (ElectricityFunctions.WorkOutResistance(Thiswire.Data.ResistanceComingFrom[SourceInstanceID]));
        ELCurrent.CurrentWorkOnNextListADD(Thiswire);
        Thiswire.Data.CurrentStoreValue = ElectricityFunctions.WorkOutCurrent(Thiswire.Data.CurrentComingFrom[SourceInstanceID]);
    }
Ejemplo n.º 2
0
 public static void DoCurrentloop(HashSet <ElectricalOIinheritance> WorkingOn, GameObject SourceInstance)
 {
     foreach (ElectricalOIinheritance Node in WorkingOn)
     {
         //Logger.Log("yow");
         if (!Node.InData.ElectricityOverride)
         {
             float SupplyingCurrent = 0;
             float Voltage          = Node.Data.CurrentStoreValue * (ElectricityFunctions.WorkOutResistance(Node.Data.ResistanceComingFrom[SourceInstanceID]));
             foreach (KeyValuePair <ElectricalOIinheritance, float> JumpTo in Node.Data.ResistanceComingFrom[SourceInstanceID])
             {
                 if (Voltage > 0)
                 {
                     SupplyingCurrent = (Voltage / JumpTo.Value);
                 }
                 else
                 {
                     SupplyingCurrent = Node.Data.CurrentStoreValue;
                 }
                 if (!(Node.Data.CurrentGoingTo.ContainsKey(SourceInstanceID)))
                 {
                     Node.Data.CurrentGoingTo[SourceInstanceID] = new Dictionary <ElectricalOIinheritance, float>();
                 }
                 Node.Data.CurrentGoingTo[SourceInstanceID][JumpTo.Key] = SupplyingCurrent;
                 if (!JumpTo.Key.InData.ElectricityOverride)
                 {
                     //Logger.Log (tick.ToString () + " <tick " + Current.ToString () + " <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
                     if (!(JumpTo.Key.Data.SourceVoltages.ContainsKey(SourceInstanceID)))
                     {
                         JumpTo.Key.Data.SourceVoltages[SourceInstanceID] = new float();
                     }
                     if (!(JumpTo.Key.Data.CurrentComingFrom.ContainsKey(SourceInstanceID)))
                     {
                         JumpTo.Key.Data.CurrentComingFrom[SourceInstanceID] = new Dictionary <ElectricalOIinheritance, float>();
                     }
                     JumpTo.Key.Data.CurrentComingFrom[SourceInstanceID][Node] = SupplyingCurrent;
                     JumpTo.Key.Data.SourceVoltages[SourceInstanceID]          = SupplyingCurrent * (ElectricityFunctions.WorkOutResistance(JumpTo.Key.Data.ResistanceComingFrom[SourceInstanceID]));
                     CurrentWorkOnNextListADD(JumpTo.Key);
                     JumpTo.Key.Data.CurrentStoreValue = ElectricityFunctions.WorkOutCurrent(JumpTo.Key.Data.CurrentComingFrom[SourceInstanceID]);
                     //JumpTo.Key.ElectricityOutput(ElectricityFunctions.WorkOutCurrent(JumpTo.Key.Data.CurrentComingFrom[SourceInstanceID]), SourceInstance);
                 }
                 else
                 {
                     JumpTo.Key.ElectricityInput(SupplyingCurrent, SourceInstance, Node);
                 }
                 ElectricityFunctions.WorkOutActualNumbers(Node);
             }
         }
         else
         {
             Node.ElectricityOutput(Node.Data.CurrentStoreValue, SourceInstance);
         }
     }
 }
Ejemplo n.º 3
0
    public static void ElectricityInput(int tick, float Current, GameObject SourceInstance, IElectricityIO ComingFrom, IElectricityIO Thiswire)
    {
        //Logger.Log (tick.ToString () + " <tick " + Current.ToString () + " <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        if (!(Thiswire.Data.SourceVoltages.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.SourceVoltages [SourceInstanceID] = new float();
        }
        if (!(Thiswire.Data.CurrentComingFrom.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.CurrentComingFrom [SourceInstanceID] = new Dictionary <IElectricityIO, float> ();
        }
        Thiswire.Data.CurrentComingFrom [SourceInstanceID] [ComingFrom] = Current;
        Thiswire.Data.SourceVoltages[SourceInstanceID] = Current * (ElectricityFunctions.WorkOutResistance(Thiswire.Data.ResistanceComingFrom [SourceInstanceID]));
        Thiswire.ElectricityOutput(tick, ElectricityFunctions.WorkOutCurrent(Thiswire.Data.CurrentComingFrom [SourceInstanceID]), SourceInstance);
    }
Ejemplo n.º 4
0
    public static void ElectricityInput(float Current, GameObject SourceInstance, ElectricalOIinheritance ComingFrom, ElectricalOIinheritance Thiswire)
    {
        //Logger.Log (tick.ToString () + " <tick " + Current.ToString () + " <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        if (!(Thiswire.Data.SourceVoltages.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.SourceVoltages[SourceInstanceID] = new float();
        }
        if (!(Thiswire.Data.CurrentComingFrom.ContainsKey(SourceInstanceID)))
        {
            Thiswire.Data.CurrentComingFrom[SourceInstanceID] = new Dictionary <ElectricalOIinheritance, float>();
        }
        Thiswire.Data.CurrentComingFrom[SourceInstanceID][ComingFrom] = Current;
        Thiswire.Data.SourceVoltages[SourceInstanceID] = Current * (ElectricityFunctions.WorkOutResistance(Thiswire.Data.ResistanceComingFrom[SourceInstanceID]));
        ELCurrent.CurrentWorkOnNextListADD(Thiswire);
        Thiswire.Data.CurrentStoreValue = ElectricityFunctions.WorkOutCurrent(Thiswire.Data.CurrentComingFrom[SourceInstanceID]);
    }
Ejemplo n.º 5
0
    public static void ElectricityInput(float Current, GameObject SourceInstance, ElectricalOIinheritance ComingFrom, ElectricalOIinheritance Thiswire)
    {
        //Logger.Log (" <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        ElectricalSynchronisation.InputSupplyingUsingData = Thiswire.Data.SupplyDependent[SourceInstanceID];
        ElectricalSynchronisation.InputSupplyingUsingData.CurrentComingFrom[ComingFrom] = Current;
        if (!(ElectricalSynchronisation.InputSupplyingUsingData.ResistanceComingFrom.Count > 0))
        {
            ElectricalSynchronisation.StructureChange = true;
            ElectricalSynchronisation.NUStructureChangeReact.Add(Thiswire.InData.ControllingDevice);
            ElectricalSynchronisation.NUResistanceChange.Add(Thiswire.InData.ControllingDevice);
            ElectricalSynchronisation.NUCurrentChange.Add(Thiswire.InData.ControllingDevice);
            //Logger.LogErrorFormat("Resistance isn't initialised on {1}", Category.Electrical, SourceInstance);
            return;
        }
        ElectricalSynchronisation.InputSupplyingUsingData.SourceVoltages = Current * (ElectricityFunctions.WorkOutResistance(ElectricalSynchronisation.InputSupplyingUsingData.ResistanceComingFrom));
        ELCurrent.CurrentWorkOnNextListADD(Thiswire);
        Thiswire.Data.CurrentStoreValue = ElectricityFunctions.WorkOutCurrent(ElectricalSynchronisation.InputSupplyingUsingData.CurrentComingFrom);
    }
Ejemplo n.º 6
0
 public static void DoCurrentloop(HashSet <ElectricalOIinheritance> WorkingOn, GameObject SourceInstance)
 {
     foreach (ElectricalOIinheritance Node in WorkingOn)
     {
         if (!Node.InData.ElectricityOverride)
         {
             ElectricalSynchronisation.OutputSupplyingUsingData = Node.Data.SupplyDependent[SourceInstanceID];
             float SupplyingCurrent = 0;
             float Voltage          = Node.Data.CurrentStoreValue * (ElectricityFunctions.WorkOutResistance(ElectricalSynchronisation.OutputSupplyingUsingData.ResistanceComingFrom));
             foreach (KeyValuePair <ElectricalOIinheritance, float> JumpTo in ElectricalSynchronisation.OutputSupplyingUsingData.ResistanceComingFrom)
             {
                 if (Voltage > 0)
                 {
                     SupplyingCurrent = (Voltage / JumpTo.Value);
                 }
                 else
                 {
                     SupplyingCurrent = Node.Data.CurrentStoreValue;
                 }
                 ElectricalSynchronisation.OutputSupplyingUsingData.CurrentGoingTo[JumpTo.Key] = SupplyingCurrent;
                 if (!JumpTo.Key.InData.ElectricityOverride)
                 {
                     ElectricalSynchronisation.OutputSupplyingUsingData = JumpTo.Key.Data.SupplyDependent[SourceInstanceID];
                     ElectricalSynchronisation.OutputSupplyingUsingData.CurrentComingFrom[Node] = SupplyingCurrent;
                     ElectricalSynchronisation.OutputSupplyingUsingData.SourceVoltages          = SupplyingCurrent * (ElectricityFunctions.WorkOutResistance(ElectricalSynchronisation.OutputSupplyingUsingData.ResistanceComingFrom));
                     //Logger.Log(SupplyingCurrent.ToString() + " <Current " + SourceInstance.ToString() + " <SourceInstance " + Node.ToString() + " <ComingFrom " + JumpTo.ToString() + " <Thiswire ", Category.Electrical);
                     CurrentWorkOnNextListADD(JumpTo.Key);
                     JumpTo.Key.Data.CurrentStoreValue = ElectricityFunctions.WorkOutCurrent(ElectricalSynchronisation.OutputSupplyingUsingData.CurrentComingFrom);
                 }
                 else
                 {
                     JumpTo.Key.ElectricityInput(SupplyingCurrent, SourceInstance, Node);
                 }
             }
         }
         else
         {
             Node.ElectricityOutput(Node.Data.CurrentStoreValue, SourceInstance);
         }
     }
 }
    public static void ElectricityInput(int tick, float Current, GameObject SourceInstance, IElectricityIO ComingFrom, IElectricityIO Thiswire)
    {
        //Logger.Log (tick.ToString () + " <tick " + Current.ToString () + " <Current " + SourceInstance.ToString () + " <SourceInstance " + ComingFrom.ToString () + " <ComingFrom " + Thiswire.ToString () + " <Thiswire ", Category.Electrical);
        int SourceInstanceID = SourceInstance.GetInstanceID();

        //if (electricity.voltage > 1f) {
        //	connected = true;
        //}
        if (!(Thiswire.SourceVoltages.ContainsKey(SourceInstanceID)))
        {
            Thiswire.SourceVoltages [SourceInstanceID] = new float();
        }

        if (!(Thiswire.CurrentComingFrom.ContainsKey(SourceInstanceID)))
        {
            Thiswire.CurrentComingFrom [SourceInstanceID] = new Dictionary <IElectricityIO, float> ();
        }
        Thiswire.CurrentComingFrom [SourceInstanceID] [ComingFrom] = Current;
        //Logger.Log (Current.ToString () + " <Current Using Resistance> " + WorkOutResistance (Thiswire.ResistanceComingFrom [SourceInstanceID]).ToString (), Category.Electrical);
        Thiswire.SourceVoltages[SourceInstanceID] = Current * (WorkOutResistance(Thiswire.ResistanceComingFrom [SourceInstanceID]));
        //Logger.Log (Thiswire.ActualCurrentChargeInWire.ToString () + " How much current", Category.Electrical);
        //Pass the charge on:

        if (Thiswire.CanProvideResistance)
        {
            IProvidePower SourceInstancPowerSupply = SourceInstance.GetComponent <IProvidePower> ();

            if (SourceInstancPowerSupply != null)
            {
                IElectricityIO IElectricityIOPowerSupply = SourceInstance.GetComponent <IElectricityIO> ();
                Thiswire.ResistanceToConnectedDevices.Add(IElectricityIOPowerSupply);
                SourceInstancPowerSupply.connectedDevices.Add(Thiswire);
            }
        }

        Thiswire.ElectricityOutput(tick, ElectricityFunctions.WorkOutCurrent(Thiswire.CurrentComingFrom [SourceInstanceID]), SourceInstance);
    }