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); } }
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; } } } }