Spouštěč pro FlightGear

FlightGear je moc pěkný OSS simulátor civilního létání. O tom, že je v mém repozitáři, jsem již psal. FlightGear už v základním balíku nabízí asi dvacet letadel, kromě zmíněné Cessna 172P Skyhaw je to například vzducholoď Zeppelin NT07 nebo Boeing 777-200ER. Celkem hra ovšem nabízí více jak 350 letadel. Hra po nainstalování bohužel neobsahuje žádnou grafickou možnost pro výběr letadla tak, jako pro změnu letiště – pomocí nabídky. Až doteď.

Výběr letadla má běžně dva kroky a oba se dějí v terminálu. Prvním z těchto kroků je vypsání si dostupných letadel a hlavně jejich značek. To provedete příkazem:

fgfs --show-aircraft

Tento příkaz ukáže dva sloupce. V prvním sloupci jsou značky a ve druhém popisy letadel. Značka je jednoznačný ukazatel tohoto letadla. Na následujícím příkladu vidíte, že pro Boeing 777-200ER je značka „777-200ER“.

[petos@Dolphin ~]$ fgfs --show-aircraft
Available aircraft:
777-200ER Boeing 777-200ER
A6M2 A6M2 Zero
A6M2-jsbsim A6M2 Zero (JSBSim)
CitationX Cessna Citation-X
Dragonfly Moyes Dragonfly

Pokud víte značku, spustíte FlightGear tímto příkazem:

fgfs --aircraft=ZNACKA

tedy pro náš příklad s Boeingem je to

fgfs --aircraft=777-200ER

Stejně jako je ve hře skoro celý svět, jsou ve hře poměrně početně zastoupena i letadla. A to od létajícího Igráčka v letadle, vzducholoď či dvojplošník, ale i Airbusy či Concord. Jak na to? Oficiální způsob je stáhnout si vybrané letadlo ze stránek hry. V adresáři, do kterého se hra instalovala (/usr/share/games/Flightgear) najděte adresář Aircraft a do něj rozbalte obsah archivu. Nyní máte při volbě letadla o právě nainstalované volby více. Odebrání letadla poté provedete pouze smazáním příslušného adresáře.

Nové balíčky v repozitáři

Celkem tedy, jak již bylo řečeno, můžete mít až asi 370 letadel. V mém repozitáři jsou k dispozici balíčky se všemi dostupnými letadly jen pro vás. Stačí si vybrat a pomocí správce software nainstalovat. Balíčky se jmenují flightgear-data-JMENO-LETADLA.

FlightGear--Petošův unikátní spouštěč
FlightGear -- Petošův unikátní spouštěč

A to není vše! Bohužel je pravdou, že možnost vybrat si letadlo pouze z terminálu není nejšikovnější. Abyste nemuseli hru pouštět přes terminál, automaticky se vám z mého repozitáře nainstaluje i grafický spouštěč, který vám dá na výběr letadlo. Stačí doinstalovat malý balíček flightgear-spoustec, který opět naleznete v mém repozitáři. Po nainstalování balíčku se vám kromě klasického Flight Gearu v nabídce vytvoří i FlighGear – Peťošův spouštěč: pomocí jednoduché grafické nabídky si to své letadlo vyberete a spustíte.

Jak funguje spoustěč

Spouštěč samotný je poměrně jednoduchý skriptík využívající awk a Xdisplay. Pracuje ve dvou krocích:
#!/bin/bash

POCET=$(fgfs --show-aircraft | wc -l)
rm -f $TMP/generuj.tmp
cat << EOF > $TMP/generuj.tmp
Xdialog --title "Peťošův spouštěč hry FlightGear" --menubox "Seznam níže ukrývá netušené možnosti... nebo tušené. \\n Vyberte si jedno letadlo a klepněte na OK. Pokud se nic nestane, máte nejspíše špatný motiv GTK. \\n Přestože jsem skript upravoval, aby k tomu nedocházelo, tak stát se to někdy může... \\n S pozdravem Peťoš http://petos.cz" -0 -0 $POCET
EOF

fgfs --show-aircraft | sed s/[\'\"]/\(/g | awk '{print "\""$1"\"" " \""$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9 "\" "}' | tr -d "\n" >> $TMP/generuj.tmp

cat $TMP/generuj.tmp | tr -d "\n" > $TMP/generuj.tmp2

V této části se vygeneruje soubor jménem generuj.tmp v adresáři definovaném systémovou proměnnou $TMP.  Do něj se uloží popisek (–title) a úvodní text (–menubox). Druhý odstavec postupně setřídí volací značku letadla a jeho popis. Nakonec pomocí programu tr odebírá všechny řádky. Je zřejmé, že spouštěč vždy generuje seznam z právě nainstalovaných letadel, přičemž nezáleží na tom, zda-li jste instalovali z mého repa nebo klasickou cestou přes oficiální stránky.

bash $TMP/generuj.tmp2 2> $TMP/menu.tmp
retval=$?
letadlo=$( tail -1 $TMP/menu.tmp)
rm -f $TMP/menu.tmp
rm -f $TMP/generuj.tmp
rm -f $TMP/generuj.tmp2

Zde spouštíme samotný Xdialog (první řádek) a ukládá exitcode do proměnné retval. Proměnná letadlo pouští tail ve vnořeném shellu, protože v některých případech může být v menu.tmp uložena i chybová hláška GTK. Bohužel zde nepomáhá směrování chybového výstupu programu — chyba GTK se vypisuje i tak… Nakonec se mažou dočasné soubory.

case $retval in
0) fgfs --aircraft=$letadlo ;;
1)Xdialog --title "Zpráva" --msgbox "Vypínám FlightGear" 20 0;;
255) Xdialog --title "Zpráva" --msgbox "Vypínám FlightGear" 20 0;;
esac

Podle exit-kódu a proměnné $letadlo spouštím flightgear se správnými parametry. Pokud je stisknut Cancel nebo křížek či Alt+F4, spouštěč to samozřejmě dá hned vědět 😉 Celý skript můžete stáhnout odtud a nahrát do /usr/local/bin. Pak hra bude fungovat. Pokud nahrajete i můj desktop file do /usr/share/applications/ a zadáte příkaz update-menus budete mít i novou položku v menu tak, jak píšu v první části.

Dejte si jen pozor, soubory jsou kódovány v UTF-8. Doporučuji použít funkci uložit jako… ve vašem prohlížeči…

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *