예제 #1
0
        private void AddItemToInventoryPrivate(MyInventoryItem item)
        {
            if (IsDisabled(item))
            {
                MyInventory.CloseInventoryItem(item);
            }
            else
            {
                if (InventorySynchronizer != null && InventorySynchronizer.MustBeSynchronized())
                {
                    InventorySynchronizer.AddInventoryItemForSynchronization(item);
                }
                else
                {
                    if (!UnlimitedCapacity)
                    {
                        if (m_inventoryItems.Count >= m_maxItems)
                        {
                            throw new Exception("Inventory has full capacity");
                        }
                    }

                    item.OnAmountChange += m_onItemAmountChangeHandler;
                    item.Owner           = this;
                    m_inventoryItems.Add(item);
                    OnAmountChange(item, item.Amount);

                    if (UnlimitedCapacity)
                    {
                        MaxItems = Math.Max(m_inventoryItems.Count, MaxItems);
                    }
                }
            }
        }
예제 #2
0
 private void CloseInventoryItemsPrivate()
 {
     foreach (MyInventoryItem item in m_inventoryItems)
     {
         item.OnAmountChange -= m_onItemAmountChangeHandler;
         MyInventory.CloseInventoryItem(item);
     }
 }
 public void Close()
 {
     foreach (KeyValuePair <int, MyInventoryItem> inventoryItemKVP in m_itemsWithKeys)
     {
         MyInventory.CloseInventoryItem(inventoryItemKVP.Value);
     }
     m_itemsWithKeys.Clear();
 }
 public void RemoveItem(int key, bool closeItem = true)
 {
     if (closeItem)
     {
         MyInventory.CloseInventoryItem(GetItem(key));
     }
     m_itemsWithKeys.Remove(key);
 }
예제 #5
0
        private bool RemoveItemFromInventoryPrivate(MyInventoryItem item, bool closeInventoryItem)
        {
            bool result = m_inventoryItems.Remove(item);

            item.OnAmountChange -= m_onItemAmountChangeHandler;
            if (item.Amount > 0f)
            {
                OnAmountChange(item, -item.Amount);
            }
            if (closeInventoryItem)
            {
                MyInventory.CloseInventoryItem(item);
            }
            else
            {
                item.Owner = null;
            }
            return(result);
        }
예제 #6
0
        public void Close()
        {
            foreach (var item in m_inventoryItemsToAdd)
            {
                MyInventory.CloseInventoryItem(item);
            }
            m_inventoryItemsToAdd.Clear();
            m_inventoryItemsToAdd = null;

            m_inventoryItemsAmountChanges.Clear();
            m_inventoryItemsAmountChanges = null;

            m_inventoryItemsHelper.Clear();
            m_inventoryItemsHelper = null;

            m_mustBeInventorySynchronizedDelegate = null;

            m_inventory = null;

            //MyMinerGame.OnGameUpdate -= MyMinerGame_OnGameUpdate;
        }
예제 #7
0
        /// <summary>
        /// Fills inventory with all items
        /// </summary>
        /// <param name="maxItems">Max items limit</param>
        public void FillInventoryWithAllItems(int?maxItems = null, int?increaseMaxItemsAbout = null, bool loadSmallShips = false)
        {
            if (maxItems != null)
            {
                MaxItems = maxItems.Value;
            }
            MyInventoryItem        inventoryItem;
            List <MyInventoryItem> inventoryItemsToAdd = new List <MyInventoryItem>();

            // ammo
            foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues)
            {
                inventoryItem        = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Ammo(item));
                inventoryItem.Amount = inventoryItem.MaxAmount;
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // engines
            foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues)
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Engine(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // weapons
            foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues)
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Weapon(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // tools
            foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ToolEnumValues)
            {
                inventoryItem        = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Tool(item));
                inventoryItem.Amount = inventoryItem.MaxAmount;
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // armors
            foreach (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum)))
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Armor(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // radars
            foreach (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum)))
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Radar(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // blueprints
            foreach (MyMwcObjectBuilder_Blueprint_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Blueprint_TypesEnum)))
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Blueprint(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            //ore
            foreach (MyMwcObjectBuilder_Ore_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Ore_TypesEnum)))
            {
                inventoryItem        = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Ore(item));
                inventoryItem.Amount = 1;
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // fakeId
            foreach (MyMwcObjectBuilder_FactionEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum)))
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_FalseId(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // hacking tool
            foreach (MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum)))
            {
                inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_HackingTool(item));
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // drone
            foreach (MyMwcObjectBuilder_Drone_TypesEnum droneType in Enum.GetValues(typeof(MyMwcObjectBuilder_Drone_TypesEnum)))
            {
                var droneBuilder = new MyMwcObjectBuilder_Drone(droneType);
                inventoryItem        = CreateInventoryItemFromObjectBuilder(droneBuilder);
                inventoryItem.Amount = inventoryItem.MaxAmount;
                inventoryItemsToAdd.Add(inventoryItem);
            }
            // playerships
            if (loadSmallShips)
            {
                foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum)))
                {
                    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(shipType, MySession.PlayerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity));
                    inventoryItemsToAdd.Add(inventoryItem);
                }
            }

            //// prefabs
            //foreach(MyMwcObjectBuilder_Prefab_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_TypesEnum))) {
            //    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Prefab(item, new MyMwcVector3Short(0, 0, 0), new Vector3(0, 0, 0), MyGameplayConstants.MAXHEALTH_PREFAB));
            //    inventoryItemsToAdd.Add(inventoryItem);
            //}
            //// small debris
            //foreach (MyMwcObjectBuilder_SmallDebris_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum)))
            //{
            //    inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallDebris(item, true));
            //    inventoryItemsToAdd.Add(inventoryItem);
            //}
            // foundation factory
            inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT));
            inventoryItemsToAdd.Add(inventoryItem);

            if (maxItems != null && !UnlimitedCapacity)
            {
                while (inventoryItemsToAdd.Count > maxItems.Value)
                {
                    int lastIndex = inventoryItemsToAdd.Count - 1;
                    inventoryItem = inventoryItemsToAdd[lastIndex];
                    inventoryItemsToAdd.RemoveAt(lastIndex);
                    MyInventory.CloseInventoryItem(inventoryItem);
                }
            }
            else
            {
                if (inventoryItemsToAdd.Count > MaxItems)
                {
                    MaxItems = inventoryItemsToAdd.Count;
                }
            }
            if (increaseMaxItemsAbout != null)
            {
                MaxItems += increaseMaxItemsAbout.Value;
            }
            AddInventoryItems(inventoryItemsToAdd);
        }