Example #1
0
        private static GameState GameState(XElement state)
        {
            var gs = from g in state.Elements("GameState")
                                        select new
                                        {
                                            AIPolice = Convert.ToBoolean(g.Element("AIPolice").Value),
                                            ThiefPlayers = ThiefPlayers(g.Element("ThiefPlayers")),
                                            PolicePlayer = PolicePlayer(g.Element("PolicePlayer")),
                                            CurrentPlayerDiceRoll = Convert.ToInt32(g.Element("CurrentDiceRoll").Value),
                                            CurrentPlayerIndex = Convert.ToInt32(g.Element("CurrentPlayerIndex").Value),
                                            TravelAgency = Convert.ToInt32(g.Element("TravelAgency").Attribute("Money").Value),
                                            GameRunning = Convert.ToBoolean(g.Element("GameRunning").Value)
                                        };
            GameState s = new GameState();
            foreach (var g in gs)
            {
                s.Board = LoadBoard();
                s.AIPolice = g.AIPolice;
                s.ThiefPlayers = g.ThiefPlayers;
                s.PolicePlayer = g.PolicePlayer;
                s.CurrentPlayerDiceRoll = g.CurrentPlayerDiceRoll;
                s.CurrentPlayerIndex = g.CurrentPlayerIndex;
                s.GameRunning = g.GameRunning;
                ((TravelAgency)s.Board[s.Board.SpecialBlocks[BlockType.TravelAgency][0].X, s.Board.SpecialBlocks[BlockType.TravelAgency][0].Y]).Money = g.TravelAgency;

                s.Board.addPiece(s.ThiefPlayers.Select<ThiefPlayer, Piece>(player => player.Piece).ToList());
                s.Board.addPiece(s.PolicePlayer.getControlledPieces());
            }
            return s;
        }
Example #2
0
 public void Save(GameState state)
 {
     // Disable the watcher while saving, to avoid our own save
     // causing the game to reload
     watcher.EnableRaisingEvents = false;
     Saver.Save(filename, state);
     lastSave = File.GetLastWriteTime(filename);
     watcher.EnableRaisingEvents = true;
 }
Example #3
0
File: Saver.cs Project: Vakz/TDDD49
 private static XElement XmlGameState(GameState state)
 {
     XElement s = new XElement("GameState");
     s.Add(new XElement("AIPolice", state.AIPolice));
     s.Add(XmlThiefPlayers(state.ThiefPlayers));
     s.Add(XmlPolicePlayer(state.PolicePlayer));
     s.Add(new XElement("CurrentDiceRoll", state.CurrentPlayerDiceRoll));
     s.Add(new XElement("GameRunning", state.GameRunning));
     s.Add(new XElement("CurrentPlayerIndex", state.CurrentPlayerIndex));
     s.Add(new XElement("TravelAgency", new XAttribute("Money", ((TravelAgency)state.Board[state.Board.SpecialBlocks[BlockType.TravelAgency][0]]).Money)));
     return s;
 }
Example #4
0
File: Saver.cs Project: Vakz/TDDD49
 public static void Save(string filename, GameState state)
 {
     // Purge with fire
     while (true)
     {
         try
         {
             XDocument x = new XDocument();
             x.Add(new XElement("Save", XmlGameState(state)));
             x.Save(filename);
             break;
         }
         catch (Exception) {}
     }
 }
Example #5
0
 private void newGame(int nrOfPlayers)
 {
     State = new GameState();
     if (nrOfPlayers < 2) throw new ArgumentException("Must have at least two players");
     State.Board = Loader.LoadBoard();
     addThiefPlayers(nrOfPlayers - 1);
     addPolicePlayer(nrOfPlayers);
     ruleEngine = new RuleEngine(State.Board);
     logicEngine = new LogicEngine(State.Board);
     State.CurrentPlayerDiceRoll = LogicEngine.diceRoll(); // Initial player roll
     State.CurrentPlayerIndex = State.Players.Count - 1;
     if (OnReloadedState != null) OnReloadedState();
 }