private void AddItems(MyCharacter character) { character.GetInventory(0).Clear(); var ob = MyObjectBuilderSerializer.CreateNewObject <MyObjectBuilder_PhysicalGunObject>(StartingWeaponId.SubtypeName); if (character.WeaponTakesBuilderFromInventory(StartingWeaponId)) { character.GetInventory(0).AddItems(1, ob); } if (HumanoidDefinition.InventoryContentGenerated && MyFakes.ENABLE_RANDOM_INVENTORY) { MyContainerTypeDefinition cargoContainerDefinition = MyDefinitionManager.Static.GetContainerTypeDefinition(HumanoidDefinition.InventoryContainerTypeId.SubtypeName); if (cargoContainerDefinition != null) { character.GetInventory(0).GenerateContent(cargoContainerDefinition); } else { Debug.Fail("CargoContainer type definition " + HumanoidDefinition.InventoryContainerTypeId + " wasn't found."); } } else { foreach (var weaponDef in HumanoidDefinition.InventoryItems) { ob = MyObjectBuilderSerializer.CreateNewObject <MyObjectBuilder_PhysicalGunObject>(weaponDef.SubtypeName); character.GetInventory(0).AddItems(1, ob); } } character.SwitchToWeapon(StartingWeaponId); }
public void GenerateContent(MyContainerTypeDefinition containerDefinition) { int itemNumber = MyUtils.GetRandomInt(containerDefinition.CountMin, containerDefinition.CountMax); for (int i = 0; i < itemNumber; ++i) { MyContainerTypeDefinition.ContainerTypeItem item = containerDefinition.SelectNextRandomItem(); MyFixedPoint amount = (MyFixedPoint)MyRandom.Instance.NextFloat((float)item.AmountMin, (float)item.AmountMax); if (ContainItems(1, item.DefinitionId)) { var currentAmount = GetItemAmount(item.DefinitionId); amount -= currentAmount; if (amount <= 0) { continue; } } if (MyDefinitionManager.Static.GetPhysicalItemDefinition(item.DefinitionId).HasIntegralAmounts) { amount = MyFixedPoint.Ceiling(amount); // Use ceiling to avoid amounts equal to 0 } amount = MyFixedPoint.Min(ComputeAmountThatFits(item.DefinitionId), amount); if (amount > 0) { var inventoryItem = (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(item.DefinitionId); AddItems(amount, inventoryItem); } } containerDefinition.DeselectAll(); }
public void SpawnRandomCargo() { if (m_containerType == null) { return; } MyContainerTypeDefinition containerDefinition = MyDefinitionManager.Static.GetContainerTypeDefinition(m_containerType); if (containerDefinition != null && containerDefinition.Items.Count() > 0) { int itemNumber = MyUtils.GetRandomInt(containerDefinition.CountMin, containerDefinition.CountMax); for (int i = 0; i < itemNumber; ++i) { MyContainerTypeDefinition.ContainerTypeItem item = containerDefinition.SelectNextRandomItem(); MyFixedPoint amount = (MyFixedPoint)MyRandom.Instance.NextFloat((float)item.AmountMin, (float)item.AmountMax); if (MyDefinitionManager.Static.GetPhysicalItemDefinition(item.DefinitionId).HasIntegralAmounts) { amount = MyFixedPoint.Ceiling(amount); // Use ceiling to avoid amounts equal to 0 } amount = MyFixedPoint.Min(m_inventory.ComputeAmountThatFits(item.DefinitionId), amount); if (amount > 0) { var inventoryItem = (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(item.DefinitionId); m_inventory.AddItems(amount, inventoryItem); } } containerDefinition.DeselectAll(); } }
public void SpawnRandomCargo() { if (this.m_containerType != null) { MyContainerTypeDefinition containerTypeDefinition = MyDefinitionManager.Static.GetContainerTypeDefinition(this.m_containerType); if ((containerTypeDefinition != null) && (containerTypeDefinition.Items.Length != 0)) { this.GetInventory(0).GenerateContent(containerTypeDefinition); } } }
public void SpawnRandomCargo() { if (m_containerType == null) { return; } MyContainerTypeDefinition containerDefinition = MyDefinitionManager.Static.GetContainerTypeDefinition(m_containerType); if (containerDefinition != null && containerDefinition.Items.Count() > 0) { m_inventory.GenerateContent(containerDefinition); } }
protected virtual void AddItems(MyCharacter character) { character.GetInventory(0).Clear(); if (AgentDefinition.InventoryContentGenerated) { MyContainerTypeDefinition cargoContainerDefinition = MyDefinitionManager.Static.GetContainerTypeDefinition(AgentDefinition.InventoryContainerTypeId.SubtypeName); if (cargoContainerDefinition != null) { character.GetInventory(0).GenerateContent(cargoContainerDefinition); } else { Debug.Fail("CargoContainer type definition " + AgentDefinition.InventoryContainerTypeId + " wasn't found."); } } }