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]); }
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); } } }
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); }
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]); }
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); }
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); }