/// <summary> /// DeSerialize the Board object from XML String /// </summary> /// <returns>XML containing the Board object state XML</returns> public void XmlDeserialize(XmlNode xmlBoard) { // Deserialize the Sides XML XmlNode side = XMLHelper.GetFirstNodeByName(xmlBoard, "Side"); // Deserialize the XML nodes m_WhiteSide.XmlDeserialize(side); m_BlackSide.XmlDeserialize(side.NextSibling); // Deserialize the Cells XmlNode xmlCells = XMLHelper.GetFirstNodeByName(xmlBoard, "Cells"); m_cells.XmlDeserialize(xmlCells); }
/// <summary> /// DeSerialize the Game object from XML String /// </summary> /// <returns>XML containing the Game object state XML</returns> public void XmlDeserialize(XmlNode xmlGame) { // If this source file doesn't contain the check sum attribut, return back if (xmlGame.Attributes["Checksum"] == null) { return; } // Read game state attributes DoNullMovePruning = (XMLHelper.GetNodeText(xmlGame, "DoNullMovePruning") == "True"); DoPrincipleVariation = (XMLHelper.GetNodeText(xmlGame, "DoPrincipleVariation") == "True"); DoQuiescentSearch = (XMLHelper.GetNodeText(xmlGame, "DoQuiescentSearch") == "True"); // Restore the Game turn info GameTurn = (XMLHelper.GetNodeText(xmlGame, "DoQuiescentSearch") == "Black") ? Side.SideType.Black : Side.SideType.White; // Restore the Board State XmlNode xmlBoard = XMLHelper.GetFirstNodeByName(xmlGame, "Board"); Board.XmlDeserialize(xmlBoard); // Restore the Player info XmlNode xmlPlayer = XMLHelper.GetFirstNodeByName(xmlGame, "WhitePlayer"); m_WhitePlayer = (Player)XMLHelper.XmlDeserialize(typeof(Player), xmlPlayer.InnerXml); m_WhitePlayer.GameRules = m_Rules; xmlPlayer = XMLHelper.GetFirstNodeByName(xmlGame, "BlackPlayer"); m_BlackPlayer = (Player)XMLHelper.XmlDeserialize(typeof(Player), xmlPlayer.InnerXml); m_BlackPlayer.GameRules = m_Rules; // Restore all the moves for the move history XmlNode xmlMoves = XMLHelper.GetFirstNodeByName(xmlGame, "MovesHistory"); foreach (XmlNode xmlMove in xmlMoves.ChildNodes) { Move move = (Move)XMLHelper.XmlDeserialize(typeof(Move), xmlMove.OuterXml); m_MovesHistory.Push(move); } }