public void Clear() { Missions.CollectionChanged -= mDatabaseHandler; mRepository.deleteAllCargo(); mRepository.deleteAllMissions(); Missions.Clear(); Cargo.Clear(); MissionRequirements.Clear(); Missions.CollectionChanged += mDatabaseHandler; }
void CreateRequirements(MissionDefinition mission) { requirementsFold = EditorGUILayout.Foldout(requirementsFold, "Requirements"); if (requirementsFold) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(25f); EditorGUILayout.BeginVertical(); mission.ForceAppear = EditorGUILayout.ToggleLeft("Story mission (force appear only once)", mission.ForceAppear); GUILayout.Space(10); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Appear after days", GUILayout.Width(146)); mission.AppearAfterDays = EditorGUILayout.IntSlider(mission.AppearAfterDays, 0, 365); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Required Level", GUILayout.Width(146)); mission.RequiredLevel = EditorGUILayout.IntSlider(mission.RequiredLevel, 0, 100); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Required Employees", GUILayout.Width(146)); mission.RequiredEmployees = EditorGUILayout.IntSlider(mission.RequiredEmployees, 0, 4); EditorGUILayout.EndHorizontal(); GUILayout.Space(10); if (soRequiredMissions == null || requiredMissions != mission.RequiredMissions) { requiredMissions = mission.RequiredMissions; soRequiredMissions = new SerializedObject(requiredMissions); listRequiredMissions = new ReorderableList(soRequiredMissions, soRequiredMissions.FindProperty("RequiredMissions"), false, true, true, true); listRequiredMissions = new ReorderableList(soRequiredMissions, soRequiredMissions.FindProperty("RequiredMissions"), false, true, true, true); listRequiredMissions.drawHeaderCallback = rect => { EditorGUI.LabelField(rect, "Required completion of missions", EditorStyles.boldLabel); }; listRequiredMissions.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { EditorGUI.PropertyField(rect, listRequiredMissions.serializedProperty.GetArrayElementAtIndex(index)); }; } soRequiredMissions.Update(); listRequiredMissions.DoLayoutList(); soRequiredMissions.ApplyModifiedProperties(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } }
private void calculateMissionRequirements(object sender, NotifyCollectionChangedEventArgs e) { var cargoLookup = Cargo.ToDictionary(cargo => cargo.Name, cargo => cargo.Quantity); MissionRequirements.Clear(); var stuff = Missions.Where(mission => mission.amount.HasValue) .Where(mission => !mission.name.Contains("Deliver")) .GroupBy(mission => mission.commodity) .Select(group => new { Commodity = group.Key, Quantity = group.Sum(mission => mission.amount.Value) }); foreach (var thing in stuff) { int inCargoBay = 0; cargoLookup.TryGetValue(thing.Commodity, out inCargoBay); MissionRequirements.Add(new MissionCargo(thing.Commodity, inCargoBay) { RequiredQuantity = thing.Quantity }); } }