private void ShowStoryOnLoadOver(int plotID, EnumStoryType type) { StoryInfo info = ConfigManager.Get <StoryInfo>(plotID); if (!info) { Logger.LogError("story id = {0} connot be loaded please check story_config....", plotID); return; } //如果当前已经有了globalBarState,则不在缓存 if (m_globalBarState < 0) { m_globalBarState = moduleGlobal.GetGlobalLayerShowState(); moduleGlobal.ShowGlobalLayerDefault(2, false); } BaseStory story = LoadStoryItem(type); if (!story) { Logger.LogError("plotID = {0},type = {1} asset_name = {2} cannot be loaded", plotID, type, StoryConst.THEATRE_STORY_ASSET_NAME); } else { int layer = type == EnumStoryType.NpcTheatreStory || type == EnumStoryType.TheatreStory ? Layers.Dialog : Layers.UI; Util.SetLayer(story.gameObject, layer); moduleNPCDating.AddEventListener(Module_NPCDating.EventAllStoryEnd, OnAllStoryEnd); currentStoryType = type; currentStoryIndex = 0; currentStory = info; story.ShowDialog(plotID, type); Logger.LogInfo($"开始剧情对话 {plotID}"); } }
public override StoryInfo RequestInfo(string storyUrl) { var html = NetworkHelper.GetHtml(storyUrl); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nameNode = storyUrl.Substring(storyUrl.LastIndexOf("/") + 1); nameNode = nameNode.Substring(0, nameNode.LastIndexOf(".htm")).Replace("_", " "); StoryInfo info = new StoryInfo() { Url = storyUrl, Name = nameNode }; var volumns = htmlDoc.DocumentNode.SelectNodes("//table[@class=\"snif\"]//tr[position()>2]/td[position()=2]/a"); if (volumns != null) { foreach (HtmlNode item in volumns) { ChapterInfo chap = new ChapterInfo() { Name = item.InnerText.Trim(), Url = item.Attributes["href"].Value, ChapId = ExtractID(item.InnerText.Trim()) }; info.Chapters.Add(chap); } } info.Chapters = info.Chapters.OrderBy(p => p.ChapId).ToList(); return info; }
public StoryDataClass(string sid) { this.id = sid; Dictionary <string, string> temp = new Dictionary <string, string>(); string[] einfo = GameData.storyDataList[sid].Split(','); for (int i = 0; i < GameData.storyDataTitle.Count; i++) { temp.Add(GameData.storyDataTitle[i], einfo[i]); } lv_id = temp["lv_id"]; stage = (StoryStage)int.Parse(temp["stage"]); string[] storyinfos = temp["info"].Split('|'); for (int i = 0; i < storyinfos.Length; i++) { string[] infos = storyinfos[i].Split(';'); StoryInfo si = new StoryInfo() { Name = infos[1], Icon = infos[2], Position = (StoryPosition)int.Parse(infos[0]), Info = infos[3] }; storyList.Add(si); } }
public override List<StoryInfo> GetListStories(bool forceOnline) { string urlPattern = this.ListStoryURL; List<StoryInfo> results = base.ReloadChachedData(); if (results == null || results.Count == 0 || forceOnline) { results = new List<StoryInfo>(); string html = NetworkHelper.GetHtml(urlPattern); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"mycontent\"]/div[position()=1]/div[position()=3]/table//tr[position()>1]/td[position()=2]/a"); if (nodes != null && nodes.Count > 0) { foreach (var node in nodes) { StoryInfo info = new StoryInfo() { Url = node.Attributes["href"].Value, Name = node.InnerText.Trim() }; results.Add(info); } } } this.SaveCache(results); return results; }
public ActionResult Create(StoryInfo st) { string fileName = ""; string path = ""; if (ModelState.IsValid) { if (st.PostedFile.ContentLength > 0) { fileName = System.IO.Path.GetFileName(st.PostedFile.FileName); path = System.IO.Path.Combine(Server.MapPath("~/Content/Pictures/"), fileName); st.PostedFile.SaveAs(path); } Story storyEntity = new Story { StoryText = st.StoryText, StoryDate = st.StoryDate, Title = st.Title, Rate = st.Rate, ImageUrl = fileName }; this._story.Add(storyEntity); this._story.SaveChanges(); //Връщам към списъка return(RedirectToAction("Index")); } return(View(st)); }
public override List<StoryInfo> GetListStories(bool forceOnline) { string urlPattern = this.ListStoryURL + "all/name/asc/{0}.html"; List<StoryInfo> results = base.ReloadChachedData(); if (results == null || results.Count == 0 || forceOnline) { results = new List<StoryInfo>(); int currentPage = 1; string url = string.Format(urlPattern, currentPage); string html = NetworkHelper.GetHtml(url); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var paging = htmlDoc.DocumentNode.SelectNodes("//ul[@id=\"pages\"]//a"); if (paging != null && paging.Count > 0) { var lastPageNode = paging.ToList()[paging.Count - 2]; int lastPage; if (lastPageNode.Attributes.Contains("class")) { lastPage = int.Parse(lastPageNode.FirstChild.InnerText.Trim()); } else { lastPage = int.Parse(lastPageNode.FirstChild.InnerText.Trim()); } while (currentPage <= lastPage) { var nodes = htmlDoc.DocumentNode.SelectNodes("//ul[@id=\"comprehensive_list\"]/li/div[position()=1]/a"); if (nodes != null && nodes.Count > 0) { foreach (var node in nodes) { StoryInfo info = new StoryInfo() { Url = HostUrl + node.Attributes["href"].Value, Name = node.InnerText.Trim() }; results.Add(info); } } currentPage++; } } } this.SaveCache(results); return results; }
public IActionResult Post([FromBody] StoryInfo info) { if (!ProjectIsActive(info.ProjectId)) { return(new StatusCodeResult(304)); } var record = _gateway.Create(info.ProjectId, info.Name); var value = new StoryInfo(record.Id, record.ProjectId, record.Name, "story info"); return(Created($"stories/{value.Id}", value)); }
public LevelData(int cNumber, HeroController player, List <DropClass> drops, History history, GameStatistics gStats, List <EnemyData> _enInfo, List <InterObjData> _intInfo, List <NPCData> _npcInfo) { active = true; checkpointNumber = cNumber; qInfo = new QuestInfo(history.ActiveQuests); sInfo = new StoryInfo(history); lStatsInfo = new LevelStatsData(gStats); eInfo = new EquipmentInfo(player.CurrentWeapon, player.Bag); dropInfo = new DropData(drops); enInfo = _enInfo; intInfo = _intInfo; npcInfo = _npcInfo; }
public override List<StoryInfo> GetListStories(bool forceOnline) { string urlPattern = this.ListStoryURL + "{0}/"; List<StoryInfo> results = base.ReloadChachedData(); if (results == null || results.Count == 0 || forceOnline) { results = new List<StoryInfo>(); int currentPage = 1; string url = string.Format(urlPattern, currentPage); string html = NetworkHelper.GetHtml(url); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var paging = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"sct_content\"]//ul[@class=\"pgg\"]/li/a"); if (paging != null && paging.Count > 0) { var lastpageStr = paging.ToList()[paging.Count - 1].Attributes["href"].Value; lastpageStr = lastpageStr.Substring(0, lastpageStr.Length - 1); lastpageStr = lastpageStr.Substring(lastpageStr.LastIndexOf("/") + 1); int lastPage = int.Parse(lastpageStr); while (currentPage <= lastPage) { var nodes = htmlDoc.DocumentNode.SelectNodes("//div[@class=\"wpm_pag mng_lst tbn\"]/div[contains(@class,\"nde\")]/div[@class=\"det\"]/a"); if (nodes != null && nodes.Count > 0) { foreach (var node in nodes) { StoryInfo info = new StoryInfo() { Url = node.Attributes["href"].Value, Name = node.InnerText.Trim() }; results.Add(info); } } currentPage++; } } } this.SaveCache(results); return results; }
private void LoadXmlData() { ResetXmlData(); if (string.IsNullOrEmpty(xmlcfg)) { xmlcfg = Environment.CurrentDirectory + "/storys.xml"; } if (File.Exists(xmlcfg)) { this.Text = "Story Editor : " + xmlcfg; var xmlData = XmlHelper.LoadXml(xmlcfg); (data = new StoryInfo()).Init(xmlData); InitTreeView(); } //treeView.ExpandAll(); }
protected virtual void TryImportStory(StoryInfo storyInfo) { if (traceExceptions) { ImportStory(storyInfo); } else { try { ImportStory(storyInfo); } catch (Exception e) { Debug.LogWarning("Unable to import " + storyInfo.jsonFilename + ": " + e.Message); } } }
public void ShowNavigationPanel(bool isOpenEvent, StoryInfo info, InteractionType interactionType) { if (isOpenEvent) { navigationPanel.SetQuest(info, interactionType); navigationPanel.FillInteractionPanel(interactionType); navigationPanel.transform.DOMoveX(200, 1.0f).SetEase(Ease.InOutQuad).OnComplete( () => navigationPanel.transform.DOMoveX(200, 5.0f).SetEase(Ease.InOutQuad).OnComplete( () => navigationPanel.transform.DOMoveX(-200, 1.0f).SetEase(Ease.InOutQuad).OnComplete( () => navigationPanel.gameObject.SetActive(false) ) ) ); } navigationPanel.gameObject.SetActive(isOpenEvent); }
public void SetQuest(StoryInfo info, InteractionType interactionType) { if (listInteractions != null && interactionItem != null) { if (listInteractions.Exists(o => o.InteractionType == interactionType)) { var interaction = listInteractions.Find(o => o.InteractionType == interactionType); if (interaction != null) { interaction.interactionStoryState = StateToString(info.State); interaction.interactionStoryTitle = info.Story.Title; interaction.interactionTaskDescription = info.Story.Tasks[info.Index].Description; } } } }
// Use this for initialization void Start() { GameObject storyBtnPre = (GameObject)GameFuncs.GetResource("Prefabs/storyBtn"); Button closeStoryBtn = UIManager.GetButton("closeStoryBtn"); Transform storyList = transform.Find("storyList"); storyGrid = storyList.Find("storyGrid"); closeStoryBtn.onClick.AddListener(OncloseStoryBtnClick); //Load StoryBtns for (int i = 0; i < RoomGlobals.storyInfos.Count; i++) { StoryInfo si = RoomGlobals.storyInfos[i]; string path = si.storyPath; string id = path.Substring(0, 3); if (id == RoomGlobals.currentId) { storyCount++; GameObject story = GameObject.Instantiate(storyBtnPre); story.transform.SetParent(storyGrid); storys.Add(story); story.transform.Find("Text").GetComponent <Text>().text = si.storyName; story.GetComponent <Button>().onClick.AddListener(() => { OnstoryBtnClick(path); }); //for i<lv,if(si.storyName[last]<=lv) interactable=true; story.GetComponent <Button>().interactable = !si.isLocked; for (int j = 0; j < RoomGlobals.loveDic[RoomGlobals.currentId].lv; j++) { if (int.Parse(si.storyName[si.storyName.Length - 1].ToString()) <= RoomGlobals.loveDic[RoomGlobals.currentId].lv) { story.GetComponent <Button>().interactable = true; } } } } for (int i = 0; i < storyGrid.childCount; i++) { if (i >= storyCount) { Destroy(storyGrid.GetChild(i).gameObject); } } }
protected virtual void ImportStory(StoryInfo storyInfo) { Debug.Log("Importing " + storyInfo.jsonFilename); if (string.IsNullOrEmpty(storyInfo.jsonFilename)) { return; } var json = File.ReadAllText(storyInfo.jsonFilename, EncodingTypeTools.GetEncoding(prefs.encodingType)); if (string.IsNullOrEmpty(json)) { throw new Exception("Unable to read Twine JSON from file."); } var story = JsonUtility.FromJson <TwineStory>(json); if (story == null) { throw new Exception("Unable to parse JSON."); } twineImporter.ConvertStoryToConversation(database, template, story, storyInfo.actorID, storyInfo.conversantID, storyInfo.splitPipes); }
IEnumerator Start() { yield return(StartCoroutine(StoryInfo.WaitForInstance())); //Debug.Log (String.Format("{0}_{1}_{2}", StoryInfo.Instance.GetTitle(), m_currentPage, m_emotion.ToString())); PlayAudio(); StartCoroutine(ChangeBoth(FindStoryPage())); yield return(new WaitForSeconds(0.75f)); Hashtable tweenArgs = new Hashtable(); //tweenArgs.Add ("amount", new Vector3(20, 0, 0)); tweenArgs.Add("position", new Vector3(2200, 0, 0)); tweenArgs.Add("islocal", true); tweenArgs.Add("time", m_transitionTweenDuration); iTween.MoveTo(m_transitionScreen, tweenArgs); //iTween.MoveBy (m_transitionScreen, tweenArgs); }
public void LoadHistory(StoryInfo sInfo, QuestInfo qInfo) { if (sInfo != null) { storyList = new List <Story>(); foreach (string _storyName in sInfo.stories) { StoryInitializer init = FindInitializer(_storyName); if (init != null) { storyList.Add(init.story); } } foreach (string _storyName in sInfo.completedStories) { StoryInitializer init = FindInitializer(_storyName); if (init != null) { init.completed = true; } } } if (qInfo != null) { activeQuests = new List <Quest>(); foreach (string questName in qInfo.quests) { Quest _quest = null; if ((_quest = SpecialFunctions.statistics.GetQuest(questName)) != null) { activeQuests.Add(new Quest(_quest)); } SpecialFunctions.gameUI.ConsiderQuests(activeQuests.ConvertAll <string>(x => x.questLine[x.stage])); } } }
public static List <StoryInfo> GetParsedStoryInfo() { List <StoryInfo> stories = new List <StoryInfo>(); TextAsset csvFile; csvFile = Resources.Load("Data/worldMap") as TextAsset; string csvText = csvFile.text; string[] lines = csvText.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); List <string> dataLines = new List <string>(lines); dataLines = dataLines.GetRange(1, lines.Length - 1); foreach (string line in dataLines) { StoryInfo storyInfo = new StoryInfo(line); stories.Add(storyInfo); } return(stories); }
public override List<StoryInfo> GetLastestUpdates() { string lastestUpdateUrl = HostUrl; List<StoryInfo> stories = new List<StoryInfo>(); var html = NetworkHelper.GetHtml(lastestUpdateUrl); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//ul[@class=\"latest\"]/span/li/a"); foreach (HtmlNode node in nodes) { var chapUrl = node.Attributes["href"].Value; var storyUrl = chapUrl.Substring(0, chapUrl.LastIndexOf("/")) + ".html"; var storyName = chapUrl.Substring(0, chapUrl.LastIndexOf("/")); storyName = storyName.Substring(storyName.LastIndexOf("/") + 1).Replace("_", " "); StoryInfo info; if (!stories.Any(p => p.Url == storyUrl)) { info = new StoryInfo() { Url = storyUrl, Name = storyName, Chapters = new List<ChapterInfo>(), }; stories.Add(info); } else { info = stories.Where(p => p.Url == storyUrl).Single(); } info.Chapters.Add(new ChapterInfo() { Name = node.ParentNode.ParentNode.Attributes["title"].Value, Url = chapUrl, }); } return stories; }
private void ResetXmlData() { data = null; treeView.Nodes.Clear(); kryptonDataGridView.DataSource = null; }
/// <summary>Get a single story from hacker news based on the id</summary> /// <param name="storyIds">hacker news post Id</param> /// <param name="rank">the rank at which the story is on hacker news</param> /// <returns>A StoryInfo object with fields containing info about the story</returns> static async Task <StoryInfo> GetStoryBasedOnStoryIdAndRank(int storyId, int rank) { //Get the story information string json = await HackerNewsAPI.GetHackerNewsStoriesById(storyId); JObject storyInfo = (JObject)JsonConvert.DeserializeObject(json); //Title StoryInfo hnInfo = new StoryInfo(); if (storyInfo.GetValue("title") != null) { string title = storyInfo.GetValue("title").ToString(); //Check if title is non-empty string if (!String.IsNullOrEmpty(title) && title.Length < 257) { hnInfo.Title = title; } else if (title.Length > 256) { hnInfo.Title = "Title too long"; } else { hnInfo.Title = "No Title Available"; } } //Uri if (storyInfo.GetValue("url") != null) { hnInfo.Uri = storyInfo.GetValue("url").ToString(); //Check if URL is valid Uri uriResult; bool result = Uri.TryCreate(hnInfo.Uri, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); if (!result) { hnInfo.Uri = hnInfo.Uri + " (Invalid Uri)"; } } //Author if (storyInfo.GetValue("by") != null) { string author = storyInfo.GetValue("by").ToString(); //Check if Author is non-empty string if (!String.IsNullOrEmpty(author) && author.Length < 257) { hnInfo.Author = author; } else if (author.Length > 257) { hnInfo.Author = "Author name too long"; } else { hnInfo.Author = "No Author Available"; } } //Points if (storyInfo.GetValue("score") != null) { string score = storyInfo.GetValue("score").ToString(); //Check if greater or equal to zero bool isInt = int.TryParse(score, out int intScore); if (isInt && intScore >= 0) { hnInfo.Points = score; } else { hnInfo.Points = "No score available"; } } //Comments if (storyInfo.GetValue("descendants") != null) { string comments = storyInfo.GetValue("descendants").ToString(); //Check if greater or equal to zero bool isInt = int.TryParse(comments, out int intComments); if (isInt && intComments >= 0) { hnInfo.comments = comments; } else { hnInfo.comments = "No comment info available"; } } //Rank //Check if greater or equal to zero if (rank >= 0) { hnInfo.rank = rank.ToString(); } else { hnInfo.rank = "No Rank Info Available"; } // Convert DtoryInfo object to JOSN string format //string jsonData = JsonConvert.SerializeObject(hnInfo, Formatting.Indented); return(hnInfo); }
public override List<StoryInfo> OnlineSearch(string keyword) { string urlPattern = string.Format("http://unixmanga.net/onlinereading/{0}.html", keyword.Replace(" ", "_")); var results = new List<StoryInfo>(); string html = NetworkHelper.GetHtml(urlPattern); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var node = htmlDoc.DocumentNode.SelectSingleNode("//table[@class=\"snif\"]//tr[position()=2]/td[position()=2]/a"); if (node.InnerText.Trim() == "[ Goto Main ]") { var nameNode = urlPattern.Substring(urlPattern.LastIndexOf("/") + 1); nameNode = nameNode.Substring(0, nameNode.LastIndexOf(".htm")).Replace("_", " "); StoryInfo info = new StoryInfo() { Url = urlPattern, Name = nameNode }; results.Add(info); } return results; }
public override List<StoryInfo> OnlineSearch(string keyword) { string urlPattern = string.Format("http://mangable.com/search/?completed=1&series_contains=1&series_name={0}&where=all&order=name&sort=asc&page={1}", keyword.Replace(" ", "+"), "{0}"); var results = new List<StoryInfo>(); int currentPage = 1; while (currentPage <= Constant.LimitedPageForSearch) { string url = string.Format(urlPattern, currentPage); string html = NetworkHelper.GetHtml(url); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//ul[@id=\"comprehensive_list\"]/li/div[position()=1]/a"); if (nodes != null && nodes.Count > 0) { foreach (var node in nodes) { StoryInfo info = new StoryInfo() { Url = HostUrl + node.Attributes["href"].Value, Name = node.InnerText.Trim() }; results.Add(info); } } currentPage++; } return results; }
public override List<StoryInfo> GetLastestUpdates() { string lastestUpdateUrl = HostUrl; List<StoryInfo> stories = new List<StoryInfo>(); var html = NetworkHelper.GetHtml(lastestUpdateUrl); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"newlist_home\"]/ul/li/p[position()=1]/a[position()=1]"); foreach (HtmlNode node in nodes) { StoryInfo info = new StoryInfo() { Url = HostUrl + node.Attributes["href"].Value, Name = node.Attributes["title"].Value.Trim(), Chapters = new List<ChapterInfo>(), }; var chapters = node.ParentNode.SelectNodes("a[position()=2]"); if (chapters != null) { foreach (HtmlNode chap in chapters) { info.Chapters.Add(new ChapterInfo() { Name = chap.InnerText.Trim(), Url = HostUrl + chap.Attributes["href"].Value, }); } } stories.Add(info); } return stories; }
/// <summary> /// 针对不同的模式可能会加载不同的资源 /// </summary> /// <param name="plotId"></param> /// <param name="type">1代表剧场对话,2代表战斗对话</param> /// <returns></returns> public static List <string> GetPerStoryPreAssets(int plotId, EnumStoryType type) { List <string> list = new List <string>(); switch (type) { case EnumStoryType.TheatreStory: case EnumStoryType.NpcTheatreStory: list.Add(StoryConst.THEATRE_STORY_ASSET_NAME); list.Add(StoryConst.THEATRE_MASK_ASSET_NAME); list.Add(StoryConst.THEATRE_GM_ASSET_NAME); //list.Add(StoryConst.DEFALUT_CONTENT_BG); break; case EnumStoryType.FreeBattleStory: case EnumStoryType.PauseBattleStory: list.Add(StoryConst.BATTLE_STORY_ASSET_NAME); break; } StoryInfo story = ConfigManager.Get <StoryInfo>(plotId); if (story) { //if (type == EnumStoryType.TheatreStory) list.Add("character_render_camera"); //load StoryInfo.StoryItem item = null; for (int i = 0; i < story.storyItems.Length; i++) { if (i > GeneralConfigInfo.sstoryPreLoadNum && GeneralConfigInfo.sstoryPreLoadNum > 0) { break; } item = story.storyItems[i]; #region theatre story if (type == EnumStoryType.TheatreStory || type == EnumStoryType.NpcTheatreStory) { //npc assets for (int j = 0; j < item.talkingRoles.Length; j++) { NpcInfo npc = ConfigManager.Get <NpcInfo>(item.talkingRoles[j].roleId); if (npc == null) { continue; } var npcAssets = Module_Battle.BuildNpcSimplePreloadAssets(npc.ID); for (int m = 0; m < npcAssets.Count; m++) { list.Add(npcAssets[m]); } } //texture assets list.Add(item.background); list.Add(item.contentBg); if (!item.playerIconDetail.Equals("PlayerIcon")) { list.Add(item.playerIconDetail); } //model assets if (item.models != null && item.models.Length > 0) { for (int ii = 0; ii < item.models.Length; ii++) { list.Add(item.models[ii].model); } } } #endregion #region common data list.Add(item.effect); if (item.effect.Equals(StoryConst.EYE_CLIP_EFFECT)) { list.Add(StoryConst.EYE_GAUSS_MATERIAL_ASSET); } //music assets if (item.musicData.validMusic && !item.musicData.musicName.Equals(StoryConst.STOP_CURRENT_MUSIC_FLAG) && !item.musicData.musicName.Equals(StoryConst.RESET_CURRENT_MUSIC_FLAG) && !item.musicData.musicName.Equals(StoryConst.RESET_LAST_MUSIC_FLAG)) { list.Add(item.musicData.musicName); } //voice assets list.Add(item.voiceName); //sound effect assets for (int j = 0; j < item.soundEffect.Length; j++) { list.Add(item.soundEffect[j].soundName); } #endregion } } return(list); }
public override StoryInfo RequestInfo(string storyUrl) { var html = NetworkHelper.GetHtml(storyUrl); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nameNode = htmlDoc.DocumentNode.SelectSingleNode("//h2[@id=\"series_title\"]").FirstChild.InnerText.Trim(); StoryInfo info = new StoryInfo() { Url = storyUrl, Name = nameNode }; var volumns = htmlDoc.DocumentNode.SelectNodes("//div[@id=\"newlist\"]/ul/li/a"); if (volumns != null) { foreach (HtmlNode item in volumns) { ChapterInfo chap = new ChapterInfo() { Name = item.Descendants("span").First().InnerText.Trim(), Url = item.Attributes["href"].Value }; chap.ChapId = ExtractID(chap.Name); info.Chapters.Add(chap); } } info.Chapters = info.Chapters.OrderBy(p => p.ChapId).ToList(); return info; }
public static List <string> GetPerStoryPreAssets(int plotId, EnumStoryType type, int index) { List <string> list = new List <string>(); StoryInfo story = ConfigManager.Get <StoryInfo>(plotId); index += GeneralConfigInfo.sstoryPreLoadNum; if (story) { if (story.storyItems.Length - 1 < index || index < 0) { return(null); } StoryInfo.StoryItem item = story.storyItems[index]; #region theatre story if (type == EnumStoryType.TheatreStory || type == EnumStoryType.NpcTheatreStory) { //npc assets for (int j = 0; j < item.talkingRoles.Length; j++) { NpcInfo npc = ConfigManager.Get <NpcInfo>(item.talkingRoles[j].roleId); if (npc == null) { continue; } var npcAssets = Module_Battle.BuildNpcSimplePreloadAssets(npc.ID); for (int m = 0; m < npcAssets.Count; m++) { list.Add(npcAssets[m]); } } //texture assets list.Add(item.background); list.Add(item.contentBg); if (!item.playerIconDetail.Equals("PlayerIcon")) { list.Add(item.playerIconDetail); } //model assets if (item.models != null && item.models.Length > 0) { for (int ii = 0; ii < item.models.Length; ii++) { list.Add(item.models[ii].model); } } } #endregion #region common data //full screen effect list.Add(item.effect); if (item.effect.Equals(StoryConst.EYE_CLIP_EFFECT)) { list.Add(StoryConst.EYE_GAUSS_MATERIAL_ASSET); } //music assets if (item.musicData.validMusic && !item.musicData.musicName.Equals(StoryConst.STOP_CURRENT_MUSIC_FLAG) && !item.musicData.musicName.Equals(StoryConst.RESET_CURRENT_MUSIC_FLAG) && !item.musicData.musicName.Equals(StoryConst.RESET_LAST_MUSIC_FLAG) ) { list.Add(item.musicData.musicName); } //voice assets list.Add(item.voiceName); //sound effect assets for (int j = 0; j < item.soundEffect.Length; j++) { list.Add(item.soundEffect[j].soundName); } #endregion } return(list); }
public override StoryInfo RequestInfo(string storyUrl) { var html = NetworkHelper.GetHtml(storyUrl); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nameNode = htmlDoc.DocumentNode.SelectSingleNode("//div[@class=\"wpm_pag mng_det\"]/h1[position()=1]").InnerText.Trim(); StoryInfo info = new StoryInfo() { Url = storyUrl, Name = nameNode }; var volumns = htmlDoc.DocumentNode.SelectNodes("//div[@class=\"wpm_pag mng_det\"]/ul[@class=\"lst\"]/li/a"); if (volumns != null) { foreach (HtmlNode item in volumns) { ChapterInfo chap = new ChapterInfo() { Name = item.Attributes["title"].Value.Trim(), Url = item.Attributes["href"].Value, ChapId = ExtractID(item.Attributes["title"].Value.Trim()) }; info.Chapters.Add(chap); } } info.Chapters = info.Chapters.OrderBy(p => p.ChapId).ToList(); return info; }
/// <summary> /// Загрузка игры /// </summary> public void LoadGame() { SavesInfo savesInfo = Serializator.DeXmlSavesInfo(savesInfoPath); if (!Serializator.HasSavesInfo(savesInfoPath)) { return; } if (savesInfo == null) { return; } if (!savesInfo.saves[profileNumber].hasData) { return; } GameData gData = Serializator.DeXml(datapath + profileNumber.ToString() + ".xml"); if (gData == null) { return; } savesInfo.saves[profileNumber].loadSceneName = SceneManager.GetActiveScene().name; GameGeneralData gGData = gData.gGData; LevelData lData = gData.lData; GameStatistics gStats = GetComponent <GameStatistics>(); #region GeneralLoad if (lData == null? true: !lData.active)//Произошёл переход на новый уровень и нужно учесть только данные, необходимые на протяжении всей игры { if (gGData != null) { startCheckpointNumber = gGData.firstCheckpointNumber; HeroController hero = SpecialFunctions.player.GetComponent <HeroController>(); //Сначала переместим главного героя к последнему чекпоинту CheckpointController currentCheckpoint = checkpoints.Find(x => (x.checkpointNumb == startCheckpointNumber)); if (currentCheckpoint != null) { SpecialFunctions.MoveToCheckpoint(currentCheckpoint); } #region heroEquipment EquipmentInfo eInfo = gGData.eInfo; if (eInfo != null && gStats != null) { if (gStats.WeaponDict.ContainsKey(eInfo.weapon)) { hero.SetItem(gStats.WeaponDict[eInfo.weapon], true); } foreach (string itemName in eInfo.bagItems) { hero.Bag.Clear(); if (gStats.ItemDict.ContainsKey(itemName)) { hero.Bag.Add(gStats.ItemDict[itemName]); } } } GetComponent <GameStatistics>().ResetStatistics(); #endregion //heroEquipment } } #endregion //GeneralLoad #region LevelLoad else//Если игрок сохранился на чекпоинте, то у него есть прогресс на уровне и именно его мы и загружаем { HeroController hero = SpecialFunctions.player.GetComponent <HeroController>(); //Сначала переместим главного героя к последнему чекпоинту CheckpointController currentCheckpoint = checkpoints.Find(x => (x.checkpointNumb == lData.checkpointNumber)); if (currentCheckpoint != null) { SpecialFunctions.MoveToCheckpoint(currentCheckpoint); } #region heroEquipment EquipmentInfo eInfo = lData.eInfo; if (eInfo != null && gStats != null) { if (gStats.WeaponDict.ContainsKey(eInfo.weapon)) { hero.SetItem(gStats.WeaponDict[eInfo.weapon], true); } foreach (string itemName in eInfo.bagItems) { hero.Bag.Clear(); if (gStats.ItemDict.ContainsKey(itemName)) { hero.Bag.Add(gStats.ItemDict[itemName]); } } } #endregion //heroEquipment GameHistory gHistory = GetComponent <GameHistory>(); History history = gHistory != null? gHistory.history:null; #region Quests&Story QuestInfo qInfo = lData.qInfo; StoryInfo sInfo = lData.sInfo; if (qInfo != null && sInfo != null && history != null) { history.LoadHistory(sInfo, qInfo); } #endregion //Quests&Story #region levelStatistics LevelStatsData lStatsInfo = lData.lStatsInfo; if (lStatsInfo != null && gStats != null) { gStats.LoadStaticstics(lStatsInfo); gStats.InitializeAllStatistics(); } #endregion //levelStatistics #region Drop DropData dropInfo = lData.dropInfo; //Сначала надо уничтожить все объекты типа drop на уровне GameObject[] drops = GameObject.FindGameObjectsWithTag("drop"); for (int i = drops.Length - 1; i >= 0; i--) { DestroyImmediate(drops[i]); } drops = GameObject.FindGameObjectsWithTag("heartDrop"); for (int i = drops.Length - 1; i >= 0; i--) { DestroyImmediate(drops[i]); } //А затем заново их создать if (dropInfo != null && gStats != null) { foreach (DropInfo _dInfo in dropInfo.drops) { if (gStats.DropDict.ContainsKey(_dInfo.itemName) && !_dInfo.customDrop) { Instantiate(gStats.DropDict[_dInfo.itemName], _dInfo.position, Quaternion.identity); } else if (gStats.WeaponDict.ContainsKey(_dInfo.itemName)) { GameObject newDrop = Instantiate(gStats.itemBase.customDrop, _dInfo.position, Quaternion.identity) as GameObject; newDrop.GetComponent <DropClass>().item = gStats.WeaponDict[_dInfo.itemName]; } else if (gStats.ItemDict.ContainsKey(_dInfo.itemName)) { GameObject newDrop = Instantiate(gStats.itemBase.customDrop, _dInfo.position, Quaternion.identity) as GameObject; newDrop.GetComponent <DropClass>().item = gStats.ItemDict[_dInfo.itemName]; } } } #endregion //Drop #region Enemies List <EnemyData> enInfo = lData.enInfo; if (enInfo != null && monsters != null) { foreach (EnemyData enData in enInfo) { int objId = enData.objId; if (objId < monsters.Count? monsters[objId] != null:false) { monsters[objId].SetAIData(enData); monsters[objId] = null; } } for (int i = 0; i < monsters.Count; i++) { if (monsters[i] != null) { DestroyImmediate(monsters[i].gameObject); } } } #endregion //Enemies #region InteractiveObjects List <InterObjData> intInfo = lData.intInfo; if (intInfo != null && intObjects != null) { foreach (InterObjData interData in intInfo) { int objId = interData.objId; if (objId < intObjects.Count ? intObjects[objId] != null : false) { IInteractive iInter = intObjects[objId].GetComponent <IInteractive>(); IMechanism iMech = intObjects[objId].GetComponent <IMechanism>(); IDamageable iDmg = intObjects[objId].GetComponent <IDamageable>(); if (iInter != null) { iInter.SetData(interData); } else if (iMech != null) { iMech.SetData(interData); } else if (iDmg != null) { iDmg.SetData(interData); } intObjects[objId] = null; } } for (int i = 0; i < intObjects.Count; i++) { if (intObjects[i] != null) { ChestController chest = intObjects[i].GetComponent <ChestController>(); CheckpointController checkpoint = intObjects[i].GetComponent <CheckpointController>(); if (chest != null) { chest.DestroyClosedChest(); } else if (checkpoint != null) { checkpoint.DestroyCheckpoint(); } else { DestroyImmediate(intObjects[i]); } } } } #endregion //InteractiveObjects #region NPCs List <NPCData> npcInfo = lData.npcInfo; if (npcInfo != null && NPCs != null) { foreach (NPCData npcData in npcInfo) { int objId = npcData.objId; if (objId < NPCs.Count ? NPCs[objId] != null : false) { NPCs[objId].SetData(npcData); NPCs[objId] = null; } } for (int i = 0; i < NPCs.Count; i++) { if (NPCs[i] != null) { DestroyImmediate(NPCs[i].gameObject); } } } #endregion //NPCs } #endregion //LevelLoad /* * //Сначала переместим главного героя к последнему чекпоинту * CheckpointController currentCheckpoint = checkpoints.Find(x => (x.checkpointNumb == PlayerPrefs.GetInt("Checkpoint Number"))); * if (currentCheckpoint != null) * SpecialFunctions.MoveToCheckpoint(currentCheckpoint); */ }
public override List<StoryInfo> OnlineSearch(string keyword) { string urlPattern = string.Format("http://www.manga2u.me/list/search/{0}/name-az/{1}/", keyword.Replace(" ", "+"), "{0}"); var results = new List<StoryInfo>(); int currentPage = 1; while (currentPage <= Constant.LimitedPageForSearch) { string url = string.Format(urlPattern, currentPage); string html = NetworkHelper.GetHtml(url); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//div[@class=\"wpm_pag mng_lst tbn\"]/div[contains(@class,\"nde\")]/div[@class=\"det\"]/a"); if (nodes != null && nodes.Count > 0) { foreach (var node in nodes) { if (results.Any(p => p.Url == node.Attributes["href"].Value)) { currentPage = Constant.LimitedPageForSearch; break; } StoryInfo info = new StoryInfo() { Url = node.Attributes["href"].Value, Name = node.InnerText.Trim() }; results.Add(info); } } currentPage++; } return results; }
public override List<StoryInfo> GetLastestUpdates() { string lastestUpdateUrl = HostUrl; List<StoryInfo> stories = new List<StoryInfo>(); var html = NetworkHelper.GetHtml(lastestUpdateUrl); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var nodes = htmlDoc.DocumentNode.SelectNodes("//div[@class=\"wpm_pag mng_lts_chp grp\"]//div[@class=\"det\"]/a"); foreach (HtmlNode node in nodes) { StoryInfo info = new StoryInfo() { Url = node.Attributes["href"].Value, Name = node.Attributes["alt"].Value.Trim(), Chapters = new List<ChapterInfo>(), }; var chapters = node.ParentNode.SelectNodes("ul[@class=\"lst\"]/li/a"); if (chapters != null) { foreach (HtmlNode chap in chapters) { info.Chapters.Add(new ChapterInfo() { Name = chap.Attributes["title"].Value.Trim(), Url = chap.Attributes["href"].Value, }); } } stories.Add(info); } return stories; }