123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #!/usr/bin/env bash
- _DEBUG="off" # on/off debug mode.
- #========HEADER=====================================================|
- #AUTOR
- # Jefferson Rocha <lrcjefferson@gmail.com>
- #
- #PROGRAMA
- # Ammyland - Terror em Ammyland
- #
- #DESCRICAO
- # Jogo de terror onde você é o detetive, baseado em text-adventure,
- # um categoria de sucesso nos anos 80*. a história é
- # fictícia e elaborada pelo autor do programa, porém tem inspiração
- # em a lenda do "pântano de Manchac". Divirta-se!
- #
- #LICENÇA
- # MIT
- #
- #CHANGELOG
- # Externo, veja CHANGELOG.txt
- #===================================================================|
- #=======VARIAVEIS GLOBAIS==========#
- nome_versao="Terror em Ammyland, versão Beta 0.4"
- dependencias=("ogg123" "pv")
-
- #=Inicializando váriaveis
- usuario_save=""
- nome_do_player=""
- #==================================#
- #=======TESTES INICIAIS============#
- for dep in "${dependencias[@]}"; do # Dependências estão no sistema?
- if ! type -P "$dep" >/dev/null 2>&1; then
- [[ "$dep" = "ogg123" ]] && dep="vorbis-tools"
- echo -e "\t\E[31;1mVOCÊ NECESSITA DO PACOTE \"$dep\" para continuar.\E[m"
- exit 1
- fi
- done
- # Diretório usuarios existe?
- [[ ! -d "usuarios" ]] && mkdir "usuarios"
- #==================================#
- #=======BIBLIOTECAS================#
- source ammyland.conf # Arquivo configuração
- source biblioteca/notas.sh
- source biblioteca/configuracao.sh # Configuracao do menu.
- source biblioteca/jornais.sh # função para jornal
- source biblioteca/email.sh # Email do usuário
- source biblioteca/internet.sh # Internet
- source biblioteca/casos.sh # função para casos
- #===Rooms
- source biblioteca/rooms/skyller/lago_saint.sh #
- #==================================#
- #=======FUNCOES====================#
- # Função de inicio do jogo
- function principal(){
- clear
- # Música Inicial
- if [[ "$som" = "1" ]]; then
- ogg123 -r "musicas/ambiente-inicial.ogg" >/dev/null 2>&1 &
- fi
-
- while true; do
- echo -e "----------------------------------------------------------"
- echo -e "Escritório"
- echo -e "$(date "+%A, %d de %B 1992, %H:%M")\nDetetive: ${nome_do_player^}, Cargo: ${cargo^}, Medalhas: ${medalhas}"
- echo -e "----------------------------------------------------------
- ${menu_selecao}Config${desliga} | ${menu_selecao}Sair${desliga} | ${menu_selecao}Notas${desliga} | ${menu_selecao}Email${desliga} | ${menu_selecao}Internet${desliga} | ${desliga}${menu_selecao}Jornal${desliga} | ${desliga}${menu_selecao}Casos${desliga}
- "
- read -p $'\E[31;1m▶\E[m ' entrada
- entrada="${entrada,,}" # Tudo em minusculo.
- case "$entrada" in
- config) configuracao ;; # Função Configuracao
- sair) die; exit 0 ;; # Mata ogg e sai.
- notas|nota) die; nota ;;
- email|e-mail) email ;; # Chamada ao email
- internet|net) die; internet ;; # Chamada internet
- jornal) die; jornal ;; # Chamada Função
- casos) die; casos ;; # Chamada Função
- ajuda) die; ajuda ;; # Função de ajuda
- *)
- echo -e "\t\E[31;1mOpção Inválida!\033[m digite ajuda."
- sleep 1s; clear
- ;; # Chamada Função
- esac
- done
- }
- function formulario(){
- clear
- echo -e "${azul}Formulário para novos Detetives!\nDigite sua Credencial que pode ser:${desliga} '${vermelho}nick${desliga}' ${azul}ou${desliga} '${vermelho}nome${desliga}'."
- until [[ -n "$nome_do_player" ]]; do # Até que tenha entrada
- read -p $'\n\E[31;1mQual sua credencial Detetive?:\E[m ' nome_do_player
- if ! grep -iwo "$nome_do_player" "$usuario_save" >/dev/null 2>&1; then
- if [[ -n "$nome_do_player" ]]; then
- read -p "Confirma? [SIM/nao]: " confirma
- [[ "$confirma" != "sim" ]] && nome_do_player=""; continue || break
- fi
- else
- echo "Este nome já existe!"
- nome_do_player="" # Zerando váriavel novamente para voltar loop.
- continue
- fi
- done
- #ID=$(($(wc -l < "$configuracao_de_usuarios")+1)) # Gerando ID única.
- nome_do_player="${nome_do_player,,}" # Tudo em minusculo
- usuario_save="usuarios/${nome_do_player}.conf" # Carregando PROFILE do usuário
- medalhas="0" # Iniciando Medalhas base em 0
- cargo="recruta" # Iniciando cargo base para novos usuários
- echo -e "#### NÃO MODIFICAR! ####\n" >> "$usuario_save" # Mensagem de aviso.
- # Enviando para o banco de dados.
- echo -e "readonly nome_do_player=\"${nome_do_player}\"\ncargo=\"${cargo}\"\nmedalhas=\"0\"" >> "$usuario_save"
- }
- function reconhecimento_do_player(){
- # Dados informativos do player.
- read -p $'\E[31;1m Olá Detetive, qual sua identificação?: \E[m' nome_do_player
- usuario_save="usuarios/${nome_do_player}.conf"
- if ! grep -oiw "$nome_do_player" "$usuario_save" >/dev/null 2>&1; then
- echo -e "${vermelho}\tDetetive sua credencial não foi encontrada!${desliga}"
- read -p $'\tDeseja criar uma credencial? [SIM/nao]: ' resposta
- resposta="${resposta:=sim}"; resposta="${resposta,,}" # enter sim, tudo em minusculo
- [[ "$resposta" != "sim" ]] && { die; echo "Saindo!"; exit 0 ;} || formulario # Chamada funcao
- else
- echo -e "${azul}Credencial Encontrada...${desliga}" | pv -qL "$padrao_escrita"
- source "$usuario_save" # Chamando Profile do player.
- sleep 0.3s
- fi
- }
- #=====FUNÇÕES DE CONFIGURAÇÕES===
- function DEBUG(){
- [[ "${_DEBUG}" = "on" ]] && set -x
- }
- function ctrl_c(){
- die # Mate ogg123
- echo -e "\nCTRL + C Pressionado, saindo..."
- exit 0 # tchau!
- }
- # Morre ogg123!
- function die(){
- killall ogg123 >/dev/null 2>&1
- sleep 0.3s
- }
- #=====FUNÇÃO DE AJUDA===
- function ajuda(){
- cat <<EOF | less
- ${nome_versao}
- O QUE É AMMYLAND?
- -----------------
- Ammyland é um jogo fictício com uma historia própria onde você
- é o detetive e precisa desvendar os casos que surgem.
- Muita criptografia, esteganografia e raxa cuca estão ligados
- á neste jogo.
- COMO JOGAR?
- -----------
- Na maiora das partes você necessida entrar com comandos para
- o jogo interpretar, entretando salvo exceções em menus por exemplo
- de entrada, você necessita apenas digitar teclas como:
- 0 1 2, etc... Assim o sistema entende qual a escolha.
- AUTOR
- Escrito por Jefferson Rocha
-
- BUGS
- lrcjefferson@gmail.com
- LICENÇA
- MIT
-
- PARA SAIR PRESSIONE <q>
-
- EOF
- if [[ "$em_linha" = "on" ]]; then # Chamou em linha?
- { exit 0 ;}
- else
- clear
- fi
- }
- #==================================#
- # Usuário chamou ajuda em linha?
- [[ "$1" = "-a" ]] || [[ "$1" = "--ajuda" ]] && { em_linha="on"; ajuda "$@" ;}
- # Mensagem Principal do jogo
- clear
- echo -e \
- "
- \E[31;1m
- ~|~ _ _ _ _ _ _ _ _ /\ _ _ _ _ | _ _ _|
- | (/_| | (_)| (/_| | | /~~\| | || | |\/|(_|| |(_|
- /
- \E[m
- "
- # Armadilha para o ctrl + c
- trap ctrl_c INT
- DEBUG # Debugador
- # Chamada função para
- # reconheciento do player.
- reconhecimento_do_player
- # Chamando função principal
- principal
|