本文整理汇总了C#中MyInventory.Init方法的典型用法代码示例。如果您正苦于以下问题:C# MyInventory.Init方法的具体用法?C# MyInventory.Init怎么用?C# MyInventory.Init使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MyInventory
的用法示例。
在下文中一共展示了MyInventory.Init方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
MyDebug.AssertDebug(BlockDefinition.Id.TypeId == typeof(MyObjectBuilder_Reactor));
m_reactorDefinition = BlockDefinition as MyReactorDefinition;
MyDebug.AssertDebug(m_reactorDefinition != null);
CurrentPowerOutput = 0;
m_inventory = new MyInventory(m_reactorDefinition.InventoryMaxVolume, m_reactorDefinition.InventorySize, MyInventoryFlags.CanReceive, this);
var obGenerator = (MyObjectBuilder_Reactor)objectBuilder;
m_inventory.Init(obGenerator.Inventory);
m_inventory.ContentsChanged += inventory_ContentsChanged;
m_inventory.Constraint = m_reactorDefinition.InventoryConstraint;
RefreshRemainingCapacity();
UpdateText();
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
//if (MyFakes.SHOW_DAMAGE_EFFECTS && IsWorking)
// NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME;
m_baseIdleSound = BlockDefinition.PrimarySound;
m_useConveyorSystem = obGenerator.UseConveyorSystem;
if (IsWorking)
OnStartWorking();
}
示例2: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
m_cargoDefinition = (MyCargoContainerDefinition)MyDefinitionManager.Static.GetCubeBlockDefinition(objectBuilder.GetId());
var cargoBuilder = (MyObjectBuilder_CargoContainer)objectBuilder;
m_containerType = cargoBuilder.ContainerType;
if (!Components.Has<MyInventoryBase>())
{
m_inventory = new MyInventory(m_cargoDefinition.InventorySize.Volume, m_cargoDefinition.InventorySize, MyInventoryFlags.CanSend | MyInventoryFlags.CanReceive, this);
if(MyFakes.ENABLE_MEDIEVAL_INVENTORY)
Components.Add<MyInventoryBase>(m_inventory);
if (m_containerType != null && MyFakes.RANDOM_CARGO_PLACEMENT && (cargoBuilder.Inventory == null || cargoBuilder.Inventory.Items.Count == 0))
SpawnRandomCargo();
else
m_inventory.Init(cargoBuilder.Inventory);
}
else
{
m_inventory = Components.Get<MyInventoryBase>() as MyInventory;
Debug.Assert(m_inventory != null);
//m_inventory.Owner = this;
}
if(MyPerGameSettings.InventoryMass)
m_inventory.ContentsChanged += Inventory_ContentsChanged;
m_conveyorEndpoint = new MyMultilineConveyorEndpoint(this);
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawConveyorEndpoint(m_conveyorEndpoint));
UpdateIsWorking();
}
示例3: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
var def = BlockDefinition as MyPoweredCargoContainerDefinition;
var ob = objectBuilder as MyObjectBuilder_Collector;
m_inventory = new MyInventory(def.InventorySize.Volume, def.InventorySize, MyInventoryFlags.CanSend, this);
m_inventory.Init(ob.Inventory);
m_inventory.ContentsChanged += Inventory_ContentChangedCallback;
if (Sync.IsServer && CubeGrid.CreatePhysics)
LoadDummies();
var sinkComp = new MyResourceSinkComponent();
sinkComp.Init(
MyStringHash.GetOrCompute(def.ResourceSinkGroup),
MyEnergyConstants.MAX_REQUIRED_POWER_COLLECTOR,
() => base.CheckIsWorking() ? ResourceSink.MaxRequiredInput : 0f);
ResourceSink = sinkComp;
ResourceSink.Update();
ResourceSink.IsPoweredChanged += Receiver_IsPoweredChanged;
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(ResourceSink,this));
SlimBlock.ComponentStack.IsFunctionalChanged += UpdateReceiver;
base.EnabledChanged += UpdateReceiver;
m_useConveyorSystem = ob.UseConveyorSystem;
}
示例4: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
var ob = objectBuilder as MyObjectBuilder_Collector;
var sinkComp = new MyResourceSinkComponent();
sinkComp.Init(
MyStringHash.GetOrCompute(BlockDefinition.ResourceSinkGroup),
BlockDefinition.RequiredPowerInput,
ComputeRequiredPower);
ResourceSink = sinkComp;
base.Init(objectBuilder, cubeGrid);
m_useConveyorSystem.Value = true;
if (MyFakes.ENABLE_INVENTORY_FIX)
{
FixSingleInventory();
}
if (this.GetInventory() == null)
{
MyInventory inventory = new MyInventory(BlockDefinition.InventorySize.Volume, BlockDefinition.InventorySize, MyInventoryFlags.CanSend);
Components.Add<MyInventoryBase>(inventory);
inventory.Init(ob.Inventory);
}
Debug.Assert(this.GetInventory().Owner == this, "Ownership was not set!");
if (Sync.IsServer && CubeGrid.CreatePhysics)
LoadDummies();
ResourceSink.IsPoweredChanged += Receiver_IsPoweredChanged;
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(ResourceSink,this));
SlimBlock.ComponentStack.IsFunctionalChanged += UpdateReceiver;
base.EnabledChanged += UpdateReceiver;
m_useConveyorSystem.Value = ob.UseConveyorSystem;
ResourceSink.Update();
}
示例5: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
var def = BlockDefinition as MyCargoContainerDefinition;
var ob = objectBuilder as MyObjectBuilder_Collector;
m_inventory = new MyInventory(def.InventorySize.Volume, def.InventorySize, MyInventoryFlags.CanSend, this);
m_inventory.Init(ob.Inventory);
m_inventory.ContentsChanged += Inventory_ContentChangedCallback;
if (Sync.IsServer && CubeGrid.CreatePhysics)
LoadDummies();
PowerReceiver = new MyPowerReceiver(
group: MyConsumerGroupEnum.Conveyors,
isAdaptible: false,
maxRequiredInput: MyEnergyConstants.MAX_REQUIRED_POWER_COLLECTOR,
requiredInputFunc: () => base.CheckIsWorking() ? PowerReceiver.MaxRequiredInput : 0f);
PowerReceiver.Update();
PowerReceiver.IsPoweredChanged += Receiver_IsPoweredChanged;
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(PowerReceiver,this));
SlimBlock.ComponentStack.IsFunctionalChanged += UpdateReceiver;
base.EnabledChanged += UpdateReceiver;
m_useConveyorSystem = ob.UseConveyorSystem;
}
示例6: InitInventory
private void InitInventory(MyObjectBuilder_Character characterOb)
{
bool inventoryAlreadyExists = this.GetInventory() != null;
if (!inventoryAlreadyExists)
{
if (m_characterDefinition.InventoryDefinition == null)
{
m_characterDefinition.InventoryDefinition = new MyObjectBuilder_InventoryDefinition();
}
MyInventory currentInventory = new MyInventory(m_characterDefinition.InventoryDefinition, 0);
// CH: This is very ugly, but it is caused by the fact that we don't have proper inventory definitions
// and I didn't want to add max item count to inventory constructors
currentInventory.Init(null);
if (InventoryAggregate != null)
{
InventoryAggregate.AddComponent(currentInventory);
}
else
{
Components.Add<MyInventoryBase>(currentInventory);
}
currentInventory.Init(characterOb.Inventory);
Debug.Assert(currentInventory.Owner == this, "Inventory ownership was not set!");
// Creates the aggregate inventory
MyCubeBuilder.BuildComponent.AfterCharacterCreate(this);
if (MyFakes.ENABLE_MEDIEVAL_INVENTORY && InventoryAggregate != null)
{
var internalAggregate = InventoryAggregate.GetInventory(MyStringHash.GetOrCompute("Internal")) as MyInventoryAggregate;
if (internalAggregate != null)
{
internalAggregate.AddComponent(currentInventory);
}
else
{
InventoryAggregate.AddComponent(currentInventory);
}
}
}
else if (MyPerGameSettings.ConstrainInventory())
{
MyInventory inventory = this.GetInventory();
inventory.FixInventoryVolume(m_characterDefinition.InventoryDefinition.InventoryVolume);
}
this.GetInventory().ContentsChanged += inventory_OnContentsChanged;
this.GetInventory().BeforeContentsChanged += inventory_OnBeforeContentsChanged;
this.GetInventory().BeforeRemovedFromContainer += inventory_OnRemovedFromContainer;
}
示例7: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
SyncFlag = true;
var sinkComp = new MyResourceSinkComponent();
sinkComp.Init(ProductionBlockDefinition.ResourceSinkGroup, ProductionBlockDefinition.OperationalPowerConsumption, ComputeRequiredPower);
sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged;
ResourceSink = sinkComp;
base.Init(objectBuilder, cubeGrid);
var ob = (MyObjectBuilder_ProductionBlock)objectBuilder;
if (InventoryAggregate == null)
{
InventoryAggregate = new MyInventoryAggregate();
}
if (InputInventory == null)
{
InputInventory = new MyInventory(
ProductionBlockDefinition.InventoryMaxVolume,
ProductionBlockDefinition.InventorySize,
MyInventoryFlags.CanReceive);
if (ob.InputInventory != null)
InputInventory.Init(ob.InputInventory);
}
Debug.Assert(InputInventory.Owner == this, "Ownership was not set!");
if (OutputInventory == null)
{
OutputInventory = new MyInventory(
ProductionBlockDefinition.InventoryMaxVolume,
ProductionBlockDefinition.InventorySize,
MyInventoryFlags.CanSend);
if (ob.OutputInventory != null)
OutputInventory.Init(ob.OutputInventory);
}
Debug.Assert(OutputInventory.Owner == this, "Ownership was not set!");
m_nextItemId = ob.NextItemId;
bool nextIdWasZero = m_nextItemId == 0;
base.IsWorkingChanged += CubeBlock_IsWorkingChanged;
ResourceSink.Update();
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(ResourceSink, this));
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
if (ob.Queue != null)
{
m_queue.Clear();
if (m_queue.Capacity < ob.Queue.Length)
m_queue.Capacity = ob.Queue.Length;
for (int i = 0; i < ob.Queue.Length; ++i)
{
var item = ob.Queue[i];
Debug.Assert(item.ItemId != null || nextIdWasZero, "Item index was null while next id for production block was given non-zero. This is inconsistency.");
var deserializedItem = DeserializeQueueItem(item);
Debug.Assert(deserializedItem.Blueprint != null, "Could not add item into production block's queue: Blueprint was not found.");
if (deserializedItem.Blueprint != null)
{
m_queue.Add(deserializedItem);
}
else
{
MySandboxGame.Log.WriteLine(string.Format("Could not add item into production block's queue: Blueprint {0} was not found.", item.Id));
}
}
UpdatePower();
}
m_useConveyorSystem.Value = ob.UseConveyorSystem;
m_lastUpdateTime = MySandboxGame.TotalGamePlayTimeInMilliseconds;
}
示例8: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
SyncFlag = true;
float consumption = MyEnergyConstants.MAX_REQUIRED_POWER_CONNECTOR;
if (cubeGrid.GridSizeEnum == MyCubeSize.Small)
{
consumption *= 0.01f;
}
var sinkComp = new MyResourceSinkComponent();
sinkComp.Init(
MyStringHash.GetOrCompute("Conveyors"),
consumption,
() => base.CheckIsWorking() ? ResourceSink.MaxRequiredInput : 0f
);
sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged;
ResourceSink = sinkComp;
base.Init(objectBuilder, cubeGrid);
var ob = objectBuilder as MyObjectBuilder_ShipConnector;
Vector3 inventorySize = (BlockDefinition.Size * CubeGrid.GridSize) * 0.8f; // 0.8 ~= 0.5^(1/3) to make the inventory volume approx. one half of the block size
if (MyFakes.ENABLE_INVENTORY_FIX)
{
FixSingleInventory();
}
if (this.GetInventory() == null)
{
MyInventory inventory = new MyInventory(inventorySize.Volume, inventorySize, MyInventoryFlags.CanReceive | MyInventoryFlags.CanSend);
Components.Add<MyInventoryBase>(inventory);
inventory.Init(ob.Inventory);
}
Debug.Assert(this.GetInventory().Owner == this, "Ownership was not set!");
ThrowOut.Value = ob.ThrowOut;
CollectAll.Value = ob.CollectAll;
SlimBlock.DeformationRatio = ob.DeformationRatio;
SlimBlock.ComponentStack.IsFunctionalChanged += UpdateReceiver;
base.EnabledChanged += UpdateReceiver;
ResourceSink.Update();
NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME;
if (CubeGrid.CreatePhysics)
LoadDummies();
if (Physics != null) Physics.Enabled = true;
if (m_connectorDummy != null)
{
m_connectorDummy.Enabled = true;
}
Strength.Value = ob.Strength;
if (ob.ConnectedEntityId != 0)
{
MyDeltaTransform? deltaTransform = ob.MasterToSlaveTransform.HasValue ? ob.MasterToSlaveTransform.Value : (MyDeltaTransform?)null;
if (ob.Connected)
{
// Old saves with connected connector, store ZERO into MasterToSlave transform
deltaTransform = default(MyDeltaTransform);
}
if(ob.IsMaster.HasValue == false)
{
ob.IsMaster = ob.ConnectedEntityId < EntityId;
}
IsMaster = ob.IsMaster.Value;
m_connectionState.Value = new State() {IsMaster = ob.IsMaster.Value, OtherEntityId = ob.ConnectedEntityId, MasterToSlave = deltaTransform,MasterToSlaveGrid = ob.MasterToSlaveGrid};
NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
}
IsWorkingChanged += MyShipConnector_IsWorkingChanged;
AddDebugRenderComponent(new Components.MyDebugRenderCompoonentShipConnector(this));
}
示例9: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
SyncFlag = true;
base.Init(objectBuilder, cubeGrid);
var ob = objectBuilder as MyObjectBuilder_ShipConnector;
Vector3 inventorySize = (BlockDefinition.Size * CubeGrid.GridSize) * 0.8f; // 0.8 ~= 0.5^(1/3) to make the inventory volume approx. one half of the block size
m_inventory = new MyInventory(inventorySize.Volume, inventorySize, MyInventoryFlags.CanReceive | MyInventoryFlags.CanSend, this);
m_inventory.Init(ob.Inventory);
m_throwOut = ob.ThrowOut;
m_collectAll = ob.CollectAll;
SlimBlock.DeformationRatio = ob.DeformationRatio;
float consumption = MyEnergyConstants.MAX_REQUIRED_POWER_CONNECTOR;
if (cubeGrid.GridSizeEnum == MyCubeSize.Small)
{
consumption *= 0.01f;
}
m_receiver = new MyPowerReceiver(
MyConsumerGroupEnum.Conveyors,
false,
consumption,
() => base.CheckIsWorking() ? PowerReceiver.MaxRequiredInput : 0f
);
PowerReceiver.Update();
PowerReceiver.IsPoweredChanged += Receiver_IsPoweredChanged;
SlimBlock.ComponentStack.IsFunctionalChanged += UpdateReceiver;
base.EnabledChanged += UpdateReceiver;
NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME;
if(CubeGrid.CreatePhysics)
LoadDummies();
if (Physics != null) Physics.Enabled = true;
if (m_connectorDummy != null)
{
m_connectorDummy.Enabled = true;
}
if (ob.ConnectedEntityId != 0)
{
m_previouslyConnected = ob.Connected;
m_previouslyConnectedEntityId = ob.ConnectedEntityId;
NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
}
IsWorkingChanged += MyShipConnector_IsWorkingChanged;
AddDebugRenderComponent(new Components.MyDebugRenderCompoonentShipConnector(this));
}
示例10: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
MyObjectBuilder_ConveyorSorter ob = (MyObjectBuilder_ConveyorSorter)objectBuilder;
DrainAll = ob.DrainAll;
IsWhitelist = ob.IsWhiteList;
foreach (var id in ob.DefinitionIds)
m_inventoryConstraint.Add(id);
foreach (byte b in ob.DefinitionTypes)
{
Tuple<MyObjectBuilderType, StringBuilder> tuple;
if (!CandidateTypes.TryGetValue(b, out tuple))
{
Debug.Assert(false, "type not in dictionary");
continue;
}
m_inventoryConstraint.AddObjectBuilderType(tuple.Item1);
}
m_conveyorSorterDefinition = (MyConveyorSorterDefinition)MyDefinitionManager.Static.GetCubeBlockDefinition(objectBuilder.GetId());
m_inventory = new MyInventory(m_conveyorSorterDefinition.InventorySize.Volume, m_conveyorSorterDefinition.InventorySize, MyInventoryFlags.CanSend, this);
m_inventory.Init(ob.Inventory);
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
NeedsUpdate |= Common.MyEntityUpdateEnum.EACH_100TH_FRAME | Common.MyEntityUpdateEnum.EACH_10TH_FRAME;
PowerReceiver = new MyPowerReceiver(
MyConsumerGroupEnum.Conveyors,
false,
BlockDefinition.PowerInput,
UpdatePowerInput);
PowerReceiver.IsPoweredChanged += IsPoweredChanged;
PowerReceiver.Update();
UpdateText();
}
示例11: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
MyDebug.AssertDebug(BlockDefinition.Id.TypeId == typeof(MyObjectBuilder_Reactor));
m_reactorDefinition = BlockDefinition as MyReactorDefinition;
MyDebug.AssertDebug(m_reactorDefinition != null);
SourceComp.Init(
m_reactorDefinition.ResourceSourceGroup,
new MyResourceSourceInfo
{
ResourceTypeId = MyResourceDistributorComponent.ElectricityId,
DefinedOutput = m_reactorDefinition.MaxPowerOutput,
ProductionToCapacityMultiplier = 60 * 60
});
SourceComp.HasCapacityRemainingChanged += (id, source) => UpdateIsWorking();
SourceComp.OutputChanged += Source_OnOutputChanged;
SourceComp.ProductionEnabledChanged += Source_ProductionEnabledChanged;
SourceComp.Enabled = Enabled;
base.Init(objectBuilder, cubeGrid);
var obGenerator = (MyObjectBuilder_Reactor)objectBuilder;
if (MyFakes.ENABLE_INVENTORY_FIX)
{
FixSingleInventory();
}
if (this.GetInventory() == null)
{
MyInventory inventory = new MyInventory(m_reactorDefinition.InventoryMaxVolume, m_reactorDefinition.InventorySize, MyInventoryFlags.CanReceive);
Components.Add<MyInventoryBase>(inventory);
inventory.Init(obGenerator.Inventory);
}
Debug.Assert(this.GetInventory().Owner == this, "Ownership was not set!");
this.GetInventory().Constraint = m_reactorDefinition.InventoryConstraint;
if (Sync.IsServer)
{
RefreshRemainingCapacity();
}
UpdateText();
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
m_useConveyorSystem.Value = obGenerator.UseConveyorSystem;
UpdateMaxOutputAndEmissivity();
}
示例12: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
SyncFlag = true;
base.Init(objectBuilder, cubeGrid);
var generatorBuilder = objectBuilder as MyObjectBuilder_OxygenGenerator;
InitializeConveyorEndpoint();
m_useConveyorSystem = generatorBuilder.UseConveyorSystem;
NeedsUpdate = Common.MyEntityUpdateEnum.EACH_100TH_FRAME;
m_inventory = new MyInventory(
BlockDefinition.InventoryMaxVolume,
BlockDefinition.InventorySize,
MyInventoryFlags.CanReceive,
this);
m_inventory.Constraint = BlockDefinition.InputInventoryConstraint;
m_oreConstraint = new MyInventoryConstraint(m_inventory.Constraint.Description, m_inventory.Constraint.Icon, m_inventory.Constraint.IsWhitelist);
foreach (var id in m_inventory.Constraint.ConstrainedIds)
{
if (id.TypeId != typeof(MyObjectBuilder_OxygenContainerObject))
{
m_oreConstraint.Add(id);
}
}
m_inventory.Init(generatorBuilder.Inventory);
m_inventory.ContentsChanged += m_inventory_ContentsChanged;
m_autoRefill = generatorBuilder.AutoRefill;
PowerReceiver = new MyPowerReceiver(
MyConsumerGroupEnum.Factory,
false,
BlockDefinition.OperationalPowerConsumption,
ComputeRequiredPower);
PowerReceiver.IsPoweredChanged += PowerReceiver_IsPoweredChanged;
PowerReceiver.Update();
UpdateEmissivity();
UpdateText();
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawConveyorEndpoint(m_conveyorEndpoint));
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
}
示例13: InitInventoryWithDefaults
public static void InitInventoryWithDefaults(MyInventory inventory)
{
var inventoryOb = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_Inventory>();
FillInventoryWithDefaults(inventoryOb, MySession.Static.Scenario);
inventory.Init(inventoryOb);
}
示例14: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
SyncFlag = true;
base.Init(objectBuilder, cubeGrid);
var generatorBuilder = objectBuilder as MyObjectBuilder_OxygenGenerator;
InitializeConveyorEndpoint();
m_useConveyorSystem = generatorBuilder.UseConveyorSystem;
NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;
m_inventory = new MyInventory(
BlockDefinition.InventoryMaxVolume,
BlockDefinition.InventorySize,
MyInventoryFlags.CanReceive,
this)
{
Constraint = BlockDefinition.InputInventoryConstraint
};
m_oreConstraint = new MyInventoryConstraint(m_inventory.Constraint.Description, m_inventory.Constraint.Icon, m_inventory.Constraint.IsWhitelist);
foreach (var id in m_inventory.Constraint.ConstrainedIds)
{
if (id.TypeId != typeof(MyObjectBuilder_GasContainerObject))
m_oreConstraint.Add(id);
}
m_inventory.Init(generatorBuilder.Inventory);
m_inventory.ContentsChanged += Inventory_ContentsChanged;
AutoRefill = generatorBuilder.AutoRefill;
var sourceDataList = new List<MyResourceSourceInfo>();
foreach (var producedInfo in BlockDefinition.ProducedGases)
sourceDataList.Add(new MyResourceSourceInfo
{
ResourceTypeId = producedInfo.Id,
DefinedOutput = BlockDefinition.IceConsumptionPerSecond * producedInfo.IceToGasRatio,
ProductionToCapacityMultiplier = 1
});
SourceComp.Init(BlockDefinition.ResourceSourceGroup, sourceDataList);
if (Sync.IsServer)
SourceComp.OutputChanged += Source_OutputChanged;
float iceAmount = IceAmount();
foreach (var gasId in SourceComp.ResourceTypes)
m_sourceComp.SetRemainingCapacityByType(gasId, IceToGas(gasId, iceAmount));
m_updateCounter = 0;
m_lastSourceUpdate = m_updateCounter;
ResourceSink.Init(BlockDefinition.ResourceSinkGroup, new MyResourceSinkInfo
{
ResourceTypeId = MyResourceDistributorComponent.ElectricityId,
MaxRequiredInput = BlockDefinition.OperationalPowerConsumption,
RequiredInputFunc = ComputeRequiredPower
});
ResourceSink.IsPoweredChanged += PowerReceiver_IsPoweredChanged;
ResourceSink.Update();
UpdateEmissivity();
UpdateText();
AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawConveyorEndpoint(m_conveyorEndpoint));
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
IsWorkingChanged += MyGasGenerator_IsWorkingChanged;
}
示例15: Init
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
{
base.Init(objectBuilder, cubeGrid);
MyDebug.AssertDebug(BlockDefinition.Id.TypeId == typeof(MyObjectBuilder_Reactor));
m_reactorDefinition = BlockDefinition as MyReactorDefinition;
MyDebug.AssertDebug(m_reactorDefinition != null);
SourceComp.Init(
m_reactorDefinition.ResourceSourceGroup,
new MyResourceSourceInfo
{
ResourceTypeId = MyResourceDistributorComponent.ElectricityId,
DefinedOutput = m_reactorDefinition.MaxPowerOutput,
ProductionToCapacityMultiplier = 60 * 60
});
SourceComp.HasCapacityRemainingChanged += (id, source) => UpdateIsWorking();
SourceComp.OutputChanged += Source_OnOutputChanged;
SourceComp.ProductionEnabledChanged += Source_ProductionEnabledChanged;
SourceComp.Enabled = Enabled;
m_inventory = new MyInventory(m_reactorDefinition.InventoryMaxVolume, m_reactorDefinition.InventorySize, MyInventoryFlags.CanReceive, this);
var obGenerator = (MyObjectBuilder_Reactor)objectBuilder;
m_inventory.Init(obGenerator.Inventory);
m_inventory.ContentsChanged += inventory_ContentsChanged;
m_inventory.Constraint = m_reactorDefinition.InventoryConstraint;
RefreshRemainingCapacity();
UpdateText();
SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
m_useConveyorSystem = obGenerator.UseConveyorSystem;
UpdateMaxOutputAndEmissivity();
}