public void Initialize(Quest quest) { if (objectivesHeader != null) { objectivesHeader.text = "OBJECTIVES"; } if (questName != null) { questName.text = quest.questName.ToUpper(); } if (description != null) { description.text = quest.description; } // Destroy all children for (int i = 0; i < objectivesListTransform.childCount; i++) { Destroy(objectivesListTransform.GetChild(i).gameObject); } // Add objectives to list foreach (Objective obj in quest.objectives) { ObjectiveDisplay display = Instantiate(objectiveDisplayPrefab) as ObjectiveDisplay; display.transform.SetParent(objectivesListTransform, false); display.Initialize(obj); } }
}//SetMessageText public void UpdateObjectivesList(ObjectiveStatus[] objectives) { if (objectiveDisplayList == null) { objectiveDisplayList = new List<ObjectiveDisplay>(); } //Do some error checking here to make sure that these elements aren't null. for (int i = 0; i < objectives.Length; ++i) { if (i >= objectiveDisplayList.Count) { Text newText = GameObject.Instantiate<Text>(objectiveTextBase); newText.text = objectives[i].description; Image newImage; if (objectives[i].complete) { newImage = GameObject.Instantiate<Image>(objectiveCompleteImage); newText.color = objectiveCompleteColor; } else { newImage = GameObject.Instantiate<Image>(objectiveIncompleteImage); newText.color = objectiveIncompleteColor; } newImage.rectTransform.SetParent(objectivePanel, false); newText.rectTransform.SetParent(objectivePanel, false); newImage.rectTransform.position = new Vector3( newImage.rectTransform.position.x, newImage.rectTransform.position.y - (i * objectiveSpacing)); newText.rectTransform.position = new Vector3( objectiveImageOffset + newText.rectTransform.position.x, newText.rectTransform.position.y - (i * objectiveSpacing)); ObjectiveDisplay newObjective = new ObjectiveDisplay(newImage, newText); objectiveDisplayList.Add(newObjective); } else { objectiveDisplayList[i].image.gameObject.SetActive(true); objectiveDisplayList[i].text.gameObject.SetActive(true); if (objectives[i].complete) { objectiveDisplayList[i].image.sprite = objectiveCompleteImage.sprite; objectiveDisplayList[i].text.color = objectiveCompleteColor; } else { objectiveDisplayList[i].image.sprite = objectiveIncompleteImage.sprite; objectiveDisplayList[i].text.color = objectiveIncompleteColor; } objectiveDisplayList[i].text.text = objectives[i].description; } } //Turn off any display objectives that aren't needed. for (int i = objectives.Length; i < objectiveDisplayList.Count; ++i) { objectiveDisplayList[i].image.gameObject.SetActive(false); objectiveDisplayList[i].text.gameObject.SetActive(false); } }//UpdateObjectivesList