Пример #1
0
    private void UpdateQuests()
    {
        if (_activeQuests == null) _activeQuests = new List<QuestContainer>();

        foreach (Quest q in QuestManager.Instance.ActiveQuests)
        {
            QuestContainer container = new QuestContainer();
            container.ActiveTaskStatus = new List<bool>();
            container.ActiveTaskTargetsCounter = new List<int>();

            //Если квест по текущему ключу еще не сохранен, тогда создается квест-контейнер, содержащий данные о каждом задании и добавляется в общий лист квест-контейнеров
            if (!_activeQuests.Any(c => c.ActiveQuestKey == q.Key))
            {
                container.ActiveQuestKey = q.Key;
                foreach (Task task in q.Tasks)
                {
                    container.ActiveTaskStatus.Add(task.Status);
                    container.ActiveTaskTargetsCounter.Add(task.TaskTargetsAmountCounter);
                }
                _activeQuests.Add(container);
            }
            //Иначе обновляем данные в квест-контейнерах, которые будут сохранены
            else
            {
                foreach (Task task in q.Tasks)
                {
                    _activeQuests[QuestManager.Instance.ActiveQuests.IndexOf(q)].ActiveTaskStatus[q.Tasks.IndexOf(task)] = task.Status;
                    _activeQuests[QuestManager.Instance.ActiveQuests.IndexOf(q)].ActiveTaskTargetsCounter[q.Tasks.IndexOf(task)] = task.TaskTargetsAmountCounter;
                }
            }
        }
    }
    public void respawn()
    {
        if (onPlayerRespawnHandler != null)
        {
            onPlayerRespawnHandler();
        }
        GameObject player = Instantiate(playerPrefab, this.transform.position, Quaternion.identity);

        GameObject.Find("Main Camera").GetComponent <follow>().target = player.transform;
        PlayerStatus ps  = player.GetComponent <PlayerStatus>();
        PlayerStatus ops = currentPlayer.GetComponent <PlayerStatus>();

        ps.hpSlider  = ops.hpSlider;
        ps.spSlider  = ops.spSlider;
        ps.expSlider = ops.expSlider;
        ps.hpText    = ops.hpText;
        ps.spText    = ops.spText;
        ps.expText   = ops.expText;
        ps.levelText = ops.levelText;
        ps.uiRespawn = ops.uiRespawn;
        QuestContainer oqc = currentPlayer.GetComponent <QuestContainer>();

        PlayerStatus.copyStatus(ps, ops);
        ps.recoverStatus();
        GameObject.Find("Camera_Avatar").GetComponent <follow>().target = player.transform.GetChild(0).transform;
        Destroy(currentPlayer);
        currentPlayer = player;
        player.GetComponent <QuestContainer>().copyQuestContainer(oqc); // copy quest container from old character
    }
Пример #3
0
    public void enterWorld()
    {
        // Set target for main camera to follow
        GameObject mainCamera = GameObject.FindGameObjectWithTag("MainCamera");

        mainCamera.transform.position              = playerSystem.transform.GetChild(0).transform.position;
        mainCamera.GetComponent <follow>().target  = playerSystem.transform.GetChild(0);
        mainCamera.GetComponent <follow>().enabled = true;
        // Set Gameplay UI to show up [child 2 of UI gameobject]
        loading.transform.parent.GetChild(1).gameObject.SetActive(true);
        //////////// Quest Part //////////////
        // Quest Success
        QuestContainer qcont = playerSystem.transform.GetChild(0).GetComponent <QuestContainer>();

        int[] questSuccessId = selectCharacter.GetQuestSuccess();
        foreach (int questID in questSuccessId)
        {
            Quest quest = QuestManager.GetQuestByID(questID);
            qcont.AddSuccessQuest(quest);
        }
        // Quest Process
        Dictionary <int, int> questProcess = selectCharacter.GetQuestProcess();

        foreach (KeyValuePair <int, int> data in questProcess)
        {
            Quest quest = QuestManager.GetQuestByID(data.Key);
            qcont.AddProcessQuest(quest, data.Value);
        }
        //////////// Quest Part //////////////
        // Enter world will auto fade loading screen off when finished load
        GameObject.Find("EnterGame").GetComponent <EnterGame>().EnterWorld(selectCharacter.GetCurrentMap());
    }
Пример #4
0
    public void SetQuest(Quest quest)
    {
        QuestContainer container = new QuestContainer();

        container.ContainedQuest = quest;
        loadedQuest = quest;
    }
