private GameStatus GetStatus()
        {
            if (this.gamePath == null)
            {
                // Serializer is creating empty SlotsData collection
                return(GameStatus.NotSet);
            }

            if (!File.Exists(this.gamePath) || Path.GetExtension(this.gamePath).ToLower() != ".exe")
            {
                return(GameStatus.ExeNotFound);
            }

            if (this.slotsData.Count < 1 || this.slotsData.Count > 4)
            {
                return(GameStatus.InvalidSlotsCount);
            }

            foreach (var slotData in this.slotsData)
            {
                if (slotData.SlotNumber < 1 || slotData.SlotNumber > 4)
                {
                    return(GameStatus.InvalidSlotNumber);
                }

                if (slotData.GamepadUserIndex < 1 || slotData.GamepadUserIndex > 4)
                {
                    return(GameStatus.InvalidGamepadUserIndex);
                }

                var inputDevices = KeyboardSplitter.Managers.InputManager.ConnectedInputDevices;
                if (slotData.KeyboardHardwareId != string.Empty)
                {
                    if (inputDevices.FirstOrDefault(x => x.IsKeyboard && x.HardwareID.ToLower() == slotData.KeyboardHardwareId.ToLower()) == null)
                    {
                        // Keyboard is not connected
                        return(GameStatus.KeyboardMissing);
                    }
                }

                if (slotData.MouseHardwareId != string.Empty)
                {
                    if (inputDevices.FirstOrDefault(x => !x.IsKeyboard && x.HardwareID.ToLower() == slotData.MouseHardwareId.ToLower()) == null)
                    {
                        // Mouse is not connected
                        return(GameStatus.MouseMissing);
                    }
                }

                if (!PresetDataManager.IsProtectedPreset(slotData.PresetName))
                {
                    if (PresetDataManager.CurrentPresets.FirstOrDefault(x => x.Name.ToLower() == slotData.PresetName) == null)
                    {
                        // Preset unavailable
                        return(GameStatus.PresetMissing);
                    }
                }
            }

            return(GameStatus.OK);
        }
 private bool IsProtectedPreset(string presetName)
 {
     return(PresetDataManager.IsProtectedPreset(presetName));
 }