#!/bin/bash

. /etc/profile.d/001-functions
. /etc/profile.d/100-gamecontroller-functions

# -- Config & Setup --
# Destination file
if [[ -z "$1" ]] && [[ -z "$2" ]]; then
  echo "Usage: mapper.txt [gamecontrollerdb.txt] [controlfolder]"
  exit -1
fi

CONTROLLER_DB="$1"
controlfolder="$2"

#Scrub the CONTROLLER_DB file
echo "" > ${CONTROLLER_DB}

# Where the emulationstation configuration file is
ES_CONFIG="/tmp/es_input.cfg"

#Set layout via Emulation Station
ACTIVE_GAME=""
ACTIVE_PLATFORM=""
GAME="${ACTIVE_GAME##*/}"
PLATFORM="${ACTIVE_PLATFORM##*/}"
CONTROLLER_LAYOUT=$(get_setting controller_layout "${PLATFORM}" "${GAME}")

#Default to nintendo if no value assigned
if [ ! -n "${CONTROLLER_LAYOUT}" ]; then
  CONTROLLER_LAYOUT="nintendo"
fi

scriptdir="controller_layout"

if [ ! -d "${controlfolder}/${scriptdir}" ]; then
    mkdir -p "${controlfolder}/${scriptdir}"
fi

echo -e "# Xbox Layout\nABUT=\"b\"\nBBUT=\"a\"\nXBUT=\"y\"\nYBUT=\"x\"" >  "${controlfolder}/${scriptdir}/xbox_layout.txt"
echo -e "# Nintendo Layout\nABUT=\"a\"\nBBUT=\"b\"\nXBUT=\"x\"\nYBUT=\"y\"" >  "${controlfolder}/${scriptdir}/nintendo_layout.txt"
if [[ ! -e "${controlfolder}/${scriptdir}/custom_layout.txt" ]]; then
  echo -e "# Custom Layout\nABUT=\"a\"\nBBUT=\"b\"\nXBUT=\"x\"\nYBUT=\"y\"" >  "${controlfolder}/${scriptdir}/custom_layout.txt"
fi

source "${controlfolder}/${scriptdir}/${CONTROLLER_LAYOUT}_layout.txt"

# Call function to create controller db from ES input config file for only connected devices
create_controller_db ${CONTROLLER_LAYOUT} ${ES_CONFIG} ${CONTROLLER_DB}

#Reset file for next run
sed -i '/^ACTIVE_GAME=/c\ACTIVE_GAME=""' /storage/.config/PortMaster/mapper.txt
sed -i '/^ACTIVE_PLATFORM=/c\ACTIVE_PLATFORM=""' /storage/.config/PortMaster/mapper.txt
