示例#1
0
    protected List <Attribute> listened;    // todo

    public void Generate(KalsiumObject obj)
    {
        var title   = Lang.GetStr($"{obj.identifier}_DisplayName");
        var hasDesc = Lang.TryGetStr($"{obj.identifier}_Description", out var desc);
        var hasLore = Lang.TryGetStr($"{obj.identifier}_Lore", out var lore);

        text.text  = "<line-height=115%>";
        text.text += $"<style=title>{title}</style>\n";
        if (hasDesc)
        {
            text.text += $"</line-height><style=normal>{desc}</style><line-height=115%>\n";
        }

        var props = obj.GetType()
                    .GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
                    .Where(v => typeof(Attribute).IsAssignableFrom(v.FieldType))
                    .OrderBy(field => field.MetadataToken);
        var pairs = props.Select(v => (data: v.GetValue(obj) as IAttribute, source: v.GetValue(obj.source) as IAttribute));

        foreach (var(data, source) in pairs)
        {
            var tooltip = data.TooltipText(source);
            if (!string.IsNullOrEmpty(tooltip))
            {
                text.text += $"{tooltip}\n";
            }
        }

        text.text += "</line-height>";

        if (hasLore)
        {
            text.text += $"<style=quote>{lore}</style>\n";
        }
    }
 bool IValueReceiver.TryHandleValue(object value)
 {
     if (value.Equals(this.dataObject))
     {
         return(true);
     }
     if (HasValue())
     {
         Tooltips.instance.Hide(GetTooltip(), rectTransform);
     }
     this.dataObject = null;
     if (value is KalsiumObject dataObject)
     {
         return(this.dataObject = dataObject);
     }
     return(false);
 }
示例#3
0
    private void Setup(KalsiumObject data)
    {
        TryConfigureListeners(false);
        this.data = data;
        OnReceive();

        var value = selector.GetValue(data);

        OnValue(value);
        onValue.Invoke(value);

        var other = selector.GetOther(data);

        OnOther(other);
        onOther.Invoke(other);

        var enabled = selector.GetEnabled(data);

        OnEnabled(enabled);
        onEnabled.Invoke(enabled);

        TryConfigureListeners(true);
    }
示例#4
0
 public bool TryGetById(string id, out KalsiumObject result) => TryGetById <KalsiumObject>(id, out result);
示例#5
0
 protected sealed override void ReceiveValue(KalsiumObject target)
 {
     Setup(target);
 }