This commit is contained in:
Joan
2025-11-27 16:27:01 +01:00
parent 33cc9586c2
commit 81f8912059
304 changed files with 56149 additions and 10122 deletions

129
pwa/electron/main.js Normal file
View File

@@ -0,0 +1,129 @@
const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')
let steamworks = null
let steamInitialized = false
// Try to initialize Steam
function initializeSteam() {
try {
// Only try to load steamworks if steam_appid.txt exists
const fs = require('fs')
const steamAppIdPath = path.join(__dirname, '../public/steam_appid.txt')
if (fs.existsSync(steamAppIdPath)) {
steamworks = require('steamworks.js')
const client = steamworks.init(480) // Test App ID - replace with your Steam App ID
steamInitialized = true
console.log('✅ Steam initialized successfully')
console.log('Steam User:', client.localplayer.getName())
console.log('Steam ID:', client.localplayer.getSteamId().steamId64)
return client
} else {
console.log(' steam_appid.txt not found, running without Steam')
return null
}
} catch (error) {
console.log(' Steam not available:', error.message)
steamInitialized = false
return null
}
}
const steamClient = initializeSteam()
function createWindow() {
const win = new BrowserWindow({
width: 1200,
height: 800,
minWidth: 800,
minHeight: 600,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
},
icon: path.join(__dirname, 'icons/icon.png'),
title: 'Echoes of the Ash'
})
// In production, load the built files
if (app.isPackaged) {
win.loadFile(path.join(__dirname, '../dist/index.html'))
} else {
// In development, load from dev server
win.loadURL('http://localhost:5173')
win.webContents.openDevTools()
}
// Handle window close
win.on('closed', () => {
if (steamClient) {
steamworks.runCallbacks()
}
})
}
// IPC Handlers
ipcMain.handle('get-steam-auth', async () => {
if (steamInitialized && steamClient) {
try {
const player = steamClient.localplayer
return {
available: true,
steamId: player.getSteamId().steamId64,
steamName: player.getName()
}
} catch (error) {
console.error('Error getting Steam auth:', error)
return { available: false }
}
}
return { available: false }
})
ipcMain.handle('is-steam-available', async () => {
return steamInitialized
})
ipcMain.handle('get-platform', async () => {
return process.platform
})
// App lifecycle
app.whenReady().then(() => {
createWindow()
// Run Steam callbacks periodically if Steam is initialized
if (steamInitialized && steamClient) {
setInterval(() => {
try {
steamworks.runCallbacks()
} catch (error) {
console.error('Error running Steam callbacks:', error)
}
}, 1000)
}
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
// Cleanup on quit
app.on('before-quit', () => {
if (steamClient) {
try {
steamworks.runCallbacks()
} catch (error) {
console.error('Error during Steam cleanup:', error)
}
}
})