IEnumerator RequestURL(string url) { if (IsVerbose) { Debug.Log("loading from web..."); } WWW www = new WWW(url); float elapsedTime = 0.0f; while (!www.isDone) { elapsedTime += Time.deltaTime; if (elapsedTime >= 10.0f) { break; } yield return(null); } if (!www.isDone || !string.IsNullOrEmpty(www.error)) { // Debug.LogError("Error: " + www.error); yield break; } var jsonResponse = www.text; if (IsVerbose) { print(jsonResponse); } onJsonSuccessful.Invoke(); var dict = Json.Deserialize(jsonResponse) as Dictionary <string, object>; var story = (Dictionary <string, object>)dict["Story"]; List <string> storyObjects = new List <string>(); foreach (object item in (List <object>)story["ObjectArray"]) { storyObjects.Add(item.ToString()); } string CorrectLocation = ""; // TODO: Move to diffrent json object for (int i = 0; i < storyObjects.Count; i++) { if (CheckWords.StringContains(storyObjects[i], "desert", StringComparison.CurrentCultureIgnoreCase)) { CorrectLocation = "Desert"; storyObjects.Remove(storyObjects[i]); break; } if (CheckWords.StringContains(storyObjects[i], "forest", StringComparison.CurrentCultureIgnoreCase)) { CorrectLocation = "Forest"; storyObjects.Remove(storyObjects[i]); break; } if (CheckWords.StringContains(storyObjects[i], "house", StringComparison.CurrentCultureIgnoreCase)) { CorrectLocation = "House"; storyObjects.Remove(storyObjects[i]); break; } } if (string.IsNullOrEmpty(CorrectLocation)) { jsonGrab = null; yield return(jsonGrab); onStoryNotFound.Invoke(); } else { string _setting = "Day"; if (CheckWords.StringContains(story["Description"] as string, "day", StringComparison.CurrentCultureIgnoreCase)) { _setting = "Day"; } else if (CheckWords.StringContains(story["Description"] as string, "night", StringComparison.CurrentCultureIgnoreCase)) { _setting = "Night"; } //TODO: Add more emotions and adjust current spelling to match Watson API string mood = Story.ConvertMood(story["Mood"] as string); if (storyObjects == null && IsVerbose) { Debug.LogWarning("No Story Objects found"); } if (storyObjects != null && sceneObjects == null && IsVerbose) { Debug.LogWarning("No Scene Objects found in Main Controller"); } List <GameObject> objectList = new List <GameObject>(); if (storyObjects != null && sceneObjects != null) { foreach (string objectName in storyObjects) { var item = sceneObjects.Find(e => e.name.Equals(objectName, StringComparison.CurrentCultureIgnoreCase)); if (item != null) { objectList.Add(item); } } if (currentStory != null && (currentStory.sceneObjects.Count == objectList.Count && currentStory.sceneObjects[0] == objectList[0]) && currentStory.location.Equals(CorrectLocation) && currentStory.mood == mood && currentStory.setting.Equals(_setting)) { jsonGrab = null; yield return(jsonGrab); } else { ////Why was it Passed //if (currentStory != null) { // Debug.Log(currentStory.sceneObjects.Count == objectList.Count); // Debug.Log(currentStory.sceneObjects[0] == objectList[0]); // Debug.Log(currentStory.location.Equals(CorrectLocation)); // Debug.Log(currentStory.mood == mood); //} if (currentStory != null) { Debug.Log(currentStory.setting.Equals(_setting)); } string setting = "Day"; if (CheckWords.StringContains(story["Description"] as string, "day", StringComparison.CurrentCultureIgnoreCase)) { setting = "Day"; } else if (CheckWords.StringContains(story["Description"] as string, "night", StringComparison.CurrentCultureIgnoreCase)) { setting = "Night"; } currentStory = new Story(story["Description"] as string, 0, mood, CorrectLocation, setting, objectList); onCreatedStory.Invoke(currentStory); jsonGrab = null; } } } }