private long GetUnitSize(PTurnData pTurnData)
        {
            var uSize = pTurnData.ActiveCards.Length + pTurnData.InactiveCards.Length
                        + pTurnData.PrevTurns.Length + pTurnData.Hand.Length
                        + pTurnData.FacedUpCards.Length;

            return(uSize);
        }
        private PTurnData[] GetPTurnData(XmlDocument xmlDoc)
        {
            if (xmlDoc == null)
            {
                throw new ArgumentNullException();
            }

            var ptdList  = new List <PTurnData>();
            var winnerId = xmlDoc.DocumentElement.GetAttribute(XmlDataFileNodeNames.PlayerIdAttr);
            var rounds   = xmlDoc.DocumentElement.ChildNodes;

            if (string.IsNullOrWhiteSpace(winnerId))
            {
                throw new InvalidOperationException();
            }

            foreach (XmlNode rd in rounds)
            {
                foreach (XmlElement td in rd.ChildNodes)
                {
                    var nodes    = td.ChildNodes;
                    var playerId = td.GetAttribute(XmlDataFileNodeNames.PlayerIdAttr);

                    if (playerId != winnerId)
                    {
                        continue;
                    }
                    if (nodes.Count != 5 || string.IsNullOrWhiteSpace(playerId))
                    {
                        throw new InvalidOperationException();
                    }

                    var facedUpCardsElm  = nodes[0] ?? throw new InvalidOperationException();
                    var handElm          = nodes[1] ?? throw new InvalidOperationException();
                    var prevTurnsElm     = nodes[2] ?? throw new InvalidOperationException();
                    var activeCardsElm   = nodes[3] ?? throw new InvalidOperationException();
                    var inactiveCardsElm = nodes[4] ?? throw new InvalidOperationException();

                    var ptd = new PTurnData
                    {
                        FacedUpCards  = facedUpCardsElm.InnerXml,
                        Hand          = handElm.InnerXml,
                        PrevTurns     = prevTurnsElm.InnerXml,
                        ActiveCards   = activeCardsElm.InnerXml,
                        InactiveCards = inactiveCardsElm.InnerXml
                    };

                    ptdList.Add(ptd);
                }
            }

            return(ptdList.ToArray());
        }