private JsonParser.Technos GetNewWord(List <JsonParser.Word> words, JsonParser.Technos techs, Word.wordType type, ref JsonParser.Technos playerStruct) { int index = 0; for (int i = 0; i < words.Count; i++) { if ((type == Word.wordType.subject && !playerStruct.words.subjects[index].useable) || (type == Word.wordType.verb && !playerStruct.words.verbs[index].useable) || (type == Word.wordType.obj && !playerStruct.words.objects[index].useable)) { index = i; break; } } if (type == Word.wordType.subject) { JsonParser.Word tmpWordsPlayer = playerStruct.words.subjects[index]; if (!tmpWordsPlayer.useable) { Notifications.Instance.gameObject.SetActive(true); Notifications.Instance.TimeVisible += 2.5f; Notifications.Instance.AddText("New Word : " + tmpWordsPlayer.name); } tmpWordsPlayer.useable = true; playerStruct.words.subjects[index] = tmpWordsPlayer; JsonParser.Word tmpWords = techs.words.subjects[index]; tmpWords.useable = true; techs.words.subjects[index] = tmpWords; } else if (type == Word.wordType.verb) { JsonParser.Word tmpWordsPlayer = playerStruct.words.verbs[index]; if (!tmpWordsPlayer.useable) { Notifications.Instance.TimeVisible += 2.5f; Notifications.Instance.AddText("New Word : " + tmpWordsPlayer.name); } tmpWordsPlayer.useable = true; playerStruct.words.verbs[index] = tmpWordsPlayer; JsonParser.Word tmpWords = techs.words.verbs[index]; tmpWords.useable = true; techs.words.verbs[index] = tmpWords; } else if (type == Word.wordType.obj) { JsonParser.Word tmpWordsPlayer = playerStruct.words.objects[index]; if (!tmpWordsPlayer.useable) { Notifications.Instance.TimeVisible += 2.5f; Notifications.Instance.AddText("New Word : " + tmpWordsPlayer.name); } tmpWordsPlayer.useable = true; playerStruct.words.objects[index] = tmpWordsPlayer; JsonParser.Word tmpWords = techs.words.objects[index]; tmpWords.useable = true; techs.words.objects[index] = tmpWords; } return(techs); }
private void Start() { _data = Player.Instance.data; var technos = _data.TechnologyTree.FindAll(x => x.useable && x.dependances.Count > 0); var general = _data.TechnologyTree.Find(x => x.name == "general"); _currentSubject = general.words.subjects[Random.Range(0, general.words.subjects.Count)]; if (technos.Count <= 0) { Player.Instance.wordKeep = true; Player.Instance.lastTurn = Player.Instance.turn; Player.Instance.DeleteWordKeeper(this.gameObject); Destroy(gameObject); return; } int index = Random.Range(0, technos.Count); var tech1 = _data.TechnologyTree.Find(x => x.name == technos[index].dependances[0]); var tech2 = _data.TechnologyTree.Find(x => x.name == technos[index].dependances[1]); if (tech1.words.verbs.Count > 0) { _currentObject = tech2.words.objects.Find(x => x.useable); _currentVerb = tech1.words.verbs.Find(x => x.useable); _wordsSets = true; _result = technos[index]; } if (tech2.words.verbs.Count > 0) { _currentObject = tech1.words.objects.Find(x => x.useable); _currentVerb = tech2.words.verbs.Find(x => x.useable); _wordsSets = true; _result = technos[index]; } if (technos[index].words.verbs.Count > 0) { _currentWord = technos[index].words.verbs.Find(x => x.useable == false); } else { _currentWord = technos[index].words.objects.Find(x => x.useable == false); } if (!_wordsSets) { Player.Instance.wordKeep = true; Player.Instance.lastTurn = Player.Instance.turn; Player.Instance.DeleteWordKeeper(this.gameObject); Destroy(gameObject); } GameObject subject = Instantiate(_prefabTechno, Vector3.zero, Quaternion.identity, _posSubject); subject.transform.localPosition = Vector3.zero; subject.transform.localScale = Vector3.one; subject.GetComponentInChildren <TextMeshProUGUI>().text = _currentSubject.name; if (Resources.Load <Sprite>(_currentSubject.name)) { subject.GetComponentInChildren <Image>().sprite = Resources.Load <Sprite>(_currentSubject.name); } GameObject verb = Instantiate(_prefabTechno, Vector3.zero, Quaternion.identity, _posVerb); verb.GetComponentInChildren <TextMeshProUGUI>().text = _currentVerb.name; verb.transform.localPosition = Vector3.zero; verb.transform.localScale = Vector3.one; if (Resources.Load <Sprite>(_currentVerb.name)) { verb.GetComponentInChildren <Image>().sprite = Resources.Load <Sprite>(_currentVerb.name); } GameObject obj = Instantiate(_prefabTechno, Vector3.zero, Quaternion.identity, _posObject); obj.GetComponentInChildren <TextMeshProUGUI>().text = _currentObject.name; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; if (Resources.Load <Sprite>(_currentObject.name)) { obj.GetComponentInChildren <Image>().sprite = Resources.Load <Sprite>(_currentObject.name); } for (int i = 0; i < _data.TechnologyTree.Count; i++) { if (!_data.TechnologyTree[i].learned) { continue; } GameObject go = Instantiate(_prefabConcept, Vector3.zero, Quaternion.identity, _panelConcept.transform); go.transform.localScale = Vector3.one; if (_data.TechnologyTree[i].name == _result.name) { go.GetComponent <Button>().onClick.AddListener(delegate { bool foundWord = false; _currentWord.useable = true; for (int j = 0; j < _result.words.verbs.Count; j++) { if (_result.words.verbs[j].name == _currentWord.name) { _result.words.verbs[j] = _currentWord; foundWord = true; break; } } if (!foundWord) { for (int j = 0; j < _result.words.objects.Count; j++) { if (_result.words.objects[j].name == _currentWord.name) { _result.words.objects[j] = _currentWord; break; } } } for (int j = 0; j < _data.TechnologyTree.Count; j++) { if (_data.TechnologyTree[j].name == _result.name) { _data.TechnologyTree[j] = _result; } } Notifications.Instance.gameObject.SetActive(true); Notifications.Instance.TimeVisible += 2.5f; Notifications.Instance.AddText("You found a new word : " + _currentWord.name); Player.Instance.data = _data; Player.Instance.wordKeep = true; Player.Instance.lastTurn = Player.Instance.turn; Player.Instance.DeleteWordKeeper(this.gameObject); Player.Instance.Close(); Destroy(gameObject); }); } else { go.GetComponent <Button>().onClick.AddListener(delegate { Notifications.Instance.gameObject.SetActive(true); Notifications.Instance.TimeVisible += 2.5f; Notifications.Instance.AddText("You didn't understand!"); Player.Instance.wordKeep = true; Player.Instance.lastTurn = Player.Instance.turn; Player.Instance.DeleteWordKeeper(this.gameObject); Player.Instance.Close(); Destroy(gameObject); }); } buttonOpen.GetComponent <Button>().onClick.AddListener(delegate { Player.Instance.Open(this.gameObject); }); buttonClose.GetComponent <Button>().onClick.AddListener(delegate { Player.Instance.Close(); }); go.GetComponentInChildren <TextMeshProUGUI>().text = _data.TechnologyTree[i].name; if (Resources.Load <Sprite>(_data.TechnologyTree[i].name)) { go.GetComponentInChildren <Image>().sprite = Resources.Load <Sprite>(_data.TechnologyTree[i].name); } } }