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); }
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); }
public bool TryGetById(string id, out KalsiumObject result) => TryGetById <KalsiumObject>(id, out result);
protected sealed override void ReceiveValue(KalsiumObject target) { Setup(target); }