public void Clear()
 {
     Missions.CollectionChanged -= mDatabaseHandler;
     mRepository.deleteAllCargo();
     mRepository.deleteAllMissions();
     Missions.Clear();
     Cargo.Clear();
     MissionRequirements.Clear();
     Missions.CollectionChanged += mDatabaseHandler;
 }
Esempio n. 2
0
        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
                });
            }
        }