예제 #1
0
 public static void SaveInventoryConfig(MyCharacter character)
 {
     if ((character != null) && MyGameService.IsActive)
     {
         ulong num;
         MyObjectBuilder_SkinInventory objectBuilder = MyObjectBuilderSerializer.CreateNewObject <MyObjectBuilder_SkinInventory>();
         objectBuilder.Character = new List <ulong>();
         objectBuilder.Color     = character.ColorMask;
         objectBuilder.Model     = character.ModelName;
         objectBuilder.Tools     = new List <ulong>();
         if (MyGameService.InventoryItems != null)
         {
             foreach (MyGameInventoryItem item in MyGameService.InventoryItems)
             {
                 if (!item.IsInUse)
                 {
                     continue;
                 }
                 MyGameInventoryItemSlot itemSlot = item.ItemDefinition.ItemSlot;
                 if (itemSlot <= MyGameInventoryItemSlot.Suit)
                 {
                     objectBuilder.Character.Add(item.ID);
                     continue;
                 }
                 if ((itemSlot - 6) <= MyGameInventoryItemSlot.Gloves)
                 {
                     objectBuilder.Tools.Add(item.ID);
                 }
             }
         }
         MyObjectBuilderSerializer.SerializeXML(Path.Combine(MyFileSystem.SavesPath, activeInventoryFile), false, objectBuilder, out num, null);
     }
 }
예제 #2
0
        public static void LoadInventoryConfig(MyEntity toolEntity, MyAssetModifierComponent skinComponent)
        {
            if (toolEntity == null)
            {
                throw new ArgumentNullException("toolEntity");
            }
            if (skinComponent == null)
            {
                throw new ArgumentNullException("skinComponent");
            }
            if (MyGameService.IsActive)
            {
                MyObjectBuilder_SkinInventory inventory;
                string path = Path.Combine(MyFileSystem.SavesPath, activeInventoryFile);
                switch (inventory.Tools)
                {
                case ((!MyFileSystem.FileExists(path) || !MyObjectBuilderSerializer.DeserializeXML <MyObjectBuilder_SkinInventory>(path, out inventory)) || ((null) || (null))):
                    break;

                default:
                {
                    IMyHandheldGunObject <MyDeviceBase> obj2 = toolEntity as IMyHandheldGunObject <MyDeviceBase>;
                    MyPhysicalItemDefinition            physicalItemDefinition = obj2.PhysicalItemDefinition;
                    MyGameInventoryItemSlot             none = MyGameInventoryItemSlot.None;
                    if (obj2 is MyHandDrill)
                    {
                        none = MyGameInventoryItemSlot.Drill;
                    }
                    else if (obj2 is MyAutomaticRifleGun)
                    {
                        none = MyGameInventoryItemSlot.Rifle;
                    }
                    else if (obj2 is MyWelder)
                    {
                        none = MyGameInventoryItemSlot.Welder;
                    }
                    else if (obj2 is MyAngleGrinder)
                    {
                        none = MyGameInventoryItemSlot.Grinder;
                    }
                    if (none != MyGameInventoryItemSlot.None)
                    {
                        List <MyGameInventoryItem> items = new List <MyGameInventoryItem>();
                        using (List <ulong> .Enumerator enumerator = inventory.Tools.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                MyGameInventoryItem item = MyGameService.InventoryItems.FirstOrDefault <MyGameInventoryItem>(delegate(MyGameInventoryItem i) {
                                        ulong itemId;
                                        return(i.ID == itemId);
                                    });
                                if ((item != null) && ((physicalItemDefinition != null) && ((physicalItemDefinition == null) || (item.ItemDefinition.ItemSlot == none))))
                                {
                                    item.IsInUse = true;
                                    items.Add(item);
                                }
                            }
                        }
                        MyGameService.GetItemsCheckData(items, checkDataResult => skinComponent.TryAddAssetModifier(checkDataResult));
                    }
                    break;
                }
                }
            }
        }