Пример #5
0
    /* Inicialización de misiones activas */
    private void SetActiveQuest()
    {
        QuestContainer qc = QuestContainer.Load(path);

        activeQuests[0] = qc.quests[DataManager.GetActiveMissionsIndex(0)];
        activeQuests[1] = qc.quests[DataManager.GetActiveMissionsIndex(1)];
        activeQuests[2] = qc.quests[DataManager.GetActiveMissionsIndex(2)];
    }
 public void toggleActive(bool toggle, QuestContainer container)
 {
     this.image.enabled = toggle;
     this.closeButton.SetActive(toggle);
     container.isClicked = toggle;
     foreach (Transform childTransform in this.transform.getAllChildren())
     {
         childTransform.gameObject.SetActive(toggle);
     }
 }
    public void GetProcessList()
    {
        state = 0;
        ClearQuestList();
        QuestContainer qcon = QuestContainer.Instance;

        foreach (Quest q in qcon.processList)
        {
            AddQuestList(q, false);
        }
    }
    public void GetDoneList()
    {
        state = 1;
        ClearQuestList();
        QuestContainer qcon = QuestContainer.Instance;

        foreach (Quest q in qcon.successList)
        {
            AddQuestList(q, true);
        }
    }
Пример #9
0
    void setUP()
    {
        //load Quests database
        questContainer = loadQuest();
        Debug.Log(questContainer.currentQuest);

        //load dialogue database
        dialogueCollection = loadDialogue();
        Debug.Log(dialogueCollection.dialogueArray[0]);

        //call the spawner to create the npcs for the begining of the game
        NPCsCaching(questContainer.questCollection[0].stateArray[0].LinkedActor);
    }
Пример #10
0
    public void onQuestContainerClick()
    {
        int            clickAmount = 0;
        QuestContainer clicked     = null;

        foreach (QuestContainer qContainer in questContainers)
        {
            if (qContainer.isClicked)
            {
                qContainer.isClicked = false;
                return;
            }
        }
    }
Пример #11
0
    /* Función interfaz de carga de fichero de misiones */
    public static QuestContainer Load(string path)
    {
        TextAsset _xml = Resources.Load <TextAsset>(path);

        XmlSerializer serializer = new XmlSerializer(typeof(QuestContainer));

        StringReader reader = new StringReader(_xml.text);

        QuestContainer quests = serializer.Deserialize(reader) as QuestContainer;

        reader.Close();

        return(quests);
    }
Пример #12
0
 public Sprite getSprite(int questId, QuestContainer container)
 {
     foreach (NPCMain main in npcMain)
     {
         for (int i = 0; i < main.questIds.Length; i++)
         {
             if (container.getQuest().getId().Equals(main.questIds[i]))
             {
                 return(main.getSprite());
             }
         }
     }
     return(null);
 }
    public void copyQuestContainer(QuestContainer qc)
    {
        Debug.Log("Start Copy Quest");
        Debug.Log("From " + qc.gameObject.name + " to " + this.gameObject.name);
        Debug.Log("Process list Count : " + qc.processList.Count);
        qc.processList.ForEach(q => this.acceptQuest(q));
        qc.successList.ForEach(q => this.successList.Add(q));

        /*foreach(Quest q in qc.processList.ToArray()) {
         *  Debug.Log("Move " + q.questTitle + " to new Quest Container Process");
         *  this.processList.Add(q);
         * }
         * foreach(Quest q in qc.successList.ToArray()) {
         *  Debug.Log("Move " + q.questTitle + " to new Quest Container Success");
         *  this.successList.Add(q);
         * }*/
    }
    public void addNewQuestPanel(Quest quest)
    {
        GameObject tempQuestPanel = Instantiate(this.questContainer);

        tempQuestPanel.transform.SetParent(this.questWrapper.transform);
        tempQuestPanel.GetComponentInChildren <Text>().text = quest.getName();

        RectTransform rect = tempQuestPanel.GetComponent <RectTransform>();

        rect.anchoredPosition = this.questContainer.GetComponent <RectTransform>().anchoredPosition;
        rect.localPosition    = new Vector2(0, 170 + (rect.sizeDelta.y * -questPanels.Count));
        rect.sizeDelta        = new Vector2(0, 50);

        QuestContainer container = tempQuestPanel.GetComponent <QuestContainer>();

        container.init(quest);
        questPanelContainers.Add(container);
        questPanels.Add(quest.getId(), tempQuestPanel);
        Debug.Log("new quest panel added");
    }
    private void Start()
    {
        if (!Instance)
        {
            Instance = this as QuestContainer;
        }
        // Code สำหรับทดสอบระบบ Quest Container

        /*Quest q = new Quest(1, "Test " + questSuccessId, "Detail ", null, null, 100);
         * q.isQuestSuccess = true;
         * processList.Add(q);
         *
         * successList.Add(new Quest(2, "Test " + questSuccessId, "Detail ", null, null, 100));
         */
        /*foreach (Quest qs in successList) {
         *  Debug.Log(qs.questID);
         * }*/
        //Debug.Log("Is q1 done ? : " + checkQuestStatusDone(q));
        //Debug.Log("Is quest process have quest from 201 : " + checkQuestProcessFromNPC(201));
    }
