Beispiel #1
0
    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);
 }