Renamed the menu. Added some dialog functions in preparation for moving to dialog.
This commit is contained in:
		
							
								
								
									
										95
									
								
								game_functions.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										95
									
								
								game_functions.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get the coluns and lines of the "screen"
 | 
				
			||||||
 | 
					cols=$(tput cols)
 | 
				
			||||||
 | 
					lines=$(tput lines)
 | 
				
			||||||
 | 
					# Settings to improve accessibility of dialog.
 | 
				
			||||||
 | 
					export DIALOGOPTS='--insecure --no-lines --visit-items'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inputbox() {
 | 
				
			||||||
 | 
					    # Returns: text entered by the user
 | 
				
			||||||
 | 
					    # Args 1, Instructions for box.
 | 
				
			||||||
 | 
					    # args: 2 initial text (optional)
 | 
				
			||||||
 | 
					    dialog --backtitle "$(gettext "Enter text and press enter.")" \
 | 
				
			||||||
 | 
					        --clear \
 | 
				
			||||||
 | 
					        --inputbox "$1" 0 0 "$2" --stdout
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msgbox() {
 | 
				
			||||||
 | 
					# Returns: None
 | 
				
			||||||
 | 
					# Shows the provided message on the screen with an ok button.
 | 
				
			||||||
 | 
					dialog --clear --msgbox "$*" 10 72
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					infobox() {
 | 
				
			||||||
 | 
					    # Returns: None
 | 
				
			||||||
 | 
					    # Shows the provided message on the screen with no buttons.
 | 
				
			||||||
 | 
					   local timeout=3 
 | 
				
			||||||
 | 
					    dialog --infobox "$*" 0 0
 | 
				
			||||||
 | 
					    read -n1 -t $timeout continue
 | 
				
			||||||
 | 
					    # Clear any keypresses from the buffer
 | 
				
			||||||
 | 
					    clear_buffer
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					yesno() {
 | 
				
			||||||
 | 
					    # Returns: Yes or No
 | 
				
			||||||
 | 
					    # Args: Question to user.
 | 
				
			||||||
 | 
					    # Called  in if $(yesno) == "Yes"
 | 
				
			||||||
 | 
					    # Or variable=$(yesno)
 | 
				
			||||||
 | 
					    if dialog --clear --backtitle "$(gettext "Press 'Enter' for \"yes\" or 'Escape' for \"no\".")" --yesno "$*" 0 0 ; then 
 | 
				
			||||||
 | 
					        echo "Yes"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo "No"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_keypress() {
 | 
				
			||||||
 | 
					    # Returnes the pressed key.
 | 
				
			||||||
 | 
					    # There arre two ways to use this function.
 | 
				
			||||||
 | 
					    # first way, get_keypress variableName
 | 
				
			||||||
 | 
					    # Second way variableName="$(get_keypress)"
 | 
				
			||||||
 | 
					    # This variable name is long to absolutely minimize possibility of collision.
 | 
				
			||||||
 | 
					    local getKeypressFunctionReturnVariable=$1
 | 
				
			||||||
 | 
					    local returnedKeypress
 | 
				
			||||||
 | 
					    # Unset IFS to capture any key that is pressed.
 | 
				
			||||||
 | 
					    local ifs="$IFS"
 | 
				
			||||||
 | 
					    unset IFS
 | 
				
			||||||
 | 
					    read -sn1 returnedKeypress
 | 
				
			||||||
 | 
					    # Restore IFS
 | 
				
			||||||
 | 
					    IFS="$ifs"
 | 
				
			||||||
 | 
					    if [[ $getKeypressFunctionReturnVariable ]]; then
 | 
				
			||||||
 | 
					        eval $getKeypressFunctionReturnVariable="'$returnedKeypress'"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo "$returnedKeypress"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					menulist() {
 | 
				
			||||||
 | 
					    # Args: menu options
 | 
				
			||||||
 | 
					    # returns: selected option
 | 
				
			||||||
 | 
					    # set gameMenu to control the message.
 | 
				
			||||||
 | 
					    declare -a menuList
 | 
				
			||||||
 | 
					    for i in $@ ; do
 | 
				
			||||||
 | 
					        menuList+=("$i" "$i")
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    dialog --backtitle "${menuMessage:-Game menu...}" \
 | 
				
			||||||
 | 
					        --clear \
 | 
				
			||||||
 | 
					        --no-tags \
 | 
				
			||||||
 | 
					        --menu "Please make your selection" 0 0 0 "${menuList[@]}" --stdout
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					numpicker() {
 | 
				
			||||||
 | 
					    # Args: max number, Min numberr optional.
 | 
				
			||||||
 | 
					    # returns: selected number
 | 
				
			||||||
 | 
					    # set gameMenu to control the message.
 | 
				
			||||||
 | 
					    declare -a menuList
 | 
				
			||||||
 | 
					    local max=$1
 | 
				
			||||||
 | 
					    local min=${2:-10}
 | 
				
			||||||
 | 
					    for i in $(seq $min $max) ; do
 | 
				
			||||||
 | 
					        menuList+=("$i" "$i")
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    dialog --backtitle "${menuMessage:-Numeric menu...}" \
 | 
				
			||||||
 | 
					        --clear \
 | 
				
			||||||
 | 
					        --no-tags \
 | 
				
			||||||
 | 
					        --menu "Please select a number between $min and $max." 0 0 0 "${menuList[@]}" --stdout
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user