Пример #16
0
 private void LoadQuests()
 {
     questContainer = QuestContainer.LoadFromXML("XML/Quests");
 }
Пример #17
0
//	public class QuestContainer{
//		public Quest[] CompletedQuest;
//		public Quest[] LockedQuest;
//		public Quest[] UnlockedQuest;
//	}
	
	protected IEnumerator SyncGameStateToServer(){
		/*
		WWW www = WWWX.Get(WebRequests.urlGetCurrentPlayer, WebRequests.authenticatedParameters);
		while (!www.isDone){
			yield return www;
		}
		
		Dictionary<string, Quest> locked, unlocked, completed;
		QuestPackage qp = JSONDecoder.DecodeValue<QuestPackage>(www.text);
		QuestContainer QuestDic = qp.player.quests;
		
		//load quests from server (buffer area)
		#region
		unlocked = new Dictionary<string,Quest>();
		if(QuestDic.UnlockedQuest != null && QuestDic.UnlockedQuest.Length != 0){
			//Messenger<Dictionary<string, Quest>>.Broadcast("UnlockedQuestFromServer", QuestDic["UnlockedQuest"]);
			foreach(Quest q in QuestDic.UnlockedQuest){
				unlocked.Add(q.Name,q);
			}
		}
		
		locked = new Dictionary<string,Quest>();
		
		completed = new Dictionary<string, Quest>();
		if(QuestDic.CompletedQuest != null && QuestDic.CompletedQuest.Length != 0){
			//Messenger<Dictionary<string,Quest>>.Broadcast("CompletedQuestFromServer", QuestDic["CompletedQuest"]);
			foreach(Quest q in QuestDic.CompletedQuest){
				completed.Add (q.Name, q);
			}
		}
		#endregion
		*/
		
		QuestContainer QuestDic = new QuestContainer();
		
		/*
		//compare client's quests and add to server list
		#region
		Quest[] Questlist = QuestManager.Instance.GetUnlockedQuests();
		Quest[] CompareList = QuestManager.Instance.GetCompletedQuests();
		foreach(Quest q in CompareList){
			if(unlocked.ContainsKey(q.Name)){
				unlocked.Remove(q.Name);
			}
		}
		foreach(Quest q in Questlist){
			if(!unlocked.ContainsKey(q.Name)){
				unlocked.Add(q.Name,q);
			}
		}
		List<Quest> questList = new List<Quest>();
		foreach(Quest q in unlocked.Values){
			questList.Add (q);
		}
		QuestDic.UnlockedQuest = questList.ToArray();
		questList.Clear ();
		
		Questlist = QuestManager.Instance.GetLockedQuests();
		foreach(Quest q in Questlist){
			locked.Add(q.Name, q);
		}
		foreach(Quest q in locked.Values){
			questList.Add (q);
		}
		QuestDic.LockedQuest = questList.ToArray();
		questList.Clear ();
		
		Questlist = QuestManager.Instance.GetCompletedQuests();
		foreach(Quest q in Questlist){
			if(!completed.ContainsKey(q.Name)){
				completed.Add(q.Name, q);
			}
		}
		foreach(Quest q in completed.Values){
			questList.Add (q);
		}
		QuestDic.CompletedQuest = questList.ToArray();
		questList.Clear();
		#endregion
		
		*/
		
		#region
		Quest[] Questlist = QuestManager.Instance.GetUnlockedQuests();
		List<Quest> questList = new List<Quest>();
		foreach(Quest q in Questlist){
			questList.Add (q);
		}
		QuestDic.UnlockedQuest = questList.ToArray();
		questList.Clear ();
		
		Questlist = QuestManager.Instance.GetLockedQuests();
		foreach(Quest q in Questlist){
			questList.Add(q);
		}
		QuestDic.LockedQuest = questList.ToArray();
		questList.Clear ();
		
		Questlist = QuestManager.Instance.GetCompletedQuests();
		foreach(Quest q in Questlist){
			questList.Add (q);
		}
		QuestDic.CompletedQuest = questList.ToArray();
		questList.Clear();
		#endregion
		
		string jsonUrl = JsonMapper.ToJson(QuestDic);
		string goServerUrl= "{\"player\":{\"quests\":" + jsonUrl.ToString() + "}}";
		
		WWW www = WWWX.Put (WebRequests.urlGetCurrentPlayer, goServerUrl, WebRequests.authenticatedGodModeParameters);
		while(!www.isDone){
			yield return www;
		}
		
		yield return new WaitForSeconds(10);
		StartCoroutine(UpdateClientOnQuest());
		
		yield break;
	}
Пример #18
0
 // Use this for initialization
 void Start()
 {
     quests = QuestContainer.Load(filePath);
 }
Пример #19
0
 private void loadQuestTrees()
 {
     qt = QuestContainer.Load(Path.Combine(Application.streamingAssetsPath, "quest.xml"));
     reloadQuestTrees();
 }