pkgsrc/games/falcons-eye/patches/patch-bf
pooka 60c5a78963 Falcon's Eye 1.9.3, isometric Nethack with real graphics.
Originally supplied by collver@linuxfreemail.com in pkg/14359 and
subsequently modified somewhat mostly by him.
2002-01-21 11:56:16 +00:00

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