Пример #1
0
 public void AddTurn()
 {
     for (int i = 0; i < data.TechnologyTree.Count; i++)
     {
         if (data.TechnologyTree[i].useable && !data.TechnologyTree[i].learned)
         {
             JsonParser.Technos tech = data.TechnologyTree[i];
             tech.time -= 1;
             if (tech.time <= 0)
             {
                 JsonParser.Technos tmpStructPlayer = Player.Instance.data.TechnologyTree[i];
                 Notifications.Instance.gameObject.SetActive(true);
                 Notifications.Instance.TimeVisible += 2.5f;
                 Notifications.Instance.AddText("New Technology " + gameObject.name + " : " + tech.name);
                 tech.learned            = true;
                 tmpStructPlayer.learned = true;
                 Player.Instance.data.TechnologyTree[i] = tmpStructPlayer;
                 data.TechnologyTree[i] = tech;
                 // _subjects.OnDisable();
                 _subjects.OnEnable();
                 // _objects.OnDisable();
                 _objects.OnEnable();
                 // _verbs.OnDisable();
                 _verbs.OnEnable();
                 if (tech.name == "aerospatial")
                 {
                     Player.Instance.Done("End");
                 }
             }
             else
             {
                 data.TechnologyTree[i] = tech;
             }
         }
     }
 }
Пример #2
0
    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);
    }
