public static void ChangePenguinOutfit([NamedToggleValue(typeof(EquipmentNameGenerator), 0u)] int definitionId) { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); if (cPDataEntityCollection.TryGetComponent(cPDataEntityCollection.LocalPlayerHandle, out AvatarDetailsData component)) { Dictionary <int, TemplateDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >(); TemplateDefinition templateDefinition = dictionary[definitionId]; AvatarDefinition definitionByName = Service.Get <AvatarService>().GetDefinitionByName("penguinAvatar"); EquipmentModelDefinition equipmentDefinition = definitionByName.GetEquipmentDefinition(templateDefinition.AssetName); DCustomEquipment dCustomEquipment = default(DCustomEquipment); dCustomEquipment.DefinitionId = templateDefinition.Id; dCustomEquipment.Name = equipmentDefinition.Name; dCustomEquipment.Id = 1L + (long)definitionId; dCustomEquipment.Parts = new DCustomEquipmentPart[equipmentDefinition.Parts.Length]; for (int i = 0; i < equipmentDefinition.Parts.Length; i++) { dCustomEquipment.Parts[i].SlotIndex = equipmentDefinition.Parts[i].SlotIndex; DCustomEquipmentDecal[] decals = new DCustomEquipmentDecal[0]; dCustomEquipment.Parts[i].Decals = decals; } component.Outfit = new DCustomEquipment[1] { dCustomEquipment }; } }
private void logItemCreatedAnalytics() { StringBuilder stringBuilder = new StringBuilder("decals="); StringBuilder stringBuilder2 = new StringBuilder("fabrics="); for (int i = 0; i < itemModel.CustomEquipmentModel.Parts.Length; i++) { DCustomEquipmentPart dCustomEquipmentPart = itemModel.CustomEquipmentModel.Parts[i]; for (int j = 0; j < dCustomEquipmentPart.Decals.Length; j++) { DCustomEquipmentDecal dCustomEquipmentDecal = dCustomEquipmentPart.Decals[j]; if (dCustomEquipmentDecal.Type == EquipmentDecalType.DECAL) { stringBuilder.Append($"ch{j}:{dCustomEquipmentDecal.TextureName},"); } else if (dCustomEquipmentDecal.Type == EquipmentDecalType.FABRIC) { stringBuilder2.Append($"ch{j}:{dCustomEquipmentDecal.TextureName},"); } } } Service.Get <ICPSwrveService>().Action("game.item_purchase", itemModel.TemplateDefinition.name, $"{stringBuilder}|{stringBuilder2}"); Service.Get <ICPSwrveService>().PurchaseClothing(itemModel.TemplateDefinition.name, itemModel.TemplateDefinition.Cost, 1, Service.Get <ProgressionService>().Level); }
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); }
public static DCustomEquipment ConvertResponseToCustomEquipment(CustomEquipment data) { Dictionary <int, TemplateDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >(); DCustomEquipment result = default(DCustomEquipment); result.Id = data.equipmentId; result.DefinitionId = data.definitionId; result.DateTimeCreated = data.dateTimeCreated; if (!dictionary.ContainsKey(data.definitionId)) { Log.LogErrorFormatted(typeof(CustomEquipmentResponseAdaptor), "No known equipment template definition for id {0}", data.definitionId); throw new KeyNotFoundException(); } result.Name = dictionary[data.definitionId].AssetName; if (data.parts != null) { DCustomEquipmentPart[] array = new DCustomEquipmentPart[data.parts.Length]; for (int i = 0; i < data.parts.Length; i++) { DCustomEquipmentPart dCustomEquipmentPart = default(DCustomEquipmentPart); dCustomEquipmentPart.SlotIndex = data.parts[i].slotIndex; if (data.parts[i].customizations != null) { Dictionary <int, FabricDefinition> dictionary2 = Service.Get <GameData>().Get <Dictionary <int, FabricDefinition> >(); Dictionary <int, DecalDefinition> dictionary3 = Service.Get <GameData>().Get <Dictionary <int, DecalDefinition> >(); DCustomEquipmentDecal[] array2 = new DCustomEquipmentDecal[data.parts[i].customizations.Length]; for (int j = 0; j < array2.Length; j++) { CustomEquipmentCustomization customEquipmentCustomization = data.parts[i].customizations[j]; DCustomEquipmentDecal dCustomEquipmentDecal = default(DCustomEquipmentDecal); dCustomEquipmentDecal.DefinitionId = customEquipmentCustomization.definitionId; dCustomEquipmentDecal.Index = customEquipmentCustomization.index; dCustomEquipmentDecal.Scale = customEquipmentCustomization.scale; dCustomEquipmentDecal.Rotation = customEquipmentCustomization.rotation; dCustomEquipmentDecal.Uoffset = customEquipmentCustomization.uoffset; dCustomEquipmentDecal.Voffset = customEquipmentCustomization.voffset; switch (customEquipmentCustomization.type) { case EquipmentCustomizationType.DECAL: if (!dictionary3.ContainsKey(customEquipmentCustomization.definitionId)) { Log.LogErrorFormatted(typeof(CustomEquipmentResponseAdaptor), "No known decal template definition for id {0}", customEquipmentCustomization.definitionId); continue; } dCustomEquipmentDecal.TextureName = dictionary3[customEquipmentCustomization.definitionId].AssetName; dCustomEquipmentDecal.Repeat = customEquipmentCustomization.repeat; dCustomEquipmentDecal.Type = EquipmentDecalType.DECAL; break; case EquipmentCustomizationType.FABRIC: if (!dictionary2.ContainsKey(customEquipmentCustomization.definitionId)) { Log.LogErrorFormatted(typeof(CustomEquipmentResponseAdaptor), "No known fabric template definition for id {0}", customEquipmentCustomization.definitionId); continue; } dCustomEquipmentDecal.TextureName = dictionary2[customEquipmentCustomization.definitionId].AssetName; dCustomEquipmentDecal.Type = EquipmentDecalType.FABRIC; dCustomEquipmentDecal.Repeat = true; break; } array2[j] = dCustomEquipmentDecal; } dCustomEquipmentPart.Decals = array2; } else { dCustomEquipmentPart.Decals = new DCustomEquipmentDecal[0]; } array[i] = dCustomEquipmentPart; } result.Parts = array; } else { result.Parts = new DCustomEquipmentPart[0]; } return(result); }
public static DCustomEquipment GetModelFromCustomizerChildList(List <CustomizerChild> customizerChildList, TemplateDefinition templateDefinition, IDictionary <string, int> decalDefinitionIds) { DCustomEquipment result = default(DCustomEquipment); result.Name = templateDefinition.AssetName; result.DefinitionId = templateDefinition.Id; List <DCustomEquipmentPart> list = new List <DCustomEquipmentPart>(); for (int i = 0; i < customizerChildList.Count; i++) { if (customizerChildList[i].gameObject.activeSelf && customizerChildList[i].HasEquipment) { DCustomEquipmentPart item = default(DCustomEquipmentPart); item.SlotIndex = customizerChildList[i].SlotIndex; EquipmentShaderParams equipmentShaderParams = EquipmentShaderParams.FromMaterial(customizerChildList[i].SharedMaterial); List <DCustomEquipmentDecal> list2 = new List <DCustomEquipmentDecal>(); if (equipmentShaderParams.DecalRed1Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalRed1Texture.name)) { DCustomEquipmentDecal item2 = default(DCustomEquipmentDecal); item2.TextureName = equipmentShaderParams.DecalRed1Texture.name; item2.DefinitionId = decalDefinitionIds[item2.TextureName]; item2.Scale = equipmentShaderParams.DecalRed1Scale; item2.Uoffset = equipmentShaderParams.DecalRed1UOffset; item2.Voffset = equipmentShaderParams.DecalRed1VOffset; item2.Rotation = equipmentShaderParams.DecalRed1RotationRads; item2.Repeat = equipmentShaderParams.DecalRed1Repeat; item2.Type = EquipmentDecalType.FABRIC; item2.Index = 0; list2.Add(item2); } if (equipmentShaderParams.DecalGreen2Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalGreen2Texture.name)) { DCustomEquipmentDecal item3 = default(DCustomEquipmentDecal); item3.TextureName = equipmentShaderParams.DecalGreen2Texture.name; item3.DefinitionId = decalDefinitionIds[item3.TextureName]; item3.Scale = equipmentShaderParams.DecalGreen2Scale; item3.Uoffset = equipmentShaderParams.DecalGreen2UOffset; item3.Voffset = equipmentShaderParams.DecalGreen2VOffset; item3.Rotation = equipmentShaderParams.DecalGreen2RotationRads; item3.Repeat = equipmentShaderParams.DecalGreen2Repeat; item3.Type = EquipmentDecalType.FABRIC; item3.Index = 1; list2.Add(item3); } if (equipmentShaderParams.DecalBlue3Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalBlue3Texture.name)) { DCustomEquipmentDecal item4 = default(DCustomEquipmentDecal); item4.TextureName = equipmentShaderParams.DecalBlue3Texture.name; item4.DefinitionId = decalDefinitionIds[item4.TextureName]; item4.Scale = equipmentShaderParams.DecalBlue3Scale; item4.Uoffset = equipmentShaderParams.DecalBlue3UOffset; item4.Voffset = equipmentShaderParams.DecalBlue3VOffset; item4.Rotation = equipmentShaderParams.DecalBlue3RotationRads; item4.Repeat = equipmentShaderParams.DecalBlue3Repeat; item4.Type = EquipmentDecalType.FABRIC; item4.Index = 2; list2.Add(item4); } if (equipmentShaderParams.DecalRed4Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalRed4Texture.name)) { DCustomEquipmentDecal item5 = default(DCustomEquipmentDecal); item5.TextureName = equipmentShaderParams.DecalRed4Texture.name; item5.DefinitionId = decalDefinitionIds[item5.TextureName]; item5.Scale = equipmentShaderParams.DecalRed4Scale; item5.Uoffset = equipmentShaderParams.DecalRed4UOffset; item5.Voffset = equipmentShaderParams.DecalRed4VOffset; item5.Rotation = equipmentShaderParams.DecalRed4RotationRads; item5.Repeat = equipmentShaderParams.DecalRed4Repeat; item5.Type = EquipmentDecalType.DECAL; item5.Index = 3; list2.Add(item5); } if (equipmentShaderParams.DecalGreen5Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalGreen5Texture.name)) { DCustomEquipmentDecal item6 = default(DCustomEquipmentDecal); item6.TextureName = equipmentShaderParams.DecalGreen5Texture.name; item6.DefinitionId = decalDefinitionIds[item6.TextureName]; item6.Scale = equipmentShaderParams.DecalGreen5Scale; item6.Uoffset = equipmentShaderParams.DecalGreen5UOffset; item6.Voffset = equipmentShaderParams.DecalGreen5VOffset; item6.Rotation = equipmentShaderParams.DecalGreen5RotationRads; item6.Repeat = equipmentShaderParams.DecalGreen5Repeat; item6.Type = EquipmentDecalType.DECAL; item6.Index = 4; list2.Add(item6); } if (equipmentShaderParams.DecalBlue6Texture != null && !isIgnoredTexture(equipmentShaderParams.DecalBlue6Texture.name)) { DCustomEquipmentDecal item7 = default(DCustomEquipmentDecal); item7.TextureName = equipmentShaderParams.DecalBlue6Texture.name; item7.DefinitionId = decalDefinitionIds[item7.TextureName]; item7.Scale = equipmentShaderParams.DecalBlue6Scale; item7.Uoffset = equipmentShaderParams.DecalBlue6UOffset; item7.Voffset = equipmentShaderParams.DecalBlue6VOffset; item7.Rotation = equipmentShaderParams.DecalBlue6RotationRads; item7.Repeat = equipmentShaderParams.DecalBlue6Repeat; item7.Type = EquipmentDecalType.DECAL; item7.Index = 5; list2.Add(item7); } item.Decals = list2.ToArray(); list.Add(item); } } result.Parts = list.ToArray(); return(result); }