f852369986
* Initial Commit Added Device logic to Sinks Started on UI for selecting devices Removed redundant import * Audio Core: Complete Device Switching Complete the device switching implementation by allowing the output device to be loaded, changed and saved through the configurations menu. Worked with the Sink abstraction and tuned the "Device Selection" configuration so that the Device List is automatically populated when the Sink is changed. This hopefully addresses the concerns and recommendations mentioned in the comments of the PR. * Clean original implementation. * Refactor GetSinkDetails
120 lines
2.4 KiB
C++
120 lines
2.4 KiB
C++
// Copyright 2014 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <array>
|
|
#include <string>
|
|
#include "common/common_types.h"
|
|
|
|
namespace Settings {
|
|
|
|
enum class LayoutOption {
|
|
Default,
|
|
SingleScreen,
|
|
LargeScreen,
|
|
Custom,
|
|
};
|
|
|
|
namespace NativeInput {
|
|
|
|
enum Values {
|
|
// directly mapped keys
|
|
A,
|
|
B,
|
|
X,
|
|
Y,
|
|
L,
|
|
R,
|
|
ZL,
|
|
ZR,
|
|
START,
|
|
SELECT,
|
|
HOME,
|
|
DUP,
|
|
DDOWN,
|
|
DLEFT,
|
|
DRIGHT,
|
|
CUP,
|
|
CDOWN,
|
|
CLEFT,
|
|
CRIGHT,
|
|
|
|
// indirectly mapped keys
|
|
CIRCLE_UP,
|
|
CIRCLE_DOWN,
|
|
CIRCLE_LEFT,
|
|
CIRCLE_RIGHT,
|
|
CIRCLE_MODIFIER,
|
|
|
|
NUM_INPUTS
|
|
};
|
|
|
|
static const std::array<const char*, NUM_INPUTS> Mapping = {{
|
|
// directly mapped keys
|
|
"pad_a", "pad_b", "pad_x", "pad_y", "pad_l", "pad_r", "pad_zl", "pad_zr", "pad_start",
|
|
"pad_select", "pad_home", "pad_dup", "pad_ddown", "pad_dleft", "pad_dright", "pad_cup",
|
|
"pad_cdown", "pad_cleft", "pad_cright",
|
|
|
|
// indirectly mapped keys
|
|
"pad_circle_up", "pad_circle_down", "pad_circle_left", "pad_circle_right",
|
|
"pad_circle_modifier",
|
|
}};
|
|
static const std::array<Values, NUM_INPUTS> All = {{
|
|
A, B, X, Y, L, R, ZL, ZR,
|
|
START, SELECT, HOME, DUP, DDOWN, DLEFT, DRIGHT, CUP,
|
|
CDOWN, CLEFT, CRIGHT, CIRCLE_UP, CIRCLE_DOWN, CIRCLE_LEFT, CIRCLE_RIGHT, CIRCLE_MODIFIER,
|
|
}};
|
|
}
|
|
|
|
struct Values {
|
|
// CheckNew3DS
|
|
bool is_new_3ds;
|
|
|
|
// Controls
|
|
std::array<int, NativeInput::NUM_INPUTS> input_mappings;
|
|
float pad_circle_modifier_scale;
|
|
|
|
// Core
|
|
bool use_cpu_jit;
|
|
|
|
// Data Storage
|
|
bool use_virtual_sd;
|
|
|
|
// System Region
|
|
int region_value;
|
|
|
|
// Renderer
|
|
bool use_hw_renderer;
|
|
bool use_shader_jit;
|
|
float resolution_factor;
|
|
bool use_vsync;
|
|
bool toggle_framelimit;
|
|
|
|
LayoutOption layout_option;
|
|
bool swap_screen;
|
|
|
|
float bg_red;
|
|
float bg_green;
|
|
float bg_blue;
|
|
|
|
std::string log_filter;
|
|
|
|
// Audio
|
|
std::string sink_id;
|
|
bool enable_audio_stretching;
|
|
std::string audio_device_id;
|
|
|
|
// Debugging
|
|
bool use_gdbstub;
|
|
u16 gdbstub_port;
|
|
} extern values;
|
|
|
|
// a special value for Values::region_value indicating that citra will automatically select a region
|
|
// value to fit the region lockout info of the game
|
|
static constexpr int REGION_VALUE_AUTO_SELECT = -1;
|
|
|
|
void Apply();
|
|
}
|