public Error SetRoadTheme(ICity city, string id) { if (!HasTheme(city.Owner, id)) { return(Error.ThemeNotPurchased); } var previousTheme = city.RoadTheme; city.BeginUpdate(); city.RoadTheme = id; city.EndUpdate(); var lockedRegions = regionManager.LockRegions(tileLocator.ForeachTile(city.PrimaryPosition.X, city.PrimaryPosition.Y, city.Radius)); roadManager.ChangeRoadTheme(city, previousTheme, id); regionManager.UnlockRegions(lockedRegions); return(Error.Ok); }