#!/bin/sh

# 2023-08-03: Now puts $GIANT_DATA_DIR instead of the expanded path in
#             the resulting .cpj file.

if [ $# != 4 ]; then
  echo "Usage: mkcpj <source anim> <target anim> <charmap> <new cpj>"
  exit 1
fi

source_anim="$1"
target_anim="$2"
charmap="$3"
cpj_path="$4"
source_model_unsub_path=`awk '$1=="MODEL:" {print $2}' <$source_anim`
source_model_path=`eval echo $source_model_unsub_path`
source_model_filename=`basename "$source_model_path"`
source_mapping_unsub_path=`awk '$1=="MAPPING:" {print $2}' <$source_anim`
source_mapping_path=`eval echo $source_mapping_unsub_path`
source_motion_unsub_path=`awk '$1=="MOTION:" {print $2}' <$source_anim`
source_motion_path=`eval echo $source_motion_unsub_path`
source_scaling_unsub_path=`awk '$1=="SCALING:" {print $2}' <$source_anim`
source_scaling_path=`eval echo $source_scaling_unsub_path`

target_anim_data_path="$target_anim"
charmap_data_path="$charmap"

sub_data_dir() {
    local file_path=$1
    local data_dir=$GIANT_DATA_DIR

    case "$file_path" in
        "$data_dir/"*)
            new_path=`echo $file_path | sed "s|$data_dir|\\$GIANT_DATA_DIR|"`
            echo "$new_path"
            ;;
        *)
            echo "not matched" >&2
            echo "$file_path"
            ;;
    esac
}


echo "Using target animation: $target_anim_data_path"
echo "Using charmap         : $charmap_data_path"

if [ ! -f $target_anim_data_path ]; then
  echo "Target animation is missing: $target_anim_data_path"
  exit 1
fi

if [ ! -f $charmap_data_path ]; then
  echo "Character map is missing: $charmap_data_path"
  exit 1
fi

if [ -f $cpj_path ]; then
  echo "$cpj_path already exists"
  exit 1
fi

(
  echo "Bio Character Mapper Project"
  echo "v1.00"
  echo "TARGET_ANIM: $(sub_data_dir $target_anim_data_path)"
  echo "BACKGROUND_LAYER {"
  echo "  DISABLED: NO"
  echo "}"
  echo "LAYER {"
  echo "  SOURCE_ANIM {"
  echo "    MODEL: $(sub_data_dir $source_model_path)"
  echo "    MAPPING: $(sub_data_dir $source_mapping_path)"

  if [ "$source_motion_path" != "" ]; then
    echo "    MOTION: $(sub_data_dir $source_motion_path)"
  fi

  echo "    SCALING: $(sub_data_dir $source_scaling_path)"
  echo "  }"
  echo "  CHARACTER_MAP {"
  echo "    FILE_NAME: $(sub_data_dir $charmap_data_path)"
  echo "    DATA {"
  awk '
BEGIN {
  getline;
  getline;
}
{print "      "$0}
' <$charmap_data_path

if [ $? != 0 ]; then
  exit 1
fi
  echo "    }"
  echo "  }"
  echo "  FRAME_OFFSET: 0"
  echo "  DISABLED: NO"
  echo "}"
) >$cpj_path

if [ $? != 0 ]; then
  exit 1
fi

echo "Created $cpj_path"
