Пример #1
0
        private void loadStoryBtn_Click(object sender, EventArgs e)
        {
            using (var file = new FileStream(storyFilePath.Text, FileMode.Open, FileAccess.Read))
            {
                var reader = new StoryReader();
                Story = reader.Read(file);

                databaseSelectorCb.Items.Clear();
                foreach (var database in Story.Databases)
                {
                    var name  = "(Unnamed)";
                    var owner = database.Value.OwnerNode;
                    if (owner != null && owner.Name.Length > 0)
                    {
                        name = String.Format("{0}/{1}", owner.Name, owner.NameIndex);
                    }
                    else if (owner != null)
                    {
                        name = String.Format("<{0}>", owner.TypeName());
                    }

                    name += String.Format(" #{0} ({1} rows)", database.Key, database.Value.Facts.Count);

                    databaseSelectorCb.Items.Add(name);
                }
            }
        }
Пример #2
0
        private static Story LoadStory(String path)
        {
            string extension = Path.GetExtension(path).ToLower();

            Stream storyStream;

            switch (extension)
            {
            case ".lsv":
                storyStream = LoadStoryStreamFromSave(path);
                break;

            case ".osi":
                storyStream = LoadStoryStreamFromFile(path);
                break;

            default:
                throw new Exception($"Unsupported story/save extension: {extension}");
            }

            using (storyStream)
            {
                var reader = new StoryReader();
                return(reader.Read(storyStream));
            }
        }
Пример #3
0
        public void LoadStoryFileByName(string storyFileName)
        {
            if (m_storyFileName == storyFileName)
            {
                return;
            }

            //Assets/Resources/STORY_FOLDER + storyFileName

            StoryReader storyReader = new StoryReader(STORY_FOLDER + storyFileName);

            if (storyReader != null)
            {
                m_storys = storyReader;
            }
            bool result = m_storys.GetLoadResult();

            if (result == true)
            {
                m_storyFileName = storyFileName;
                if (!m_readLabel.ContainsKey(m_storyFileName))
                {
                    m_readLabel.Add(m_storyFileName, new List <string>());
                }
            }
        }
Пример #4
0
        private void LoadStory(Stream s)
        {
            var reader = new StoryReader();

            _story = reader.Read(s);

            databaseSelectorCb.Items.Clear();
            foreach (KeyValuePair <uint, Database> database in _story.Databases)
            {
                var  name  = "(Unnamed)";
                Node owner = database.Value.OwnerNode;
                if (owner != null)
                {
                    name = owner.Name.Length > 0 ? $"{owner.Name}({owner.NumParams})" : $"<{owner.TypeName()}>";
                }

                name += $" #{database.Key} ({database.Value.Facts.Count} rows)";

                databaseSelectorCb.Items.Add(name);

                if (databaseSelectorCb.Items.Count > 0)
                {
                    databaseSelectorCb.SelectedIndex = 0;
                }
            }
        }
Пример #5
0
        public void TestFirstWords()
        {
            var sr = new StringReader(@"This is a simple sentence. This is another. ");
            _target = new StoryReader(sr);
            var sentences = _target.ReadStory();

            var firstWord = sentences.FirstWords().First();
            firstWord.Word.Should().Be("This");
        }
Пример #6
0
        private void StoryStringListTest()
        {
            StoryReader storyReader = new StoryReader();
            Story       story       = new Story();

            story = storyReader.GetWholeStory();
            foreach (string str in story.text)
            {
                richTextBox1.Text += (str + "\n");
            }
        }
Пример #7
0
        public void TestSmallSentence()
        {
            var sr = new StringReader(@"Hey!");
            _target = new StoryReader(sr);
            var sentences = _target.ReadStory();

            Assert.AreEqual(1, sentences.SentencesOfLength(1).Count());

            var sentence = sentences.SentencesOfLength(1).Single();
            sentence.Words[0].Word.Should().Be("Hey");

            sentence.Words[1].Word.Should().Be("!");
            sentence.Words[1].IsEndOfSentence().Should().BeTrue();
        }
Пример #8
0
 public void LoadAndLearn()
 {
     var wvl =new WordVectorLoader("wikipedia_vectors.txt");
     var sw = Stopwatch.StartNew();
     _wordVectors = wvl.LoadVectors();
     sw.Stop();
     Debug.WriteLine("Loaded word vectors in {0} ms", sw.ElapsedMilliseconds);
     var s = new StoryReader("WikiJunior_Biology.txt");
     var sentences = s.ReadStory();
     _contextMaps = new ContextMaps();
     _sentenceLearner = new SentenceLearner(_wordVectors, sentences, _contextMaps);
     var plan = _sentenceLearner.PreparePlan(12);
     _sentenceLearner.ExecutePlan(plan, MorphoSyntacticContext.InitialState());
 }
