/// <summary> /// Returns a copy of an instance of PlayFieldModel /// </summary> /// <returns></returns> public PlayFieldModel clone(Guid guidOfClone) { Guid oldInstanceGuid = thisPlayFieldModelInstanceGuid.cloneGuid(); //TODO Clone Deck List <PlayerModel> playersCloned = cloneListPlayerModels(this.playerModels, this); List <Card> topCardsPlayPileCloned = cloneListCards(topCardsOnPlaypile); Guid oldPlayerWhoseTurnItIsGuid = guidOfPlayerWhosTurnItIs.cloneGuid(); int numberOfTurnsForPlayerRemaining = this.numberOfTurnsRemainingForPlayerWhosTurnItIs; bool startOfATurnClone = startOfATurn.cloneBool(); if (lastActionPlayed == null) { lastActionPlayed = new TurnActionModel(null, new Guid(), new Guid(), new Guid(), null, TurnActionTypes.gameStarted, false); } PlayFieldModel pfmC = new PlayFieldModel(oldInstanceGuid, guidOfClone, playersCloned, topCardsPlayPileCloned, oldPlayerWhoseTurnItIsGuid, playersAffectedByActionCardGuids.cloneListGuids(), lastActionPlayed.clone(), currentTurnActionModel.clone(), drawPile.clone(deck), playpile.clone(deck), numberOfTurnsForPlayerRemaining, startOfATurnClone, currentPhase, deck.cloneDeck()); return(pfmC); }