Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var storyTitle = JsonConvert.DeserializeObject <Story>(File.ReadAllText(Directory.GetCurrentDirectory() + STORY_DIR + @"\story.json"));
            var option     = new SelectOption[] {
                new SelectOption()
                {
                    text = "開始遊戲"
                },
                new SelectOption()
                {
                    text = "繼續遊戲"
                },
                new SelectOption()
                {
                    text = "人物介紹"
                },
                new SelectOption()
                {
                    text = "關於"
                },
                new SelectOption()
                {
                    text = "結束"
                },
            };

            while (true)
            {
                switch (Select("     " + storyTitle.name + "               ", option))
                {
                case 1:
                    var globalVariable = JsonConvert.DeserializeObject <Variable[]>(File.ReadAllText(Directory.GetCurrentDirectory() + STORY_DIR + @"\globalVariable.json"));
                    Load(storyTitle.startFrom, globalVariable);
                    break;

                case 2:
                    var saveFile = LoadSave();
                    if (saveFile != null)
                    {
                        floorsLine.AddRange(saveFile.floorsLine);
                        Load(saveFile.stoeyName, saveFile.globalVariable);
                    }
                    break;

                case 3:
                    Character();
                    break;

                case 4:
                    About();
                    break;

                default:
                    return;
                }
            }
        }
Ejemplo n.º 2
0
 static void Show(string text, string storyName)
 {
     while (gameStatus == GameStatus.RUN)
     {
         Console.WriteLine(jsEngine.Execute(text).GetCompletionValue());
         Console.Write("                         按0選項:");
         try
         {
             int selected = Convert.ToInt32(Console.ReadLine());
             if (selected == 0)
             {
                 var option = new SelectOption[] {
                     new SelectOption()
                     {
                         text = "返回"
                     },
                     new SelectOption()
                     {
                         text = "存檔"
                     },
                     new SelectOption()
                     {
                         text = "回主選單"
                     },
                 };
                 while (true)
                 {
                     selected = Select("    選項      ", option);
                     if (selected == 1)
                     {
                         break;
                     }
                     else if (selected == 2)
                     {
                         Save(storyName);
                         break;
                     }
                     else if (selected == 3)
                     {
                         gameStatus = GameStatus.STOP;
                         break;
                     }
                 }
             }
         }
         catch (FormatException e)
         {
             break;
         }
     }
 }
Ejemplo n.º 3
0
 static SaveFile LoadSave()
 {
     while (true)
     {
         var option = new SelectOption[] {
             new SelectOption()
             {
                 text = "記錄檔1"
             },
             new SelectOption()
             {
                 text = "記錄檔2"
             },
             new SelectOption()
             {
                 text = "記錄檔3"
             },
             new SelectOption()
             {
                 text = "記錄檔4"
             },
             new SelectOption()
             {
                 text = "記錄檔5"
             },
             new SelectOption()
             {
                 text = "返回"
             },
         };
         var fileItem = Select("    選擇記錄檔       ", option);
         if (fileItem == 6)
         {
             return(null);
         }
         try
         {
             return(JsonConvert.DeserializeObject <SaveFile>(File.ReadAllText(Directory.GetCurrentDirectory() + SAVE_DIR + @"\save" + fileItem + ".json")));
         }
         catch (FileNotFoundException e)
         {
             Console.WriteLine("沒有紀錄!");
             Console.ReadLine();
         }
     }
 }
Ejemplo n.º 4
0
        static void Save(string storyName)
        {
            var option = new SelectOption[] {
                new SelectOption()
                {
                    text = "記錄檔1"
                },
                new SelectOption()
                {
                    text = "記錄檔2"
                },
                new SelectOption()
                {
                    text = "記錄檔3"
                },
                new SelectOption()
                {
                    text = "記錄檔4"
                },
                new SelectOption()
                {
                    text = "記錄檔5"
                },
                new SelectOption()
                {
                    text = "返回"
                },
            };
            var fileItem = Select("    選擇記錄檔       ", option);

            if (fileItem == 6)
            {
                return;
            }
            var globalVariable = new List <Variable>();

            foreach (var name in jsEngine.GetValue("SC").ToObject() as Dictionary <string, object> )
            {
                switch (name.Value)
                {
                case var v when v is string:
                    globalVariable.Add(new Variable()
                    {
                        name  = name.Key,
                        type  = "string",
                        value = v as string
                    }
                                       );
                    break;

                case var v when v is double || v is long:
                    globalVariable.Add(new Variable()
                    {
                        name  = name.Key,
                        type  = "number",
                        value = v
                    }
                                       );
                    break;

                case var v when v is bool:
                    globalVariable.Add(new Variable()
                    {
                        name  = name.Key,
                        type  = "boolean",
                        value = (bool)v
                    }
                                       );
                    break;

                case var v when v is object[]:
                    globalVariable.Add(new Variable()
                    {
                        name  = name.Key,
                        type  = "array",
                        value = v
                    }
                                       );
                    break;

                case var v when v == null || v is object:
                    globalVariable.Add(new Variable()
                    {
                        name  = name.Key,
                        type  = "object",
                        value = v
                    }
                                       );
                    break;
                }
            }
            var saveFile = new SaveFile()
            {
                stoeyName      = storyName,
                floorsLine     = floorsLine.ToArray(),
                globalVariable = globalVariable.ToArray()
            };

            File.WriteAllText(
                Directory.GetCurrentDirectory() + SAVE_DIR + @"\save" + fileItem + ".json",
                JsonConvert.SerializeObject(saveFile)
                );

            option = new SelectOption[] {
                new SelectOption()
                {
                    text = "繼續遊戲"
                },
                new SelectOption()
                {
                    text = "離開遊戲"
                },
            };
            switch (Select("請問您現在要?     ", option))
            {
            case 1:
                return;

            default:
                gameStatus = GameStatus.STOP;
                return;
            }
        }