public object GetName(object obj) { var n = (obj as IRecord)?.Index ?? -1; switch (obj) { case SavedGame data: var header = data.header; var day = (int)(header.date / 24) + 1; return($"{header.savegame_name} (day {day})"); case GroupsDefinition groupsDef: return("Groups"); case GroupDefinition groupDef: //var ranges = groupDef.Ranges.Select(range => $"{range.LowerBound}..{range.UpperBound}"); //return $"{groupDef.Name} ({string.Join(", ", ranges)})"; return(groupDef.Name); case IHasName hasName: { var name = hasName.Name; if (obj is Party party && party.IsPresent && string.IsNullOrEmpty(name)) { name = party.party_template_id.Entity.Name; if (name != null) { name = "<" + name + ">"; } } if (string.IsNullOrEmpty(name)) { if (obj is IRecord record) { return(record.Index); } } return(name); } case IHasId hasId: return(hasId.Id); case IRecord record: { var name = record.Type.Name; if (record.Index >= 0) { name += " #" + record.Index; } return(name); } case ICollection coll: return(CultureInfo.CurrentUICulture.TextInfo.ToTitleCase(FriendlyNames.Plural(coll.ItemType))); default: return(null); } }
public string GetToolTip(object obj) { if (obj is SavedGame data) { return(data.Game.FileName); } else if (obj is IRecord record) { var s = record.Index.ToString(); if (obj is IHasId hasId) { s = $"{hasId.Id} ({s})"; } return(s); } else { return(FriendlyNames.Describe(obj)); } }