|
|
|
@ -57,7 +57,7 @@ extern "C" {
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
Ship::Window::ControllerApi->Init(controllerBits);
|
|
|
|
|
Ship::GlobalCtx2::GetInstance()->GetWindow()->GetControlDeck()->Init(controllerBits);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
@ -77,7 +77,7 @@ extern "C" {
|
|
|
|
|
pad->gyro_y = 0;
|
|
|
|
|
|
|
|
|
|
if (!CVar_GetS32("gOpenMenuBar", 0)) {
|
|
|
|
|
Ship::Window::ControllerApi->WriteToPad(pad);
|
|
|
|
|
Ship::GlobalCtx2::GetInstance()->GetWindow()->GetControlDeck()->WriteToPad(pad);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ModInternal::ExecuteHooks<ModInternal::ControllerRead>(pad);
|
|
|
|
@ -221,7 +221,7 @@ namespace Ship {
|
|
|
|
|
|
|
|
|
|
int32_t Window::lastScancode;
|
|
|
|
|
|
|
|
|
|
Window::Window(std::shared_ptr<GlobalCtx2> Context) : Context(Context), APlayer(nullptr) {
|
|
|
|
|
Window::Window(std::shared_ptr<GlobalCtx2> Context) : Context(Context), APlayer(nullptr), ControllerApi(nullptr) {
|
|
|
|
|
WmApi = nullptr;
|
|
|
|
|
RenderingApi = nullptr;
|
|
|
|
|
bIsFullscreen = false;
|
|
|
|
@ -259,8 +259,9 @@ namespace Ship {
|
|
|
|
|
std::shared_ptr<Mercury> pConf = GlobalCtx2::GetInstance()->GetConfig();
|
|
|
|
|
|
|
|
|
|
CreateDefaults();
|
|
|
|
|
InitializeAudioPlayer();
|
|
|
|
|
InitializeControlDeck();
|
|
|
|
|
|
|
|
|
|
SetAudioPlayer();
|
|
|
|
|
bIsFullscreen = pConf->getBool("Window.Fullscreen.Enabled", false);
|
|
|
|
|
|
|
|
|
|
if (bIsFullscreen) {
|
|
|
|
@ -279,7 +280,7 @@ namespace Ship {
|
|
|
|
|
WmApi->set_fullscreen_changed_callback(OnFullscreenChanged);
|
|
|
|
|
WmApi->set_keyboard_callbacks(KeyDown, KeyUp, AllKeysUp);
|
|
|
|
|
|
|
|
|
|
ModInternal::RegisterHook<ModInternal::ExitGame>([]() {
|
|
|
|
|
ModInternal::RegisterHook<ModInternal::ExitGame>([this]() {
|
|
|
|
|
ControllerApi->SaveControllerSettings();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -347,8 +348,9 @@ namespace Ship {
|
|
|
|
|
lastScancode = -1;
|
|
|
|
|
|
|
|
|
|
bool bIsProcessed = false;
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(ControllerApi->physicalDevices[ControllerApi->physicalDevices.size() - 2].get());
|
|
|
|
|
if (pad != nullptr) {
|
|
|
|
|
auto controlDeck = GlobalCtx2::GetInstance()->GetWindow()->GetControlDeck();
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(controlDeck->GetPhysicalDevice(controlDeck->GetNumPhysicalDevices() - 2).get());
|
|
|
|
|
if (pad != nullptr) {
|
|
|
|
|
if (pad->ReleaseButton(dwScancode)) {
|
|
|
|
|
bIsProcessed = true;
|
|
|
|
|
}
|
|
|
|
@ -359,9 +361,9 @@ namespace Ship {
|
|
|
|
|
|
|
|
|
|
bool Window::KeyDown(int32_t dwScancode) {
|
|
|
|
|
bool bIsProcessed = false;
|
|
|
|
|
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(ControllerApi->physicalDevices[ControllerApi->physicalDevices.size() - 2].get());
|
|
|
|
|
if (pad != nullptr) {
|
|
|
|
|
auto controlDeck = GlobalCtx2::GetInstance()->GetWindow()->GetControlDeck();
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(controlDeck->GetPhysicalDevice(controlDeck->GetNumPhysicalDevices() - 2).get());
|
|
|
|
|
if (pad != nullptr) {
|
|
|
|
|
if (pad->PressButton(dwScancode)) {
|
|
|
|
|
bIsProcessed = true;
|
|
|
|
|
}
|
|
|
|
@ -374,7 +376,8 @@ namespace Ship {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Window::AllKeysUp(void) {
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(ControllerApi->physicalDevices[ControllerApi->physicalDevices.size() - 2].get());
|
|
|
|
|
auto controlDeck = GlobalCtx2::GetInstance()->GetWindow()->GetControlDeck();
|
|
|
|
|
const auto pad = dynamic_cast<KeyboardController*>(controlDeck->GetPhysicalDevice(controlDeck->GetNumPhysicalDevices() - 2).get());
|
|
|
|
|
if (pad != nullptr) {
|
|
|
|
|
pad->ReleaseAllButtons();
|
|
|
|
|
}
|
|
|
|
@ -400,7 +403,7 @@ namespace Ship {
|
|
|
|
|
return dwHeight;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Window::SetAudioPlayer() {
|
|
|
|
|
void Window::InitializeAudioPlayer() {
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
APlayer = std::make_shared<WasapiAudioPlayer>();
|
|
|
|
|
#elif defined(__linux)
|
|
|
|
@ -409,4 +412,8 @@ namespace Ship {
|
|
|
|
|
APlayer = std::make_shared<SDLAudioPlayer>();
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Window::InitializeControlDeck() {
|
|
|
|
|
ControllerApi = std::make_shared<ControlDeck>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|