diff --git a/wordle b/wordle index a457f84..b97ca19 100755 --- a/wordle +++ b/wordle @@ -26,6 +26,10 @@ declare -gr DOWN1=$'\e[1E' declare -gr INDENT=$'\e[1C' function main() { + + declare -Ag BOARD + declare -g ROW=0 + declare -g WIN=0 declare -g ANSWER declare -g POOL='QWERTYUIOPASDFGHJKLZXCVBNM' declare -Ag YELLOWS @@ -36,21 +40,25 @@ function main() { echo -en "${CLEAR_SCREEN}" echo -en "${GOHOME}" - init_board + if [[ "${RESUME}" == 1 ]]; then + load_game + [[ $WIN == 5 ]] && exit 0 + else + init_board + fi render_board - declare row - for (( row=0; row=0; r-- )); do + for (( r=ROW-1; r>=0; r-- )); do CHAR="${GUESS:i:1}" PREV_CHAR="${YELLOWS[$r,$i]}" [[ "${CHAR}" == "${PREV_CHAR}" ]] && return 4 @@ -317,17 +338,41 @@ function reveal_row() { echo -en "${SHOW_CURSOR}${RESET}${RESTORE}" } +function load_game() { + source "${PROGRESS_FILE}" +} + function save_game() { - DAY=$(( $EPOCHSECONDS / 86400 )) - USER="${USER,,}" - render_board > "${USER}-${DAY}" - if [[ $win != 5 ]]; then - [[ "${BORDER}" == 1 ]] && echo -en "${CLEAR_DOWN}${INDENT}${INDENT}" >> "${USER}-${DAY}" - echo -en "${CLEAR_LINE}${BOLD}" >> "${USER}-${DAY}" + > "${PROGRESS_FILE}" + + for key in "${!BOARD[@]}"; do + echo "BOARD[$key]='${BOARD[$key]}'" >> "${PROGRESS_FILE}" + done + + for key in "${!BOARD[@]}"; do + echo "YELLOWS[$key]='${YELLOWS[$key]}'" >> "${PROGRESS_FILE}" + done + + echo "ROW=${ROW}" >> "${PROGRESS_FILE}" + echo "POOL=${POOL}" >> "${PROGRESS_FILE}" + echo "HARD_MODE=${HARD_MODE}" >> "${PROGRESS_FILE}" + echo "STRICT_HARD_MODE=${STRICT_HARD_MODE}" >> "${PROGRESS_FILE}" + echo "WIN=${WIN}" >> "${PROGRESS_FILE}" + echo "ANSWER=${ANSWER}" >> "${PROGRESS_FILE}" + echo -en "${RESET}" + exit 0 +} + +function save_result() { + render_board > "${RESULT_FILE}" + if [[ $WIN != 5 ]]; then + [[ "${BORDER}" == 1 ]] && echo -en "${CLEAR_DOWN}${INDENT}${INDENT}" >> "${RESULT_FILE}" + echo -en "${CLEAR_LINE}${BOLD}" >> "${RESULT_FILE}" for (( i=0; i> "${USER}-${DAY}" + echo -en " ${ANSWER:$i:1} " >> "${RESULT_FILE}" done - echo -en "${NEWLINE}${RESET}" >> "${USER}-${DAY}" + echo -en "${NEWLINE}${RESET}" >> "${RESULT_FILE}" + > "${PROGRESS_FILE}" # Maybe better to save and check $WIN fi }