Quick changes

This commit is contained in:
Stossy11 2024-12-01 08:38:32 +11:00
parent 860d4d363d
commit 464f14f143
5 changed files with 43 additions and 25 deletions

View File

@ -554,6 +554,11 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
@ -646,6 +651,11 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
); );
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;

View File

@ -11,8 +11,8 @@ import SDL2
import GameController import GameController
struct Controller: Identifiable, Hashable { struct Controller: Identifiable, Hashable {
let id: String var id: String
let name: String var name: String
} }
struct iOSNav<Content: View>: View { struct iOSNav<Content: View>: View {
@ -205,6 +205,7 @@ class Ryujinx {
func getConnectedControllers() -> [Controller] { func getConnectedControllers() -> [Controller] {
guard let jsonPtr = get_game_controllers() else { guard let jsonPtr = get_game_controllers() else {
return [] return []
} }

View File

@ -25,6 +25,7 @@ struct ContentView: View {
@State private var config: Ryujinx.Configuration @State private var config: Ryujinx.Configuration
@State private var settings: [MoltenVKSettings] @State private var settings: [MoltenVKSettings]
@State private var isVirtualControllerActive: Bool = false @State private var isVirtualControllerActive: Bool = false
@State var onscreencontroller: Controller?
// MARK: - Initialization // MARK: - Initialization
init() { init() {
@ -89,11 +90,9 @@ struct ContentView: View {
Section("Controller") { Section("Controller") {
Button("Refresh", action: refreshControllersList) Button("Refresh", action: refreshControllersList)
Divider()
ForEach(controllersList, id: \.self) { controller in ForEach(controllersList, id: \.self) { controller in
if controller.name != "Apple Touch Controller" { controllerRow(for: controller)
controllerRow(for: controller)
}
} }
} }
} }
@ -128,15 +127,11 @@ struct ContentView: View {
virtualController = GCVirtualController(configuration: configuration) virtualController = GCVirtualController(configuration: configuration)
virtualController?.connect() virtualController?.connect()
controllersList.removeAll(where: { $0.name == "Apple Touch Controller" })
} }
private func destroyVirtualController() { private func destroyVirtualController() {
virtualController?.disconnect() virtualController?.disconnect()
virtualController = nil virtualController = nil
// Remove virtual controller from current controllers
controllersList.removeAll(where: { $0.name == "Apple Touch Controller" })
} }
// MARK: - Helper Methods // MARK: - Helper Methods
@ -152,33 +147,45 @@ struct ContentView: View {
private func setupEmulation() { private func setupEmulation() {
virtualController?.disconnect() virtualController?.disconnect()
if controllersList.first(where: { $0 == onscreencontroller}) != nil {
controllerCallback = { controllerCallback = {
DispatchQueue.main.async { DispatchQueue.main.async {
controllersList = Ryujinx.shared.getConnectedControllers() controllersList = Ryujinx.shared.getConnectedControllers()
currentControllers.removeAll(where: { $0.name == "Apple Touch Controller" })
if controllersList.count == 2, print(currentControllers)
controllersList.contains(where: { $0.name == "Apple Touch Controller" }) { start(displayid: 1)
currentControllers.append(controllersList[1])
} }
}
showVirtualController()
} else {
DispatchQueue.main.async {
print(currentControllers) print(currentControllers)
start(displayid: 1) start(displayid: 1)
} }
} }
showVirtualController()
} }
private func refreshControllersList() { private func refreshControllersList() {
Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { _ in Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { _ in
controllersList = Ryujinx.shared.getConnectedControllers() controllersList = Ryujinx.shared.getConnectedControllers()
controllersList.removeAll(where: { $0.id == "0" }) var controller = controllersList.first(where: { $0.name == "Apple Touch Controller" })
controllersList.removeAll(where: { $0.name == "Apple Touch Controller" }) controllersList.removeAll(where: { $0.name == "Apple Touch Controller" })
if let controller = controllersList.first, !controllersList.isEmpty { controller?.name = "On-Screen Controller"
onscreencontroller = controller
controllersList.append(controller!)
// controllersList.removeAll(where: { $0.name == "Apple Touch Controller" })
if controllersList.count > 2 {
let controller = controllersList[2]
currentControllers.append(controller)
} else if let controller = controllersList.first(where: { $0.id == controller?.id }), !controllersList.isEmpty {
currentControllers.append(controller) currentControllers.append(controller)
} }
} }

View File

@ -110,7 +110,7 @@ namespace Ryujinx.Graphics.Vulkan
_textures.AsSpan().Fill(initialImageInfo); _textures.AsSpan().Fill(initialImageInfo);
_images.AsSpan().Fill(initialImageInfo); _images.AsSpan().Fill(initialImageInfo);
if (gd.Capabilities.SupportsNullDescriptors && !OperatingSystem.IsIOS()) if (gd.Capabilities.SupportsNullDescriptors)
{ {
// If null descriptors are supported, we can pass null as the handle. // If null descriptors are supported, we can pass null as the handle.
_dummyBuffer = null; _dummyBuffer = null;