133 lines
3.3 KiB
TypeScript
133 lines
3.3 KiB
TypeScript
/**
|
|
* 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
|
|
}
|
|
|
|
/** Métadonnées du modpack lues depuis le pack.toml packwiz distant. */
|
|
export interface PackMeta {
|
|
name: string
|
|
version: string
|
|
minecraft: string
|
|
neoforge: string
|
|
}
|
|
|
|
/** Options de la séquence "Jouer". */
|
|
export interface PlayOptions {
|
|
/** Force la revérification/redownload des fichiers (réparation). */
|
|
repair?: boolean
|
|
}
|
|
|
|
/** 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: []
|
|
}
|
|
|
|
/** Informations sur le dossier de données actuel. */
|
|
export interface DataDirInfo {
|
|
/** Chemin actuellement utilisé. */
|
|
current: string
|
|
/** Suggestion par défaut (~Games/OFLauncher). */
|
|
defaultSuggestion: string
|
|
}
|
|
|
|
/** 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',
|
|
openLogsDir: 'logs:open',
|
|
playStop: 'play:stop',
|
|
packGet: 'pack:get',
|
|
updateInstall: 'update:install',
|
|
isFirstLaunch: 'app:isFirstLaunch',
|
|
dataDirGet: 'dataDir:get',
|
|
dataDirBrowse: 'dataDir:browse',
|
|
dataDirSet: 'dataDir:set'
|
|
} 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
|