#!/bin/bash
#
# "$1" is usage.cfg
# "$2" is output file

DIR="$(cd "$(dirname "$0")" && pwd)"
source "$DIR"/wiki-common

noedit_header > "$2"
table_header >> "$2"

# Only consider *VAR*s (without intial "G")
SRC_DEFS="$(grep -h '^[^A-Z]*[A-FH-Z]*VAR[A-Z]*([^,]*, [^,]*, ' $(find_src_files "$DIR/..") | sed 's%^ *%%')"

IFS=$'\n'
for i in $(grep "^setdesc" "$1" | sort)
do
    VAR="$(format_name "$i")"

    SRC_DEF="$(extract_src_def "$SRC_DEFS" "$VAR")"
    if [ -z "$SRC_DEF" ]; then continue; fi

    DESC="$(format_desc "$i")"
    PARAM="$(format_param "$i")"

    SRC_TYPE="$(echo $SRC_DEF | sed 's%^[^A-Z]*\([A-FH-Z]*VAR[A-Z]*\)(.*%\1%')"
    TYPE="integer"
    case "$SRC_TYPE" in
        *FVAR*)
            TYPE="float" ;;
        *SVAR*)
            TYPE="string" ;;
        *TVAR*)
            TYPE="texture" ;;
    esac

    SRC_IDF="$(echo $SRC_DEF | sed 's%^[^A-Z]*[A-FH-Z]*VAR[A-Z]*(\([^,]*\),%\1%')"
    IDF_ADMIN=""
    IDF_HEX=""
    IDF_PRELOAD=""
    IDF_PERSIST=""
    IDF_WORLD=""
    # Currently only one case
    case "$SRC_IDF" in
        *IDF_ADMIN*)
            IDF_ADMIN="admin-only"
            ;;&
        *IDF_HEX*)
            IDF_HEX="hex"
            ;;&
        *IDF_PRELOAD*)
            IDF_PRELOAD="preloaded"
            ;;&
        *IDF_GAMEPRELOAD*)
            IDF_PRELOAD="game-preloaded"
            ;;&
        *IDF_PERSIST*)
            IDF_PERSIST="persistent"
            ;;&
        *IDF_WORLD*)
            IDF_WORLD="world"
            ;;
    esac

    TYPE_STRING="$(echo "$IDF_ADMIN $IDF_HEX $IDF_PRELOAD $IDF_PERSIST $IDF_WORLD engine $TYPE" | sed -e 's%^ *%%' -e 's%  *% %g')"

    MIN_MAX="n/a"
    case "$TYPE" in
        string|texture)
            DEFAULT="$(echo $SRC_DEF | sed 's%^[^A-Z]*[A-FH-Z]*VAR[A-Z]*([^,]*, [^,]*, \([^,^)]*\).*%\1%')"
            ;;
        integer|float)
            MIN_MAX="$(echo $SRC_DEF | sed 's%^[^A-Z]*[A-FH-Z]*VAR[A-Z]*([^,]*, [^,]*, \([^,]*\), [^,]*, \([^,^)]*\).*%\1..\2%')"
            DEFAULT="$(echo $SRC_DEF | sed 's%^[^A-Z]*[A-FH-Z]*VAR[A-Z]*([^,]*, [^,]*, [^,]*, \([^,^)]*\).*%\1%')"
            ;;
    esac
    table_entry "$VAR" "$PARAM" "$DESC" "$TYPE_STRING" "$MIN_MAX" "$DEFAULT" >> "$2"
done

table_end >> "$2"
