123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- class CAContinuousFillPowerGenerator : CAContinuousFill
- {
- void CAContinuousFillPowerGenerator( float quantity_filled_per_second , int liquid_type )
- {
- m_QuantityFilledPerSecond = quantity_filled_per_second;
- m_liquid_type = liquid_type;
- }
-
- override void Setup( ActionData action_data )
- {
- m_TimeElpased = 0;
-
- if ( !m_SpentUnits )
- {
- m_SpentUnits = new Param1<float>(0);
- }
- else
- {
- m_SpentUnits.param1 = 0;
- }
-
- EntityAI pg = EntityAI.Cast(action_data.m_Target.GetObject()); // get power generator
- m_QuantityFilledPerSecond *= Math.Min(action_data.m_MainItem.GetLiquidThroughputCoef(),pg.GetLiquidThroughputCoef());
-
- m_ItemQuantity = action_data.m_MainItem.GetQuantity();
- m_TargetUnits = pg.GetCompEM().GetEnergyMax() - pg.GetCompEM().GetEnergy();
- m_AdjustedQuantityFilledPerSecond = m_QuantityFilledPerSecond;//removed softskills
- }
-
- override int Execute( ActionData action_data )
- {
- if ( !action_data.m_Player )
- {
- return UA_ERROR;
- }
-
- PowerGeneratorBase pg = PowerGeneratorBase.Cast(action_data.m_Target.GetObject()); // get power generator
-
- if ( pg.GetFuel() >= pg.GetMaxFuel() )
- {
- return UA_FINISHED;
- }
- else
- {
- if ( m_SpentQuantity_total < m_TargetUnits )
- {
- m_SpentQuantity += m_AdjustedQuantityFilledPerSecond * action_data.m_Player.GetDeltaT();
- m_TimeElpased += action_data.m_Player.GetDeltaT();
-
- if ( m_TimeElpased >= m_DefaultTimeStep )
- {
- CalcAndSetQuantity( action_data );
- m_TimeElpased = 0;
- //Setup(action_data); //reset data after repeat
- }
- return UA_PROCESSING;
- }
- else
- {
- CalcAndSetQuantity( action_data );
- OnCompletePogress(action_data);
- return UA_FINISHED;
- }
- }
- }
- override void CalcAndSetQuantity( ActionData action_data )
- {
- m_SpentQuantity_total += m_SpentQuantity;
-
- if ( m_SpentUnits )
- {
- m_SpentUnits.param1 = m_SpentQuantity;
- SetACData(m_SpentUnits);
- }
-
-
- if ( GetGame().IsServer() )
- {
- PowerGeneratorBase pg = PowerGeneratorBase.Cast(action_data.m_Target.GetObject()); // get power generator
- int consumed_fuel = pg.AddFuel( m_SpentQuantity );
- action_data.m_MainItem.AddQuantity( -consumed_fuel );
- }
-
- m_SpentQuantity = 0;
- }
- };
|