예제 #1
0
        /// <summary>
        /// This routine reads the contents of a save file
        /// </summary>
        /// <param name="fileName"></param>
        public void ReadTurnFile(string fileName)
        {
            char[] delimiterChars = { ' ' };
            string line;

            string[] lineEntries;
            string[] switchEntries;

            GlobalDefinitions.WriteToLogFile("readTurnFile: executing - passed file = " + fileName);

            StreamReader theReader = new StreamReader(fileName);

            using (theReader)
            {
                do
                {
                    line = theReader.ReadLine();
                    if (line != null)
                    {
                        switchEntries = line.Split(delimiterChars);
                        switch (switchEntries[0])
                        {
                        case "Turn":
                            GlobalDefinitions.turnNumber = Convert.ToInt32(switchEntries[1]);
                            GlobalDefinitions.GuiUpdateTurn();
                            break;

                        case "Game_Control":
                            GameControl.SetGameState(switchEntries[1]);
                            break;

                        case "Global_Definitions":
                            ReadGlobalVariables(switchEntries);
                            break;

                        case "Hexes":
                            line        = theReader.ReadLine();
                            lineEntries = line.Split(delimiterChars);
                            while (lineEntries[0] != "End")
                            {
                                string[] entries = line.Split(delimiterChars);
                                ProcessHexRecord(entries);

                                line        = theReader.ReadLine();
                                lineEntries = line.Split(delimiterChars);
                            }
                            break;

                        case "Units":
                            line        = theReader.ReadLine();
                            lineEntries = line.Split(delimiterChars);
                            while (lineEntries[0] != "End")
                            {
                                string[] entries = line.Split(delimiterChars);
                                ProcessUnitRecord(entries);

                                line        = theReader.ReadLine();
                                lineEntries = line.Split(delimiterChars);
                            }
                            break;
                        }
                    }
                }while (line != null);
                theReader.Close();

                GlobalDefinitions.WriteToLogFile("readTurnFile: File read complete.  Initialize Game State");

                // If we just read a setup file, put the player into the setup state so that he can update the setup if he wants.
                if ((GlobalDefinitions.turnNumber == 0) && (GlobalDefinitions.nationalityUserIsPlaying == GlobalDefinitions.Nationality.German))
                {
                    GlobalDefinitions.nextPhaseButton.GetComponent <Button>().interactable = true;
                    GameControl.gameStateControlInstance.GetComponent <GameStateControl>().currentState.executeMethod =
                        GameControl.gameStateControlInstance.GetComponent <GameStateControl>().currentState.GetComponent <SetUpState>().ExecuteSelectUnit;
                }
                // Otherwise, execute the init for the next state
                else
                {
                    GameControl.gameStateControlInstance.GetComponent <GameStateControl>().currentState.Initialize();
                }
            }
        }