示例#1
0
        public async Task <TurnData[]> ProcessAsync(PlayData[] playDataArray)
        {
            if (playDataArray == null)
            {
                throw new ArgumentNullException();
            }
            var selectedTurnArr = new TurnData[0];

            await Task.Run(() => { selectedTurnArr = Filter(playDataArray); });

            return(selectedTurnArr);
        }
        protected PlayData MapToPlayData(XmlElement xmlElement)
        {
            _ = xmlElement ?? throw new ArgumentNullException();
            if (xmlElement.Name != "play-data")
            {
                throw new ArgumentException();
            }

            var roundDataList = new List <RoundData>();

            foreach (XmlElement round in xmlElement)
            {
                var turnDataList = new List <TurnData>();
                foreach (XmlElement turn in round)
                {
                    if (turn.ChildNodes.Count < 5)
                    {
                        throw new InvalidOperationException("");
                    }

                    var playerId = turn.GetAttribute("playerId");

                    var facedUpCardsElm  = turn["faced-up-cards"] ?? throw new Exception();
                    var handElm          = turn["hand"] ?? throw new Exception();
                    var prevTurnsElm     = turn["prev-turns"] ?? throw new Exception();
                    var activeCardsElm   = turn["active-cards"] ?? throw new Exception();
                    var inactiveCardsElm = turn["inactive-cards"] ?? throw new Exception();

                    var turnData = new TurnData(
                        playerId,
                        facedUpCardsElm.InnerXml,
                        handElm.InnerXml,
                        prevTurnsElm.InnerXml,
                        activeCardsElm.InnerXml,
                        inactiveCardsElm.InnerXml);

                    turnDataList.Add(turnData);
                }

                roundDataList.Add(new RoundData(turnDataList.ToArray()));
            }

            return(new PlayData(roundDataList.ToArray()));
        }