Пример #9
0
        public void TestReadTwoSentences()
        {
            var sr = new StringReader(@"This is a simple sentence. And this is another. ");
            _target = new StoryReader(sr);
            var sentences = _target.ReadStory();

            Assert.AreEqual(1, sentences.SentencesOfLength(5).Count());
            Assert.AreEqual(1, sentences.SentencesOfLength(4).Count());

            var sentence = sentences.SentencesOfLength(5).Single();
            Assert.AreEqual("This", sentence.Words[0].Word);
            sentence = sentences.SentencesOfLength(4).Single();
            Assert.AreEqual("And", sentence.Words[0].Word);
            Assert.AreEqual("another", sentence.Words[3].Word);
        }
Пример #10
0
    private void Update()
    {
        //玩家靠近出現提示

        Collider2D[]    colliders     = new Collider2D[10];
        ContactFilter2D contactFilter = new ContactFilter2D();

        contactFilter.SetLayerMask(LayerMask.GetMask("Player"));

        contactFilter.useTriggers = true;
        int num = conversation_trigger_range.OverlapCollider(contactFilter, colliders);

        if (num > 0 && !isTalking)
        {
            Debug.Log(colliders[0].gameObject.name);
            if (hint != null)
            {
                hint.SetActive(true);
            }
            //開始對話
            if (Input.GetKeyDown(start_key) || autoTrigger)
            {
                isTalking = true;

                /* How you deal with player control while dialog start: EXAMPLE
                 * if (lock_player_control)
                 * {
                 * player.GetComponent<PlayerControl>().enabled = false;
                 * }
                 */

                //創建UI
                reader = Instantiate(reader_prefab, Vector3.zero, Quaternion.identity);

                //在資料夾中尋找//TODO:該語言包無此文檔的處理
                var textAssets = Resources.LoadAll <TextAsset>(rootFolider + RPGCore.lang.ToString());
                reader.StartConversation(textAssets.Single(s => s.name.Equals(text.name)).text, FinishCallBack);
                //reader.StartConversation(text_data_path, FinishCallBack);
            }
        }
        else
        {
            if (hint != null)
            {
                hint.SetActive(false);
            }
        }
    }
Пример #11
0
        public void LoadStoryFileByName(string storyFileName)
        {
            if (m_storyFileName == storyFileName)
            {
                return;
            }

            //Assets/Resources/STORY_FOLDER + storyFileName
            m_storys = new StoryReader(STORY_FOLDER + storyFileName);
            bool result = m_storys.GetLoadResult();

            if (result == true)
            {
                m_storyFileName = storyFileName;
            }
        }
Пример #12
0
        public void TestReadOneSentence()
        {
            var sr = new StringReader(@"This is a simple sentence. ");
            _target = new StoryReader(sr);
            var sentences = _target.ReadStory();

            Assert.AreEqual(1,sentences.SentencesOfLength(5).Count());
            Assert.AreEqual(0,sentences.SentencesOfLength(4).Count());

            var sentence = sentences.SentencesOfLength(5).Single();
            Assert.AreEqual("This",sentence.Words[0].Word);
            Assert.AreEqual("sentence",sentence.Words[4].Word);
            Assert.AreEqual(".",sentence.Words[5].Word);
            Assert.IsTrue(sentence.Words[5].IsEndOfSentence(), "Expected '.' to end sentence");

            Assert.AreEqual(1, sentences.FirstWords().ToList().Count, "Expected 1 first word");
            Assert.AreEqual("This",sentences.FirstWords().Single().Word, "Wrong first word");
        }
