Esempio n. 1
0
        public InventoryEditorModel(MyObjectBuilder_Inventory inventory, float maxVolume, MyObjectBuilder_Character character = null)
        {
            _inventory = inventory;
            _maxVolume = maxVolume;
            _character = character;
            UpdateGeneralFromEntityBase();

            // Cube.InventorySize.X * CUbe.InventorySize.Y * CUbe.InventorySize.Z * 1000 * Sandbox.InventorySizeMultiplier;
            // or Cube.InventoryMaxVolume * 1000 * Sandbox.InventorySizeMultiplier;
            //Character.Inventory = 0.4 * 1000 * Sandbox.InventorySizeMultiplier;
        }
        private static InventoryEditorModel ParseInventory(MyObjectBuilder_Inventory inventory, MyCubeBlockDefinition definition = null)
        {
            if (inventory == null)
                return null;
            float volumeMultiplier = 1f; // Unsure if there should be a default of 1 if there isn't a InventorySize defined.

            if (definition == null)
                volumeMultiplier = 0.4f;
            else
            {
                var definitionType = definition.GetType();
                var invSizeField = definitionType.GetField("InventorySize");
                var inventoryMaxVolumeField = definitionType.GetField("InventoryMaxVolume");
                if (invSizeField != null)
                {
                    var invSize = (Vector3)invSizeField.GetValue(definition);
                    volumeMultiplier = invSize.X * invSize.Y * invSize.Z;
                }
                if (inventoryMaxVolumeField != null)
                {
                    var maxSize = (float)inventoryMaxVolumeField.GetValue(definition);
                    volumeMultiplier = MathHelper.Min(volumeMultiplier, maxSize);
                }
            }

            var settings = SpaceEngineersCore.WorldResource.Checkpoint.Settings;
            return new InventoryEditorModel(inventory, volumeMultiplier * 1000 * settings.InventorySizeMultiplier, null) { Name = inventory.InventoryFlags.ToString(), IsValid = true };
        }
Esempio n. 3
0
        public static void FillInventoryWithDefaults(MyObjectBuilder_Inventory inventory, MyScenarioDefinition scenario)
        {
            if (inventory.Items == null)
                inventory.Items = new List<MyObjectBuilder_InventoryItem>();
            else
                inventory.Items.Clear();

            if (scenario != null && MySession.Static.Settings.SpawnWithTools)
            {
                MyStringId[] guns;
                if (MySession.Static.CreativeMode)
                    guns = scenario.CreativeModeWeapons;// new string[] { "AngleGrinderItem", "AutomaticRifleItem", "HandDrillItem", "WelderItem" };
                else
                    guns = scenario.SurvivalModeWeapons;// new string[] { "AngleGrinderItem", "HandDrillItem", "WelderItem" };

                uint itemId = 0;
                if (guns != null)
                {
                    foreach (var gun in guns)
                    {
                        var inventoryItem = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_InventoryItem>();
                        inventoryItem.Amount = 1;
                        inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_PhysicalGunObject>(gun.ToString());
                        inventoryItem.ItemId = itemId++;
                        inventory.Items.Add(inventoryItem);
                    }
                    inventory.nextItemId = itemId;
                }

                MyScenarioDefinition.StartingItem[] items;
                if (MySession.Static.CreativeMode)
                    items = scenario.CreativeModeComponents;
                else
                    items = scenario.SurvivalModeComponents;

                if (items != null)
                {
                    foreach (var item in items)
                    {
                        var inventoryItem = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_InventoryItem>();
                        inventoryItem.Amount = item.amount;
                        inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_Component>(item.itemName.ToString());
                        inventoryItem.ItemId = itemId++;
                        inventory.Items.Add(inventoryItem);
                    }
                    inventory.nextItemId = itemId;
                }

                MyScenarioDefinition.StartingPhysicalItem[] physicalItems;
                if (MySession.Static.CreativeMode)
                    physicalItems = scenario.CreativeModePhysicalItems;
                else
                    physicalItems = scenario.SurvivalModePhysicalItems;

                if (physicalItems != null)
                {
                    foreach (var item in physicalItems)
                    {
                        var inventoryItem = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_InventoryItem>();
                        inventoryItem.Amount = item.amount;
                        if (item.itemType.ToString().Equals("Ore"))
                        {
                            inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_Ore>(item.itemName.ToString());
                        }
                        else if (item.itemType.ToString().Equals("Ingot"))
                        {
                            inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_Ingot>(item.itemName.ToString());
                        }
                        else if (item.itemType.ToString().Equals("OxygenBottle"))
                        {
                            inventoryItem.Amount = 1;
                            inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_OxygenContainerObject>(item.itemName.ToString());
                            (inventoryItem.PhysicalContent as MyObjectBuilder_GasContainerObject).GasLevel = (float)item.amount;
                        }
                        else if (item.itemType.ToString().Equals("GasBottle"))
                        {
                            inventoryItem.Amount = 1;
                            inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_GasContainerObject>(item.itemName.ToString());
                            (inventoryItem.PhysicalContent as MyObjectBuilder_GasContainerObject).GasLevel = (float)item.amount;
                        }
                        inventoryItem.ItemId = itemId++;
                        inventory.Items.Add(inventoryItem);
                    }
                    inventory.nextItemId = itemId;
                }

                if (MySession.Static.CreativeMode)
                    items = scenario.CreativeModeAmmoItems;
                else
                    items = scenario.SurvivalModeAmmoItems;

                if (items != null)
                {
                    foreach (var item in items)
                    {
                        var inventoryItem = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_InventoryItem>();
                        inventoryItem.Amount = item.amount;
                        inventoryItem.PhysicalContent = MyObjectBuilderSerializer.CreateNewObject<MyObjectBuilder_AmmoMagazine>(item.itemName.ToString());
                        inventoryItem.ItemId = itemId++;
                        inventory.Items.Add(inventoryItem);
                    }
                    inventory.nextItemId = itemId;
                }

                MyObjectBuilder_InventoryItem[] inventoryItems = MySession.Static.CreativeMode ? scenario.CreativeInventoryItems : scenario.SurvivalInventoryItems;
                if (inventoryItems != null)
                {
                    foreach (var ob in inventoryItems)
                    {
                        var item = ob.Clone() as MyObjectBuilder_InventoryItem;
                        item.ItemId = itemId++;
                        inventory.Items.Add(item);
                    }
                    inventory.nextItemId = itemId;
                }
            }
        }