// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2024 Pomelo, Stossy11 // SPDX-License-Identifier: GPL-3.0-or-later import SwiftUI import Foundation import UIKit import UniformTypeIdentifiers struct GameButtonListView: View { var game: EmulationGame @Environment(\.colorScheme) var colorScheme var body: some View { HStack(spacing: 15) { if let image = UIImage(data: game.imageData) { Image(uiImage: image) .resizable() .frame(width: 60, height: 60) .cornerRadius(8) } else { Image(systemName: "photo") .resizable() .frame(width: 60, height: 60) .cornerRadius(8) } VStack(alignment: .leading, spacing: 4) { Text(game.title) .font(.headline) .foregroundColor(colorScheme == .dark ? Color.white : Color.black) Text(game.developer) .font(.subheadline) .foregroundColor(.gray) } Spacer() } .padding(.vertical, 8) } } struct GameListView: View { @State var core: Core @State private var searchText = "" @State var game: Int = 1 @State var startgame: Bool = false @Binding var isGridView: Bool @State var showAlert = false @State var alertMessage: Alert? = nil var body: some View { let filteredGames = core.games.filter { game in guard let EmulationGame = game as? PoYuzume else { return false } return searchText.isEmpty || EmulationGame.title.localizedCaseInsensitiveContains(searchText) } ScrollView { VStack { VStack(alignment: .leading) { if isGridView { LazyVGrid(columns: [GridItem(.adaptive(minimum: 160))], spacing: 10) { ForEach(0..