60c5a78963
Originally supplied by collver@linuxfreemail.com in pkg/14359 and subsequently modified somewhat mostly by him.
468 lines
9.4 KiB
Text
468 lines
9.4 KiB
Text
$NetBSD: patch-bf,v 1.1.1.1 2002/01/21 11:56:18 pooka Exp $
|
|
|
|
--- /dev/null Sun Dec 2 19:51:52 2001
|
|
+++ src/fe-config.in Wed Nov 28 12:19:38 2001
|
|
@@ -0,0 +1,463 @@
|
|
+#!/bin/ksh
|
|
+fe_prefix=XXXPREFIXXXX
|
|
+fe_config="${fe_prefix}/share/falcons-eye-dir/config/jtp_opts.txt"
|
|
+fe_output=""
|
|
+if [ ! -f "$fe_config" ]
|
|
+then
|
|
+ touch "$fe_config"
|
|
+ if [ $? -ne 0 ]
|
|
+ then
|
|
+ echo "Cannot find nor create $fe_config..."
|
|
+ exit 1
|
|
+ fi
|
|
+fi
|
|
+settings=$(grep '^[^%].*=' "$fe_config"|sed 's/=\(.*\)/="\1"/')
|
|
+orig_settings=$(echo "$settings"|sed 's/^/orig_/')
|
|
+variables="screen_xsize screen_ysize fullscreen play_music play_effects
|
|
+ linux_midi_player linux_mp3_player wall_style recenter_after_movement
|
|
+ one_command_per_click scroll_delay command_delay gamma_correction"
|
|
+eval "$settings"
|
|
+eval "$orig_settings"
|
|
+
|
|
+function __menu
|
|
+{
|
|
+ choices=$(echo "$2"|sed 's/\^/\
|
|
+/g')
|
|
+ max=$(echo "$choices"|wc -l)
|
|
+ title=$(echo "$1"|sed 's/_/ /g')
|
|
+ underline=$(echo "$title"|sed 's/./=/g')
|
|
+ ps=$(echo "$choices"|pr -n\ 1|grep ' ')
|
|
+ ps=$(echo -e "\n\n$title\n$underline\n\n$ps\n\nPlease choose> ")
|
|
+ input=""
|
|
+ while [ "$input" -lt 1 -o "$input" -gt "$max" ]
|
|
+ do
|
|
+ clear
|
|
+ read input?"$ps"
|
|
+ input=$(echo "$input"|cut -c 1)
|
|
+ done
|
|
+ choice=$(echo "$choices"|head -n +$input|tail -n 1|cut -d ' ' -f 1)
|
|
+ if [ "$choice" != "return" ]
|
|
+ then
|
|
+ ${choice}_menu ${choice}
|
|
+ return 1
|
|
+ fi
|
|
+ return 0
|
|
+}
|
|
+
|
|
+function do_toggle
|
|
+{
|
|
+ toggle_value=$(eval echo \$$1)
|
|
+ if [ "$toggle_value" -eq 1 ]
|
|
+ then
|
|
+ eval $1=0
|
|
+ else
|
|
+ eval $1=1
|
|
+ fi
|
|
+}
|
|
+
|
|
+function read_value
|
|
+{
|
|
+ rmin="$1"
|
|
+ rps="$2"
|
|
+ rvalue=$(($min-1))
|
|
+ while [ "$rvalue" -lt "$rmin" ]
|
|
+ do
|
|
+ read rvalue?"$rps"
|
|
+ rvalue=$(echo "$rvalue"|sed 's/^\([0-9]*\).*/\1/')
|
|
+ done
|
|
+ return $rvalue
|
|
+}
|
|
+
|
|
+read_float_value_return=0
|
|
+function read_float_value
|
|
+{
|
|
+ rmin="$1"
|
|
+ rmax="$2"
|
|
+ rps="$3"
|
|
+ rvalue=$(echo "$rmin-1"|bc)
|
|
+ while [ "$(echo \"$rvalue<$rmin\"|bc)" -eq 1 -o \
|
|
+ "$(echo \"$rvalue>$rmax\"|bc)" -eq 1 ]
|
|
+ do
|
|
+ read rvalue?"$rps"
|
|
+ done
|
|
+ rvalue=$(echo "$rvalue"|sed 's/^\./0./')
|
|
+ read_float_value_return="$rvalue"
|
|
+}
|
|
+
|
|
+function find_line
|
|
+{
|
|
+ return $(grep -n "^$1=" "$fe_output"|head -1|cut -d : -f 1)
|
|
+}
|
|
+
|
|
+function find_commented_line
|
|
+{
|
|
+ return $(grep -n "^%$1=" "$fe_output"|head -1|cut -d : -f 1)
|
|
+}
|
|
+
|
|
+function edit_replace_line
|
|
+{
|
|
+ echo -e "$1\nd\ni\n$2\n.\nwq\n" | ed "$fe_output" >/dev/null 2>&1
|
|
+ return $?
|
|
+}
|
|
+
|
|
+function edit_insert_line
|
|
+{
|
|
+ echo -e "$1\ni\n$2\n.\nwq\n" | ed "$fe_output" >/dev/null 2>&1
|
|
+ return $?
|
|
+}
|
|
+
|
|
+function edit_append_line
|
|
+{
|
|
+ echo "$1" >>"$fe_output"
|
|
+ return $?
|
|
+}
|
|
+
|
|
+function save_changes
|
|
+{
|
|
+ retval=0
|
|
+ for var in $variables
|
|
+ do
|
|
+ value=$(eval echo \$$var)
|
|
+ if [ "$value" != "$(eval echo \$orig_$var)" ]
|
|
+ then
|
|
+ find_line "$var"
|
|
+ line=$?
|
|
+ if [ $line -gt 1 ]
|
|
+ then
|
|
+ edit_replace_line $line "$var=$value"
|
|
+ result=$?
|
|
+ else
|
|
+ find_commented_line "$var"
|
|
+ line=$?
|
|
+ if [ $line -gt 1 ]
|
|
+ then
|
|
+ edit_insert_line $line "$var=$value"
|
|
+ result=$?
|
|
+ else
|
|
+ edit_append_line "$var=$value"
|
|
+ result=$?
|
|
+ fi
|
|
+ fi
|
|
+ if [ $result -ne 0 ]
|
|
+ then
|
|
+ retval=$result
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ return $retval
|
|
+}
|
|
+
|
|
+function use_tmp_menu
|
|
+{
|
|
+ fe_output=$(mktemp /tmp/jtp_opts.txt.XXXXXX)
|
|
+ cp "$fe_config" "$fe_output"
|
|
+}
|
|
+
|
|
+function use_home_menu
|
|
+{
|
|
+ fe_output=$(mktemp $HOME/jtp_opts.txt.XXXXXX)
|
|
+ cp "$fe_config" "$fe_output"
|
|
+}
|
|
+
|
|
+function use_default_path_menu
|
|
+{
|
|
+ fe_output="$fe_config"
|
|
+}
|
|
+
|
|
+function save_changes_menu
|
|
+{
|
|
+ __menu "$1" "use_default_path : $fe_config^use_tmp : write config file to /tmp^use_home : write config file to $HOME"
|
|
+ save_changes
|
|
+ if [ $? -ne 0 ]
|
|
+ then
|
|
+ echo -e "Error writing ${fe_output}...\nPress enter...\n"
|
|
+ read pause
|
|
+ else
|
|
+ echo -e "Finished writing ${fe_output}...\n"
|
|
+ if [ "$fe_output" != "$fe_config" ]
|
|
+ then
|
|
+ echo "To use new config:"
|
|
+ echo " cp ${fe_output} ${fe_config}"
|
|
+ fi
|
|
+ exit
|
|
+ fi
|
|
+}
|
|
+
|
|
+function quit_without_saving_menu
|
|
+{
|
|
+ exit
|
|
+}
|
|
+
|
|
+function have_settings_changed
|
|
+{
|
|
+ changed=0
|
|
+ for var in $variables
|
|
+ do
|
|
+ if [ "$(eval echo \$$var)" != "$(eval echo \$orig_$var)" ]
|
|
+ then
|
|
+ changed=1
|
|
+ fi
|
|
+ done
|
|
+ return $changed
|
|
+}
|
|
+
|
|
+function exit_menu
|
|
+{
|
|
+ have_settings_changed
|
|
+ if [ $? -eq 0 ]
|
|
+ then
|
|
+ exit
|
|
+ fi
|
|
+ __menu "$1" "save_changes^quit_without_saving"
|
|
+}
|
|
+
|
|
+function print_sound_warning
|
|
+{
|
|
+ if [ "$play_effects" -eq 1 ]
|
|
+ then
|
|
+ cat <<__EOF__
|
|
+
|
|
+You have sound effects turned on. Falcon's Eye Nethack uses SDL to play
|
|
+sound effects, and SDL is configured to directly use /dev/audio. The
|
|
+result is a conflict with external players that open /dev/audio.
|
|
+
|
|
+So you either can have musical scores played by mpg123 and timidity,
|
|
+or you can have sound effects.
|
|
+
|
|
+__EOF__
|
|
+ fi
|
|
+}
|
|
+
|
|
+function pick_player
|
|
+{
|
|
+ player_path="XXXPREFIXXXX/bin/$1"
|
|
+ "$1" >/dev/null 2>&1
|
|
+ if [ $? -ne 127 ]
|
|
+ then
|
|
+ player_path=$(which $1)
|
|
+ fi
|
|
+
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ print_sound_warning
|
|
+ echo "Example:"
|
|
+ echo " $player_path $2 %s"
|
|
+ echo -n "Please enter command to play $3 files> "
|
|
+ read $4
|
|
+ player_value=$(echo $(eval echo \$$4)|cut -d ' ' -f 1)
|
|
+ if [ ! -x "$player_value" ]
|
|
+ then
|
|
+ if [ "$player_value" = "" ]
|
|
+ then
|
|
+ looping=0
|
|
+ else
|
|
+ echo "Error: cannot execute $player_value"
|
|
+ fi
|
|
+ else
|
|
+ looping=0
|
|
+ fi
|
|
+ done
|
|
+}
|
|
+
|
|
+function pick_mp3_player_menu
|
|
+{
|
|
+ pick_player mpg123 "-q" "MP3" "linux_mp3_player"
|
|
+}
|
|
+
|
|
+function manual_enter_midi_player_menu
|
|
+{
|
|
+ pick_player timidity "-idqq" "MIDI" "linux_midi_player"
|
|
+}
|
|
+
|
|
+function midiplay_menu
|
|
+{
|
|
+ midi_port=99
|
|
+ max=$(midiplay -l|tail -1|cut -d : -f 1)
|
|
+ while [ "$midi_port" -lt 0 -o "$midi_port" -gt "$max" ]
|
|
+ do
|
|
+ echo ""
|
|
+ echo "MIDI ports"
|
|
+ echo "=========="
|
|
+ echo ""
|
|
+ midiplay -l
|
|
+ echo ""
|
|
+ read midi_port?"Please pick MIDI port> "
|
|
+ midi_port=$(echo "$midi_port"|cut -c 1)
|
|
+ done
|
|
+ if [ "$midi_port" -gt 0 ]
|
|
+ then
|
|
+ linux_midi_player="/usr/bin/midiplay -d$midi_port %s"
|
|
+ else
|
|
+ linux_midi_player="/usr/bin/midiplay %s"
|
|
+ fi
|
|
+}
|
|
+
|
|
+function pick_midi_player_menu
|
|
+{
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ midiplay -l >/dev/null 2>&1
|
|
+ if [ $? -ne 127 ]
|
|
+ then
|
|
+ menu_string="midiplay^"
|
|
+ else
|
|
+ menu_string=""
|
|
+ fi
|
|
+ menu_string="${menu_string}manual_enter_midi_player : \"$linux_midi_player\"^return to previous menu"
|
|
+ __menu "$1" "$menu_string"
|
|
+ looping=$?
|
|
+ done
|
|
+}
|
|
+
|
|
+function pick_players_menu
|
|
+{
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ __menu "$1" "pick_midi_player : \"$linux_midi_player\"^pick_mp3_player : \"$linux_mp3_player\"^return to previous menu"
|
|
+ looping=$?
|
|
+ done
|
|
+}
|
|
+
|
|
+function music_menu
|
|
+{
|
|
+ do_toggle play_music
|
|
+}
|
|
+
|
|
+function sound_effects_menu
|
|
+{
|
|
+ do_toggle play_effects
|
|
+}
|
|
+
|
|
+function audio_settings_menu
|
|
+{
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ menu_string="sound_effects : $play_effects^music : $play_music"
|
|
+ menu_string=$(echo "$menu_string"|sed -e 's/: 1/: on/g' -e 's/: 0/: off/g')
|
|
+ if [ "$play_music" -eq 1 ]
|
|
+ then
|
|
+ menu_string="${menu_string}^pick_players"
|
|
+ fi
|
|
+
|
|
+ __menu "$1" "${menu_string}^return to previous menu"
|
|
+ looping=$?
|
|
+ done
|
|
+}
|
|
+
|
|
+function fullscreen_menu
|
|
+{
|
|
+ do_toggle fullscreen
|
|
+}
|
|
+
|
|
+function screen_xsize_menu
|
|
+{
|
|
+ read_value 800 "Please enter x size (minimum 800) -> "
|
|
+ screen_xsize=$?
|
|
+}
|
|
+
|
|
+function screen_ysize_menu
|
|
+{
|
|
+ read_value 600 "Please enter y size (minimum 600) -> "
|
|
+ screen_ysize=$?
|
|
+}
|
|
+
|
|
+function gamma_correction_menu
|
|
+{
|
|
+ read_float_value 0 2 "Please enter gamma correction (dark 0.0 - light 2.0) -> "
|
|
+ gamma_correction="$read_float_value_return"
|
|
+}
|
|
+
|
|
+function wall_style_full_menu
|
|
+{
|
|
+ wall_style="full"
|
|
+}
|
|
+
|
|
+function wall_style_half_height_menu
|
|
+{
|
|
+ wall_style="half_height"
|
|
+}
|
|
+
|
|
+function wall_style_transparent_menu
|
|
+{
|
|
+ wall_style="transparent"
|
|
+}
|
|
+
|
|
+function wall_style_menu
|
|
+{
|
|
+ __menu "$1" "wall_style_full^wall_style_half_height^wall_style_transparent"
|
|
+}
|
|
+
|
|
+function video_settings_menu
|
|
+{
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ menu_string="fullscreen : $fullscreen^screen_xsize : \"$screen_xsize\"^screen_ysize : \"$screen_ysize\"^wall_style : \"$wall_style\"^gamma_correction : \"$gamma_correction\"^return to previous menu"
|
|
+ menu_string=$(echo "$menu_string"|sed -e 's/: 1/: on/g' -e 's/: 0/: off/g')
|
|
+ __menu "$1" "$menu_string"
|
|
+ looping=$?
|
|
+ done
|
|
+}
|
|
+
|
|
+function recenter_after_movement_menu
|
|
+{
|
|
+ do_toggle recenter_after_movement
|
|
+}
|
|
+
|
|
+function one_command_per_click_menu
|
|
+{
|
|
+ do_toggle one_command_per_click
|
|
+}
|
|
+
|
|
+function scroll_delay_menu
|
|
+{
|
|
+ read_float_value 0 10 "Please enter scroll delay (0 - 10 seconds) -> "
|
|
+ scroll_delay="$read_float_value_return"
|
|
+}
|
|
+
|
|
+function command_delay_menu
|
|
+{
|
|
+ read_float_value 0 10 "Please enter command delay (0 - 10 seconds) -> "
|
|
+ command_delay="$read_float_value_return"
|
|
+}
|
|
+
|
|
+function interface_settings_menu
|
|
+{
|
|
+ looping=1
|
|
+ while [ "$looping" -eq 1 ]
|
|
+ do
|
|
+ menu_string="recenter_after_movement : $recenter_after_movement^one_command_per_click : $one_command_per_click^scroll_delay : \"$scroll_delay\"^command_delay : \"$command_delay\"^return to previous menu"
|
|
+ menu_string=$(echo "$menu_string"|sed -e 's/: 1/: on/g' -e 's/: 0/: off/g')
|
|
+ __menu "$1" "$menu_string"
|
|
+ looping=$?
|
|
+ done
|
|
+}
|
|
+
|
|
+function about_menu
|
|
+{
|
|
+ less -d <<__EOF__
|
|
+This script generates a configuration file for falcon's eye nethack.
|
|
+Some assumptions are made by this script, for example, that you are
|
|
+running NetBSD, and that you do not have multiple sound cards.
|
|
+__EOF__
|
|
+ main_menu
|
|
+}
|
|
+
|
|
+function view_config_file_menu
|
|
+{
|
|
+ less -d "$fe_config"
|
|
+}
|
|
+
|
|
+function main_menu
|
|
+{
|
|
+ __menu "main" "about^audio_settings^video_settings^interface_settings^view_config_file^exit"
|
|
+}
|
|
+
|
|
+while :
|
|
+do
|
|
+ main_menu
|
|
+done
|