Пример #13
0
        static void DebugDump(string storyPath, string debugPath)
        {
            Story story;

            using (var file = new FileStream(storyPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var reader = new StoryReader();
                story = reader.Read(file);
            }

            using (var debugFile = new FileStream(debugPath, FileMode.Create, FileAccess.Write))
            {
                using (var writer = new StreamWriter(debugFile))
                {
                    story.DebugDump(writer);
                }
            }
        }
Пример #14
0
        public void TestTrain2()
        {
            var stream = new StringReader(@"Hey! Look here!");
            var storyReader = new StoryReader(stream);
            var sentences = storyReader.ReadStory();
            var wordVectors = new WordVectors(10);
            var contextMaps = new ContextMaps();
            wordVectors.TryAdd("Hey", new WordVector { Name = "Hey" });
            wordVectors.TryAdd("Look", new WordVector { Name = "Look" });
            wordVectors.TryAdd("here", new WordVector { Name = "here" });
            wordVectors.TryAdd("Test", new WordVector { Name = "Test" });
            wordVectors.TryAdd("!", new WordVector { Name = "!" });

            var target = new SentenceLearner(wordVectors, sentences, contextMaps);

            var plan = target.PreparePlan(4);

            target.ExecutePlan(plan, MorphoSyntacticContext.InitialState());

            var weights = target.GetWeightsForWord(new WrittenWord("Hey"));
        }
Пример #15
0
        public void TestTrain()
        {
            var stream = new StringReader(@"Hey! Look here!");
            var storyReader = new StoryReader(stream);
            var sentences = storyReader.ReadStory();
            var wordVectors = new WordVectors(10);
            wordVectors.TryAdd("Hey", new WordVector { Name = "Hey" });
            wordVectors.TryAdd("Look", new WordVector { Name = "Look" });
            wordVectors.TryAdd("here", new WordVector { Name = "here" });
            wordVectors.TryAdd("Test", new WordVector { Name = "Test" });
            wordVectors.TryAdd("!", new WordVector { Name = "!" });

            var contextMaps = new ContextMaps();
            var target = new SentenceLearner(wordVectors, sentences, contextMaps);

            var trainingPlan = target.PreparePlan(4);
            //should train Hey,ctx0,1; Look,ctx0,0; here,ctx0,-1, here,ctx1,1
            trainingPlan.ContainsPlanStep(new WrittenWord("Hey"), TrainingOutput.Complete).Should().BeTrue();
            trainingPlan.ContainsPlanStep(new WrittenWord("Look"), TrainingOutput.Incomplete).Should().BeTrue();
            trainingPlan.ContainsPlanStep(new WrittenWord("Test"), TrainingOutput.Incomplete).Should().BeFalse();
        }
Пример #16
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Use the unit tests");
            var loader = new WordVectorLoader(args[0]);
            var vectors = loader.LoadVectors();

            string fileName;
            if (args.Length == 1)
            {
                Console.WriteLine("Story file:");
                fileName = Console.ReadLine();
            }
            else
            {
                fileName = args[1];
            }

            var storyReader = new StoryReader(fileName);
            var sentences = storyReader.ReadStory();
            var firstWord = sentences.FirstWords().FirstOrDefault();
            Console.Write(firstWord != null ? firstWord.Word : "empty file");
            var contextMaps = new ContextMaps();
            var sentenceLearner = new SentenceLearner(vectors, sentences, contextMaps);
            var plan = sentenceLearner.PreparePlan(4);
            sentenceLearner.ExecutePlan(plan, MorphoSyntacticContext.InitialState());

            //sentenceLearner.Learn(1);
            while (true)
            {
                Console.Write("\n> ");
                var stdinReader = new StoryReader(Console.In);
                var sentence = stdinReader.ReadSentence();
                if (sentence.Words[0].IsEndOfSentence()) break;
                var result = sentenceLearner.Run(sentence);
                Console.WriteLine(result);

            }
            Console.WriteLine("Quitting");
        }
Пример #17
0
        private void RunTasks()
        {
            if (ExtractAll)
            {
                DoExtractPackage();
            }

            if (ConvertToLsx)
            {
                DoLsxConversion();
            }

            FileManager.TryToCreateDirectory(Path.Combine(DataDumpPath, "Dummy"));

            ReportProgress(50, "Loading meta.lsf ...");
            SaveMeta = LoadPackagedResource("meta.lsf");

            ReportProgress(52, "Loading globals.lsf ...");
            SaveGlobals = LoadPackagedResource("globals.lsf");

            ReportProgress(60, "Dumping mod list ...");
            if (DumpModList)
            {
                var modListPath = Path.Combine(DataDumpPath, "ModList.txt");
                DumpMods(modListPath);
            }

            ReportProgress(62, "Dumping variables ...");
            if (DumpGlobalVars)
            {
                var varsPath = Path.Combine(DataDumpPath, "GlobalVars.txt");
                DumpVariables(varsPath, true, false, false);
            }

            if (DumpCharacterVars)
            {
                var varsPath = Path.Combine(DataDumpPath, "CharacterVars.txt");
                DumpVariables(varsPath, false, true, false);
            }

            if (DumpItemVars)
            {
                var varsPath = Path.Combine(DataDumpPath, "ItemVars.txt");
                DumpVariables(varsPath, false, false, true);
            }

            ReportProgress(70, "Loading story ...");
            LSLib.LS.Node storyNode   = SaveGlobals.Regions["Story"].Children["Story"][0];
            var           storyStream = new MemoryStream(storyNode.Attributes["Story"].Value as byte[]);
            var           reader      = new StoryReader();

            SaveStory = reader.Read(storyStream);

            if (DumpStoryGoals)
            {
                DumpGoals();
            }

            if (DumpStoryDatabases)
            {
                ReportProgress(90, "Dumping databases ...");
                var dbDumpPath = Path.Combine(DataDumpPath, "Databases.txt");
                using (var dbDumpStream = new FileStream(dbDumpPath, FileMode.Create, FileAccess.Write, FileShare.Read))
                {
                    var dbDumper = new DatabaseDumper(dbDumpStream);
                    dbDumper.DumpUnnamedDbs = IncludeUnnamedDatabases;
                    dbDumper.DumpAll(SaveStory);
                }
            }

            ReportProgress(100, "");
        }
Пример #18
0
        public void RunSentences()
        {
            LoadAndLearn();
            var stream = new StringReader(@"A tiger has stripes.");
            var storyReader = new StoryReader(stream);
            var sentence = storyReader.ReadSentence();

            var result = _sentenceLearner.Run(sentence);
            Debug.Print(result);

            stream = new StringReader(@"A crocodile has sharp teeth.");
            storyReader = new StoryReader(stream);
            sentence = storyReader.ReadSentence();

            result = _sentenceLearner.Run(sentence);
            Debug.Print(result);
        }
Пример #19
0
 private void OnValidate()
 {
     current = this;
 }
Пример #20
0
 public void Clicked()
 {
     StoryReader.ReturnInput(gameObject.name);
 }