void ProcessTeamTasks(int date) { var products = Companies.GetProductCompanies(gameContext); foreach (var p in products) { List <SlotInfo> removableTasks = new List <SlotInfo>(); int teamId = 0; foreach (var team in p.team.Teams) { int slotId = 0; foreach (var task in team.Tasks) { if (task.IsPending && Teams.CanExecuteTeamTask(p, task, gameContext)) { task.IsPending = false; Teams.InitializeTeamTaskIfNotPending(p, date, gameContext, task); } Teams.ProcessTeamTaskIfNotPending(p, date, task, ref removableTasks, slotId, teamId); slotId++; } teamId++; } // remove expired tasks removableTasks.Reverse(); foreach (var s in removableTasks) { Teams.RemoveTeamTask(p, gameContext, s.TeamId, s.SlotId); } } }