Пример #1
0
    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);
    }
Пример #2
0
    // 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);
    }