private void Schedule() { sorted = main.villagers.OrderByDescending(o => o.happiness).ToList(); Schedule[] schedules = new Schedule[sorted.Count]; if (main.GetSeason() != VillageManager.Season.Winter) { //what needs to be produced int breadneeded = sorted.Count; //every villager needs 1 bread a day int flourneeded = (breadneeded / 4) + 1; // 1 flour = 4 breads int wheatneeded = flourneeded * 3; // 3 wheat for 1 four needed int breaddiff = breadneeded - main.bread; int flourdiff = flourneeded - main.flour; int wheatdiff = wheatneeded - main.wheat; float timebread = (breaddiff / 4) * VillageManager.oneHour; float timeflour = flourdiff * VillageManager.oneHour; float timewheat = (wheatdiff / 3) * VillageManager.oneHour; float time = sorted.Count * VillageManager.oneDay; //time available to all villagers float timeasleep = sorted.Count * (VillageManager.oneHour * 8); //sleep time -= timeasleep; time -= timebread; time -= timeflour; time -= timewheat / 3; if (time > 0) { float duration = timebread + timeflour + timewheat + timeasleep; //enough time, proceed int villagersneeded = (int)duration / VillageManager.oneDay; List <Task> tasks = new List <Task>(); for (int i = 0; i < villagersneeded; i++) { Villager v = sorted[i]; Schedule s = v.schedule = new Schedule(); s.tasks.Clear(); } } else { //im not sure tbh } } }