private static TransferValidity CheckTransferValidity(Transfer transfer, Team currentTeam) { if (transfer.PlayerIn == null || transfer.PlayerOut == null) { return TransferValidity.PlayerIsNull; } if (currentTeam.Players.Any(p => p.Id == transfer.PlayerIn.Id)) { return TransferValidity.PlayerTransferredInAlreadyInTeam; } //player transferred out must have been in original team if (currentTeam.Players.All(p => p.Id != transfer.PlayerOut.Id)) { return TransferValidity.PlayerTransferredOutNotOriginallyInTeam; } if (transfer.PlayerIn.Position != transfer.PlayerOut.Position) { return TransferValidity.TransferedPlayersNotInSamePosition; } return TransferValidity.Valid; }
public static IList<Transfer> CreateValidTransfers(Team currentTeam, int transferCount) { var transfers = new List<Transfer>(); for (int i = 0; i < transferCount; i++) { //start at 3rd player so captain and vice captain are untouched var playerOut = currentTeam.Players[i + 2]; var playerIn = playerOut.DeepClone(); playerIn.Id = 102 + i; var transfer = new Transfer { PlayerIn = playerIn, PlayerOut = playerOut }; transfers.Add(transfer); } return transfers; }
public static void LogTransfer(Transfer transfer, ILogger logger, bool important = false) { logger.Log(Tag.Transfers, string.Format("Transferring in {0} ({1}) for {2} ({3})", transfer.PlayerIn.Name, transfer.PlayerIn.NowCost.ToMoney(), transfer.PlayerOut.Name, transfer.PlayerOut.NowCost.ToMoney()), important); }
Team ProcessTransfer(Transfer transfer, Team currentTeam) { currentTeam.Players.Remove(transfer.PlayerOut); transfer.PlayerIn.OriginalCost = transfer.PlayerIn.NowCost; currentTeam.Players.Add(transfer.PlayerIn); if (VerboseLoggingEnabled) { LogHelper.LogTransfer(transfer, _logger, true); } return currentTeam; }