public Task <bool> SaveChangesAsync() { return(Task.Run(() => { if (FilmsToAdd.Count() <= 0 && ActorsToAdd.Count() <= 0 && DirectorsToAdd.Count() <= 0 && FilmsToDelete.Count() <= 0 && ActorsToDelete.Count() <= 0 && DirectorsToDelete.Count() <= 0) { return false; } foreach (var film in FilmsToAdd) { film.Id = Films.Count() + 1; Films.Add(film); } foreach (var actor in ActorsToAdd) { actor.Id = Actors.Count() + 1; Actors.Add(actor); } foreach (var director in DirectorsToAdd) { director.Id = Directors.Count() + 1; Directors.Add(director); } foreach (var film in FilmsToDelete) { var filmInList = Films.Where(f => f.Id == film.Id).FirstOrDefault(); Films.Remove(filmInList); } foreach (var actor in ActorsToDelete) { var actorInList = Actors.Where(f => f.Id == actor.Id).FirstOrDefault(); Actors.Remove(actorInList); } foreach (var director in DirectorsToDelete) { var directorInList = Directors.Where(f => f.Id == director.Id).FirstOrDefault(); Directors.Remove(directorInList); } Initialize(); return true; })); }
public GameState GoNextState() { //end of state if (CurrentState == GameState.FixCosts) { //nothing } else if (CurrentState == GameState.UpdateMarket) { //nothing } else if (CurrentState == GameState.MatRequest) { RequestsOfMat = Bank.RequestOfMat(RequestsOfMat); foreach (Demand demand in RequestsOfMat) { GetDirector(demand.Priority).MakeRequestOfMat(demand.Price, demand.UMat); } RequestsOfMat.Clear(); } else if (CurrentState == GameState.Production) { foreach (Director director in Directors) { director.NextState(this); } } else if (CurrentState == GameState.ProdRequest) { RequestsOfProd = Bank.RequestOfProd(RequestsOfProd); foreach (Offer offer in RequestsOfProd) { GetDirector(offer.Priority).MakeRequestOfProd(offer.Price, offer.UProd); } RequestsOfProd.Clear(); } else if (CurrentState == GameState.BuildUpgrade) { foreach (Director director in Directors) { director.UpdateFabCosts(); } } CurrentState = GetNextState; // start of new state if (CurrentState == GameState.FixCosts) { CurrentMonth += 1; Director currentMain = GetDirector(0); foreach (Director director in Directors.ToList()) { director.NextState(this); if (director.IsBankrupt) { if (currentMain != null) { CurrentMainDirector--; } Directors.Remove(director); } if (currentMain == director) { currentMain = null; } } CurrentMainDirector = (CurrentMainDirector + 1) % Directors.Count; } else if (CurrentState == GameState.UpdateMarket) { Bank.NextState(this); } else if (CurrentState == GameState.MatRequest) { //wait for requests } else if (CurrentState == GameState.Production) { //wait for production } else if (CurrentState == GameState.ProdRequest) { //wait for requests } else if (CurrentState == GameState.BuildUpgrade) { foreach (Fabric fabric in Fabrics.ToList()) { fabric.NextState(this); } } return(CurrentState); }