Outils pour utilisateurs

Outils du site


jeux:launcher

Pourquoi un lanceur ?

À l'origine, c'était pour pouvoir regrouper toute la “Penumbra Collection” dans un seul répertoire, mais avoir un lanceur graphique pour choisir l'épisode (plutôt qu'un répertoire par épisode).

Pour ça, j'ai créé un répertoire contenant toutes les bibliothèques nécessaires pour l'interpréteur Rebol, et un script par jeu nécessitant un lanceur.

penumbra
#!res/rebol -qs

REBOL [
  Title: "Penumbra Collection Launcher"
  Date: 10-May-2012
  File: %penumbra
  Author: "Cyriac BENOIT"
  Version: 0.0.1
  Purpose: "Choose game to launch in the collection"
  Language: 'English
]

launch: func [ name ] [
  unview
  cmd: copy "primusrun "
  flash rejoin [ "Launching " name ", please wait..." ]
  call/shell repend cmd name
  wait 5
  unview/all
  quit
]

view/title center-face layout [
  size 244x141
  at 5x5 box 234x100 0.0.0
  at 6x6 box 232x98 200.200.200
  at 10x10 image 64x64 %Overture/penumbra.png
  at 10x80 btn 64x20 "Overture" [ launch "./overture" ]
  at 90x10 image 64x64 %BlackPlague/penumbra.png
  at 90x80 btn 64x20 "Black Plague" [ launch "./blackplague" ]
  at 170x10 image 64x64 %BlackPlague/requiem.png
  at 170x80 btn 64x20 "Requiem" [ launch "./requiem" ]
  at 10x113 btn 224x20 "Quit" [ unview/all quit ]
] "Penumbra Collection Launcher"

; EoF

Bien entendu, ça marche pour tout et n'importe quoi, même l'émulation de vieille consoles :

emulators
#!res/rebol -qs

REBOL [
  Title: "Emulator Launcher"
  Date: 10-May-2012
  File: %launcher
  Author: "Cyriac BENOIT"
  Version: 0.0.3
  Purpose: "Choose game to launch in the collection"
  Language: 'English
]

launch: func [ path ] [
  list: copy []
  foreach file load path [
    ; Skip savefiles in the ROMs directory
    if %.sav != suffix? file [ append list file ]
  ]
  
  ; Will display machine name
  p: copy path
  rom: request-list rejoin [ "Choose a " trim/with p "/" " game:" ] sort list
  either rom == none [
    return
  ][
    cmd: copy ""
    switch suffix? rom [
      %.bin [ cmd: "gens --fs " ]
      %.smc [ cmd: "optirun zsnes " ]
      %.gba [ cmd: "VisualBoyAdvance -F -4 " ]
    ]
    unview
    rom: repend path rom
    flash rejoin [ "Launching " rom ", please wait..." ]
    cmd: rejoin [ cmd "'" to-local-file rom "' > run.log 2>&1" ]
    call/shell cmd
    wait 5
    unview/all
    quit 
  ]
]

view/title center-face layout [
  size 244x141
  at 5x5 box 234x100 0.0.0
  at 6x6 box 232x98 200.200.200
  at 10x10 image 64x64 %res/genesis.png
  at 10x80 btn 64x20 "Megadrive" [ launch %Genesis/ ]
  at 90x10 image 64x64 %res/snes.png
  at 90x80 btn 64x20 "SuperNES" [ launch %SNES/ ]
  at 170x10 image 64x64 %res/gba.png
  at 170x80 btn 64x20 "GBA" [ launch %GBA/ ]
  at 10x113 btn 224x20 "Quit" [ unview/all quit ]
] "Emulators launcher"

; EoF

Pour que le précédent script fonctionne, voici la hiérarchie utilisée :

Emulation
|
`- GBA
|  `- rom1.gba, rom2.gba, rom2.sav
|
`- Genesis
|  `- rom1.bin, rom2.bin  
|
`- SNES
   `- rom1.smc, rom2.smc

Mon fichier AppRun appelle simplement le lanceur.

Voici les bibliothèques (64 bits) nécessaires pour utiliser ces scripts : res.zip

jeux/launcher.txt · Dernière modification: 2015/12/04 16:18 par cyriac