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); }
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); }
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; }