public override GameObject Decorate() { WearableProduct WP = GO.AddComponent <WerableProductInstance>(); BindingFlags flags = BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic; typeof(Product).GetField("displayName", flags).SetValue(WP, Name); AssetManager.Instance.registerObject(WP); switch (BodyLocation) { case bodylocation.head: WP.bodyLocation = WearableProduct.BodyLocation.HEAD; break; case bodylocation.face: WP.bodyLocation = WearableProduct.BodyLocation.FACE; break; case bodylocation.back: WP.bodyLocation = WearableProduct.BodyLocation.BACK; break; default: break; } return(base.Decorate()); }
public BodyPartBuilder AddHeadProduct(WearableProduct product) { AddStep("HEAD_PRODUCT", (handler) => { _appendFieldProductWearable(handler.Target, "headItems", product); }); return(this); }
public BodyPartBuilder AddAccessoryProduct(WearableProduct product) { AddStep("ACCESSORY_PRODUCT", (handler) => { _appendFieldProductWearable(handler.Target, "accessories", product); }); return(this); }
private void _appendFieldProductWearable(BodyPartsContainer container, String field, WearableProduct value) { FieldInfo info = typeof(BodyPartsContainer) .GetField(field, BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic); WearableProduct[] wearables = info.GetValue(container) as WearableProduct[]; if (wearables == null) { info.SetValue(container, new[] { value }); } else { Array.Resize(ref wearables, wearables.Length + 1); wearables[wearables.Length - 1] = value; info.SetValue(container, wearables); } }
public BodyPartBuilder AddFaceProduct(WearableProduct wearable) { AddStep("FACE_PRODUCT", (handler) => { _appendFieldProductWearable(handler.Target, "faceItems", wearable); }); return(this); }