public static DialogView Create(IDialogController controller, string name, List <DialogRecord> topics, IList <CharacterService> services, float disposition) { // Display the Npc's name var instance = Instantiate(UIManager.DialogUI); instance.controller = controller; instance.title.text = name; instance.chargeUI.Initialize(disposition, 100); // Display the services foreach (var service in services) { var clone = Instantiate(instance.topicPrefab, instance.servicesParent); clone.Initialize(service.ServiceName, () => controller.DisplayService(service)); } // Display the current topics instance.currentTopics = topics; var sortedTopics = topics.OrderBy(topic => topic.name); foreach (var topic in sortedTopics) { var clone = Instantiate(instance.topicPrefab, instance.topicsParent); clone.Initialize(topic.name, () => controller.DisplayTopic(topic)); } return(instance); }
// Adds a new topic to the topic list void IDialogView.AddTopic(DialogRecord topic) { // Convert tile to title case var title = char.ToUpper(topic.name[0]) + topic.name.Substring(1); // Create the UI game object var clone = Instantiate(topicPrefab, topicsParent); clone.Initialize(title, () => controller.DisplayTopic(topic)); // Add it to the current list of topics, and sort currentTopics.Add(topic); currentTopics.Sort((x, y) => x.name.CompareTo(y.name)); // Get the index and use it to position the transform in the list correctly var index = currentTopics.IndexOf(topic); clone.transform.SetSiblingIndex(index); }