Example #1
0
    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;
        }
Example #3
0
    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;
        }
Example #5
0
        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;
        }
Example #7
0
        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;
        }
Example #10
0
        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();
        }
Example #11
0
 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);
         }
     }
 }
Example #12
0
        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);
        }
Example #13
0
        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;
                    }
                }
            }
        }
Example #14
0
    // 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);
            }
        }
    }
Example #15
0
        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);
    }
Example #17
0
    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]));
            }
        }
    }
Example #18
0
    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;
        }
Example #20
0
 private void ResetXmlData()
 {
     data = null;
     treeView.Nodes.Clear();
     kryptonDataGridView.DataSource = null;
 }
Example #21
0
        /// <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;
        }
Example #25
0
    /// <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;
        }
Example #27
0
    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;
        }
Example #29
0
    /// <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;
        }