Пример #3
0
    public void ExecuteResult()
    {
        _words = _resultPanel.GetComponentsInChildren <Word>();
        if (_words.Length != 3)
        {
            return;
        }
        List <string> techs = new List <string>();

        for (int i = 0; i < _words.Length; i++)
        {
            if (_words[i].type != Word.wordType.subject)
            {
                techs.Add(_words[i].technos.name);
            }
        }
        int count = 0;

        _techFound = false;
        for (int i = 0; i < data.TechnologyTree.Count; i++)
        {
            if (data.TechnologyTree[i].dependances.Contains(techs[count]))
            {
                count++;
                while (count < techs.Count)
                {
                    if (data.TechnologyTree[i].dependances.Contains(techs[count]))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }

                if (count == techs.Count)
                {
                    // Player.Instance.AddTurn();
                    _techFound = true;
                    JsonParser.Technos tmpStruct = data.TechnologyTree[i];
                    if (tmpStruct.useable)
                    {
                        Notifications.Instance.gameObject.SetActive(true);
                        Notifications.Instance.TimeVisible += 2.5f;
                        Notifications.Instance.AddText(tmpStruct.name + " already known!");
                        tmpObject  = Vector4.zero;
                        tmpSubject = Vector4.zero;
                        tmpVerb    = Vector4.zero;
                        break;
                    }
                    else
                    {
                        Notifications.Instance.gameObject.SetActive(true);
                        Notifications.Instance.TimeVisible += 2.5f;
                        Notifications.Instance.AddText(this.gameObject.name + " start to research : " + tmpStruct.name);
                    }

                    JsonParser.Technos tmpStructPlayer = Player.Instance.data.TechnologyTree[i];

                    // if (!tmpStructPlayer.useable)
                    // {
                    //     Notifications.Instance.gameObject.SetActive(true);
                    //     Notifications.Instance.TimeVisible += 2.5f;
                    //     Notifications.Instance.AddText("New Technology Player : " + tmpStructPlayer.name);
                    // }
                    if (tmpStruct.limits[0] > _currentValues.x || tmpStruct.limits[1] > _currentValues.y ||
                        tmpStruct.limits[2] > _currentValues.z || tmpStruct.limits[3] > _currentValues.w)
                    {
                        tmpObject  = Vector4.zero;
                        tmpSubject = Vector4.zero;
                        tmpVerb    = Vector4.zero;
                        break;
                    }

                    tmpStruct.useable = true;

                    if (tmpStruct.type == "religion")
                    {
                        tmpStruct.time *= 1 - (_religion.value / 100f);
                    }
                    else if (tmpStruct.type == "social")
                    {
                        tmpStruct.time *= 1 - (_social.value / 100f);
                    }
                    else if (tmpStruct.type == "science")
                    {
                        tmpStruct.time *= 1 - (_science.value / 100f);
                    }
                    else if (tmpStruct.type == "conquest")
                    {
                        tmpStruct.time *= 1 - (_conquest.value / 100f);
                    }

                    tmpStructPlayer.useable = true;

                    _currentValues += Vector4.Scale((tmpObject + tmpVerb), tmpSubject * (_trustIndice.value / 100f));
                    _religion.value = _currentValues.x;
                    _social.value   = _currentValues.y;
                    _science.value  = _currentValues.z;
                    _conquest.value = _currentValues.w;

                    _trustIndice.value = 100f - (Mathf.Max(Mathf.Max(_currentValues.x, _currentValues.y),
                                                           Mathf.Max(_currentValues.z, _currentValues.w)) -
                                                 Mathf.Min(Mathf.Min(_currentValues.x, _currentValues.y),
                                                           Mathf.Min(_currentValues.z, _currentValues.w)));
                    tmpObject  = Vector4.zero;
                    tmpSubject = Vector4.zero;
                    tmpVerb    = Vector4.zero;
                    if (_trustIndice.value > 50f)
                    {
                        if (tmpStruct.words.subjects.Count > 0)
                        {
                            tmpStruct = GetNewWord(tmpStruct.words.subjects, tmpStruct, Word.wordType.subject,
                                                   ref tmpStructPlayer);
                        }
                        else if (tmpStruct.words.verbs.Count > 0)
                        {
                            tmpStruct = GetNewWord(tmpStruct.words.verbs, tmpStruct, Word.wordType.verb,
                                                   ref tmpStructPlayer);
                        }
                        else if (tmpStruct.words.objects.Count > 0)
                        {
                            tmpStruct = GetNewWord(tmpStruct.words.objects, tmpStruct, Word.wordType.obj,
                                                   ref tmpStructPlayer);
                        }
                    }
                    else if (_trustIndice.value < 10f)
                    {
                        done = true;
                        Player.Instance.Done("trust");
                        Player.Instance.Close();
                        _open.SetActive(false);
                        _openButton.SetActive(true);
                    }

                    data.TechnologyTree[i] = tmpStruct;
                    Player.Instance.data.TechnologyTree[i] = tmpStructPlayer;
                    if (_religion.value >= 100f || _religion.value <= 10f)
                    {
                        done = true;
                        Player.Instance.Done("religion");
                        Player.Instance.Close();
                        _open.SetActive(false);
                        _openButton.SetActive(true);
                    }

                    if (_social.value >= 100f || _social.value <= 10f)
                    {
                        done = true;
                        Player.Instance.Done("social");
                        Player.Instance.Close();
                        _open.SetActive(false);
                        _openButton.SetActive(true);
                    }

                    if (_science.value >= 100f || _science.value <= 10f)
                    {
                        done = true;
                        Player.Instance.Done("science");
                        Player.Instance.Close();
                        _open.SetActive(false);
                        _openButton.SetActive(true);
                    }
                    if (_conquest.value >= 100f || _conquest.value <= 10f)
                    {
                        done = true;
                        Player.Instance.Done("conquest");
                        Player.Instance.Close();
                        _open.SetActive(false);
                        _openButton.SetActive(true);
                    }

                    break;
                }
                else
                {
                    count = 0;
                }
            }
        }

        if (!_techFound)
        {
            tmpObject  = Vector4.zero;
            tmpSubject = Vector4.zero;
            tmpVerb    = Vector4.zero;
        }

        // _subjects.OnDisable();
        // _subjects.OnEnable();
        // _objects.OnDisable();
        // _objects.OnEnable();
        // _verbs.OnDisable();
        // _verbs.OnEnable();

        for (int i = 0; i < _words.Length; i++)
        {
            Destroy(_words[i].gameObject);
        }
    }
Пример #4
0
    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);
            }
        }
    }