public static bool IsEquipmentPartEqual(DCustomEquipmentPart part1, CustomEquipmentPart part2) { if (part1.SlotIndex != part2.slotIndex) { return(false); } if (part1.Decals.Length != part2.customizations.Length) { return(false); } for (int i = 0; i < part1.Decals.Length; i++) { if (part1.Decals[i].DefinitionId != part2.customizations[i].definitionId) { return(false); } if (part1.Decals[i].Index != part2.customizations[i].index) { return(false); } if (part1.Decals[i].Repeat != part2.customizations[i].repeat) { return(false); } if (Math.Abs(part1.Decals[i].Rotation - part2.customizations[i].rotation) > float.Epsilon) { return(false); } if (Math.Abs(part1.Decals[i].Scale - part2.customizations[i].scale) > float.Epsilon) { return(false); } if (part1.Decals[i].Type != (EquipmentDecalType)part2.customizations[i].type) { return(false); } if (Math.Abs(part1.Decals[i].Uoffset - part2.customizations[i].uoffset) > float.Epsilon) { return(false); } if (Math.Abs(part1.Decals[i].Voffset - part2.customizations[i].voffset) > float.Epsilon) { return(false); } } return(true); }
public static CustomEquipment ConvertCustomEquipmentToRequest(DCustomEquipment equipment) { CustomEquipment result = default(CustomEquipment); Dictionary <int, TemplateDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >(); bool flag = false; foreach (TemplateDefinition value in dictionary.Values) { if (value.AssetName.Equals(equipment.Name)) { result.definitionId = value.Id; flag = true; break; } } if (!flag) { Log.LogFatalFormatted(typeof(CustomEquipmentResponseAdaptor), "No known equipment template definition for asset named {0}", equipment.Name); } CustomEquipmentPart[] array = new CustomEquipmentPart[equipment.Parts.Length]; for (int i = 0; i < equipment.Parts.Length; i++) { CustomEquipmentPart customEquipmentPart = default(CustomEquipmentPart); customEquipmentPart.slotIndex = equipment.Parts[i].SlotIndex; if (equipment.Parts[i].Decals != null) { Dictionary <int, FabricDefinition> dictionary2 = Service.Get <GameData>().Get <Dictionary <int, FabricDefinition> >(); Dictionary <int, DecalDefinition> dictionary3 = Service.Get <GameData>().Get <Dictionary <int, DecalDefinition> >(); CustomEquipmentCustomization[] array2 = new CustomEquipmentCustomization[equipment.Parts[i].Decals.Length]; for (int j = 0; j < equipment.Parts[i].Decals.Length; j++) { DCustomEquipmentDecal dCustomEquipmentDecal = equipment.Parts[i].Decals[j]; CustomEquipmentCustomization customEquipmentCustomization = default(CustomEquipmentCustomization); customEquipmentCustomization.index = dCustomEquipmentDecal.Index; customEquipmentCustomization.scale = dCustomEquipmentDecal.Scale; customEquipmentCustomization.rotation = dCustomEquipmentDecal.Rotation; customEquipmentCustomization.uoffset = dCustomEquipmentDecal.Uoffset; customEquipmentCustomization.voffset = dCustomEquipmentDecal.Voffset; flag = false; if (dCustomEquipmentDecal.Type == EquipmentDecalType.FABRIC) { foreach (FabricDefinition value2 in dictionary2.Values) { if (value2.AssetName.Equals(dCustomEquipmentDecal.TextureName)) { customEquipmentCustomization.type = EquipmentCustomizationType.FABRIC; customEquipmentCustomization.definitionId = value2.Id; flag = true; break; } } } else if (dCustomEquipmentDecal.Type == EquipmentDecalType.DECAL) { foreach (DecalDefinition value3 in dictionary3.Values) { if (value3.AssetName.Equals(dCustomEquipmentDecal.TextureName)) { customEquipmentCustomization.type = EquipmentCustomizationType.DECAL; customEquipmentCustomization.definitionId = value3.Id; customEquipmentCustomization.repeat = dCustomEquipmentDecal.Repeat; flag = true; break; } } } if (!flag) { Log.LogFatalFormatted(typeof(CustomEquipmentResponseAdaptor), "No known customization definition for texture {0}", dCustomEquipmentDecal.TextureName); } array2[j] = customEquipmentCustomization; } customEquipmentPart.customizations = array2; } array[i] = customEquipmentPart; } result.parts = array; return(result); }
private CustomEquipment[] randomizeOutfitParts() { Dictionary <int, TemplateDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >(); Dictionary <int, FabricDefinition> definitions = Service.Get <GameData>().Get <Dictionary <int, FabricDefinition> >(); Dictionary <int, DecalDefinition> definitions2 = Service.Get <GameData>().Get <Dictionary <int, DecalDefinition> >(); AvatarService avatarService = Service.Get <AvatarService>(); int num = avatarService.GetDefinitionByName("penguinAvatar").Slots.Length; int num2 = Enum.GetNames(typeof(DecalColorChannel)).Length / 2; int num3 = 3; CustomEquipment[] array = new CustomEquipment[num3]; List <int> list = new List <int>(); for (int i = 0; i < num3; i++) { CustomEquipment customEquipment = default(CustomEquipment); bool flag = false; int num4 = 0; while (!flag) { num4 = getRandomDefinitionId(dictionary); flag = !dictionary[num4].WorkInProgress && !list.Contains(num4); } customEquipment.definitionId = num4; list.Add(num4); customEquipment.equipmentId = UnityEngine.Random.Range(0, int.MaxValue); CustomEquipmentCustomization[] array2 = new CustomEquipmentCustomization[num2 * 2]; CustomEquipmentCustomization customEquipmentCustomization; for (int j = 0; j < num2; j++) { customEquipmentCustomization = default(CustomEquipmentCustomization); customEquipmentCustomization.definitionId = getRandomDefinitionId(definitions); customEquipmentCustomization.index = j; customEquipmentCustomization.repeat = true; customEquipmentCustomization.rotation = 0f; customEquipmentCustomization.scale = 1f; customEquipmentCustomization.type = EquipmentCustomizationType.FABRIC; customEquipmentCustomization.uoffset = 0f; customEquipmentCustomization.voffset = 0f; array2[j] = customEquipmentCustomization; } for (int j = 0; j < num2; j++) { customEquipmentCustomization = default(CustomEquipmentCustomization); customEquipmentCustomization.definitionId = getRandomDefinitionId(definitions2); customEquipmentCustomization.index = j + num2; customEquipmentCustomization.repeat = true; customEquipmentCustomization.rotation = 0f; customEquipmentCustomization.scale = 1f; customEquipmentCustomization.type = EquipmentCustomizationType.DECAL; customEquipmentCustomization.uoffset = 0f; customEquipmentCustomization.voffset = 0f; array2[j + num2] = customEquipmentCustomization; } customEquipment.parts = new CustomEquipmentPart[num]; for (int k = 0; k < num; k++) { CustomEquipmentPart customEquipmentPart = default(CustomEquipmentPart); customEquipmentPart.slotIndex = k; customEquipmentPart.customizations = array2; customEquipment.parts[k] = customEquipmentPart; } array[i] = customEquipment; } return(array); }