Ejemplo n.º 1
0
        private List <KeyValuePair <int, string> > ParseLinks(WikiEntry entry)
        {
            var text   = entry.Body.text;
            var opened = false;
            var link   = "";
            var pos    = -1;

            var parsedLinks = new List <KeyValuePair <int, string> >();

            for (var i = 0;
                 i < text.Length;
                 i++)
            {
                if (text[i] == '[')
                {
                    opened = true;
                    pos    = i;
                }

                if (opened)
                {
                    link += text[i];
                }

                if (text[i] == ']')
                {
                    opened = false;
                    parsedLinks.Add(new KeyValuePair <int, string>(pos, link));
                    pos  = -1;
                    link = "";
                }
            }

            return(parsedLinks);
        }
Ejemplo n.º 2
0
        public void DisplayWikiEntryById(string id)
        {
            if (!_data.ContainsKey(id))
            {
                Debug.LogError("Key " + id + " not found in WikiEntry Data. Wiki: " + WikiPath);
            }

            HideAllEntries();

            WikiEntry entry;

            if (_createdEntries.ContainsKey(id))
            {
                entry = _createdEntries[id];
            }
            else
            {
                var data = _data[id];
                entry            = Instantiate(WikiEntryPrefab, EntriesGo.transform, false);
                entry.Title.text = data.Title;
                entry.Body.text  = data.BodyText;
                entry.Id         = id;
                HandleDataLinksInEntry(entry);
                _createdEntries[id] = entry;
            }

            entry.gameObject.SetActive(true);
            CurrentDisplayWikiEntry = entry;

            GameManager.Instance.TasklistScreenBehaviour.ReportTaskProgress(BonusTaskType.Wiki);
        }
Ejemplo n.º 3
0
        private void HandleDataLinksInEntry(WikiEntry entry)
        {
            var links         = ParseLinks(entry);
            var legalTemplate = "<link=\"{id}\"><color=\"blue\">{id}</color></link>";
            var text          = entry.Body.text;

            links.ForEach(link =>
            {
                var id         = link.Value.Trim('[').Trim(']');
                var linkedText = legalTemplate.Replace("{id}", id);
                text           = text.Replace(link.Value, linkedText);
            });
            entry.Body.text = text;
        }