first commit

This commit is contained in:
lucasdpt
2026-06-14 12:32:29 +02:00
commit cc4f90e840
32 changed files with 9729 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
/**
* Contrats partagés entre le process main et le renderer.
* Tout passe par le bridge `window.api` exposé dans le preload.
*/
/** Profil du joueur après login Microsoft. */
export interface PlayerProfile {
uuid: string
name: string
/** URL du skin/tête si disponible. */
skinUrl?: string
}
/** Phase courante de la séquence "Jouer". */
export type LaunchPhase =
| 'idle'
| 'auth'
| 'pack-meta'
| 'java'
| 'minecraft'
| 'neoforge'
| 'modpack'
| 'launching'
| 'running'
| 'done'
| 'error'
/** Événement de progression envoyé main -> renderer pendant "Jouer". */
export interface ProgressEvent {
phase: LaunchPhase
/** Libellé lisible à afficher. */
message: string
/** 0..1 si déterminable, sinon undefined (barre indéterminée). */
progress?: number
}
/** Ligne de log du jeu (stdout/stderr) streamée vers la console du renderer. */
export interface GameLogLine {
stream: 'stdout' | 'stderr'
line: string
}
/** Infos du flow "device code" Microsoft à présenter à l'utilisateur. */
export interface DeviceCodeInfo {
userCode: string
verificationUri: string
message: string
}
/** État de la mise à jour automatique du launcher (electron-updater). */
export type UpdateState =
| 'checking'
| 'available'
| 'downloading'
| 'downloaded'
| 'none'
| 'error'
/** Statut d'update envoyé main -> renderer pour piloter le bandeau de maj. */
export interface UpdateStatus {
state: UpdateState
/** Version distante (ex. "0.2.0") quand connue. */
version?: string
/** 0..1 pendant le téléchargement. */
progress?: number
/** Message d'erreur éventuel (state === 'error'). */
message?: string
}
/** Réglages utilisateur persistés localement. */
export interface UserSettings {
/** RAM max allouée à la JVM, en Mo. */
maxMemoryMb: number
/** Args JVM additionnels (avancé). */
extraJvmArgs: string[]
}
export const DEFAULT_SETTINGS: UserSettings = {
maxMemoryMb: 8192,
extraJvmArgs: []
}
/** Noms de canaux IPC (invoke renderer -> main). */
export const IPC = {
authLogin: 'auth:login',
authLogout: 'auth:logout',
authGetProfile: 'auth:getProfile',
play: 'play:start',
settingsGet: 'settings:get',
settingsSet: 'settings:set',
appVersion: 'app:version',
openInstanceDir: 'instance:open',
updateInstall: 'update:install'
} as const
/** Noms d'événements (send main -> renderer). */
export const IPC_EVENT = {
progress: 'evt:progress',
gameLog: 'evt:gameLog',
gameClosed: 'evt:gameClosed',
authCode: 'evt:authCode',
updateStatus: 'evt:updateStatus'
} as const