#!/bin/bash

set -ex


if [[ -n "$(ls | grep -e '.editorconfig')" ]]; then
	echo "Wrong directory!" >&2
	exit 1
fi

if [[ -n "$(git status -s | grep -ve 'scripts/reorganize-code.sh')" ]]; then
	echo "Working directory must be clean!" >&2
	exit 1
fi


mkdir -p src/simutrans

mv squirrel src/
mv makeobj src/
mv nettools src/nettool

mv obj/ src/simutrans/
mv boden/wege/ src/simutrans/obj/way
mv vehicle/ src/simutrans/obj/

mv bauer boden dataobj descriptor display finder gui ifc io music network player script sound sys tpl utils src/simutrans/

mv $(find . -maxdepth 1 -type f -name "*.h" -o -name "*.cc") src/simutrans/

# Additional reorganizations
mkdir src/simutrans/world

for f in simworld simplan simcity; do
	mv src/simutrans/$f.{h,cc} src/simutrans/world/
done

mv src/simutrans/simsound.{h,cc} src/simutrans/sound/
mv src/simutrans/dataobj/loadsave.{h,cc} src/simutrans/io/

mkdir src/simutrans/tool/
mv src/simutrans/simmenu.{h,cc} src/simutrans/tool/
mv src/simutrans/simtool* src/simutrans/tool/

mv distribute.sh scripts/
mv findversion.sh scripts/
mv get_lang_files.* scripts/
mv get_pak.* scripts/
mv get_revision.* scripts/
mv install-building-libs* scripts/
mv revision.jse scripts/


# Update CMake source list
echo "" > cmake/SimutransSourceList.cmake

echo "target_sources(simutrans PRIVATE" >> cmake/SimutransSourceList.cmake

find src/simutrans -type f -name "*.cc" | sort -u | while read f
do
	printf "\t$(echo $f)\n" >> cmake/SimutransSourceList.cmake
done
echo ")" >> cmake/SimutransSourceList.cmake

# TODO Update makeobj/nettool/Makefile/MSVC project + fix compile errors
# TODO Update location of paksetinfo.h in get_pak.sh
# TODO depot_t is a building, does it belong into obj/ ?
