-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_build.sh
More file actions
executable file
·134 lines (124 loc) · 4.7 KB
/
generate_build.sh
File metadata and controls
executable file
·134 lines (124 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh
if [ -z $WINDIR ]; then
if ! type shady-cli; then
export PATH="$(dirname $0)/shady/:$PATH"
fi
type shady-cli || exit
OPTIONS=-j
else
if ! type shady-cli.exe; then
export PATH="$(realpath $(dirname $0))/shady/:$PATH"
fi
type shady-cli.exe || exit
alias "shady-cli=shady-cli.exe"
OPTIONS=
fi
if [ $# -lt 1 ]; then
echo "Usage: $0 <cmake_build_folder> [<character>]"
exit 1
fi
if ! type jq; then
function jq() {
grep "$(echo $1 | cut -d . -f 2-)" | cut -f 2 -d : | sed -r 's/^\s*([^,\s]*)\s*,?\s*$/\1/g'
}
fi
OUTPUT="$(realpath $1)"
cd "$(dirname $0)"
generate_character() {
echo "Checking $1"
OUT="$OUTPUT/$1"
IN="src/Characters/$1"
if [ $(cat "$IN/character.json" | jq .enabled) '==' false ]; then
echo "Disabled"
else
FILES=""
mkdir -p "$OUT/data"
if ! [ -z "$2" ]; then
echo 'Not checking assets'
elif [ -f "$OUT/$1.dat" ]; then
echo "Checking diff"
DATE1=$(stat -c '%Y' "$OUT/$1.dat")
IFS="
"
for file in `find "$IN/data" -name "*.png" -o -name "*.xml" -o -name "*wav" -o -name "*.csv" -o -name "*.pal" -o -name "${character}_labels.json"`; do
DATE2=$(stat -c '%Y' "$file")
RESULT="$OUT/data/$(echo $file | tail -c +$(echo "$IN/data/" | wc -c) | sed 's/.json$/.txt/g')"
if [ $DATE1 -lt $DATE2 ] || ! [ -f $(echo $RESULT | sed 's/\.xml$/\.pat/g' | sed 's/\.csv$/\.cv1/g' | sed 's/\.png$/\.cv2/g' | sed 's/\.wav$/\.cv3/g') ]; then
mkdir -p $(dirname "$RESULT")
cp -f "$file" "$RESULT"
FILES="yes"
fi
done
else
echo "Generating structure"
IFS="
"
for file in `find "$IN/data" -name "*.png" -o -name "*.xml" -o -name "*wav" -o -name "*.csv" -o -name "*.pal" -o -name "${character}_labels.json"`; do
RESULT="$OUT/data/$(echo $file | tail -c +$(echo "$IN/data/" | wc -c) | sed 's/.json$/.txt/g')"
mkdir -p $(dirname "$RESULT")
cp -f "$file" $RESULT
FILES="yes"
done
fi
if [ -z $FILES ]; then
echo "Assets are clean"
else
for file in `find "$OUT/data" -name "*.png" -o -name "*.xml" -o -name "*wav" -o -name "*.csv"`; do
cd "$(dirname $file)"
shady-cli convert $file | grep --color=never Converting
rm $file
cd - >/dev/null
done
rm -f "$OUTPUT/$1/$1.dat"
shady-cli pack -o "$OUT/$1.dat" -m data "$OUT"
fi
DLL="$(cat "$IN/character.json" | jq .character_dll | sed -r 's/^"(.*)"$/\1/g')"
echo "Building $DLL"
if cmake --build $OUTPUT --target $(echo $DLL | sed -r 's/^(.*)\..*$/\1/g') -- $OPTIONS; then
mkdir -p "$OUTPUT/Soku2_package/characters/$1" "$OUTPUT/standalone/characters/$1"
PDB="$(echo $DLL | rev | cut -d '.' -f 2- | rev).pdb"
cp "$OUTPUT/src/Characters/$1/$DLL" "$OUT/$1.dat" "$IN/character.json" "$OUTPUT/standalone/characters/$1"
cp "$OUTPUT/src/Characters/$1/$DLL" "$OUT/$1.dat" "$IN/character.json" "$OUTPUT/Soku2_package/characters/$1"
cp "$OUTPUT/src/Characters/$1/$PDB" "$OUT/$1.dat" "$IN/character.json" "$OUTPUT/standalone/characters/$1"
cp "$OUTPUT/src/Characters/$1/$PDB" "$OUT/$1.dat" "$IN/character.json" "$OUTPUT/Soku2_package/characters/$1"
echo ";#" > "$OUTPUT/Soku2_package/characters/$1/dummy.asm"
echo "return function() end" > "$OUTPUT/Soku2_package/characters/$1/dummy.lua"
cat "$IN/data/csv/$1/deck.csv" "$IN/data/csv/$1/deck.csv" "$IN/data/csv/$1/deck.csv" "$IN/data/csv/$1/deck.csv" > "$OUTPUT/Soku2_package/characters/$1/deck.cfg"
fi
fi
}
if [ $# -eq 1 ]; then
cmake --build $OUTPUT --target CharacterEngine -- $OPTIONS || exit
cmake --build $OUTPUT --target Soku2Loader -- $OPTIONS || exit
rm -f "$OUTPUT/Soku2Addon.zip"
rm -f "$OUTPUT/CharacterEngine.zip"
rm -rf "$OUTPUT/Soku2_package" "$OUTPUT/standalone"
mkdir "$OUTPUT/Soku2_package" "$OUTPUT/standalone"
cp "$OUTPUT/CharacterEngine.dll" "$OUTPUT/Soku2_package/$character"
cp "$OUTPUT/Soku2Loader.dll" "$OUTPUT/Soku2_package/Soku2.dll"
cp "src/Soku2Loader/Soku2Loader.ini" "$OUTPUT/Soku2_package/"
mkdir -p "$OUTPUT/Soku2_package/config/info"
cp "lib/Soku2Engine.dll" "$OUTPUT/Soku2_package/"
cp "lib/MemoryPatch.dll" "$OUTPUT/Soku2_package/"
cp "lib/MemoryPatch.ini" "$OUTPUT/Soku2_package/"
cp "lib/SOKU2_base.lua" "$OUTPUT/Soku2_package/config/"
cp "lib/characters_base.csv" "$OUTPUT/Soku2_package/config/info/"
cp "$OUTPUT/CharacterEngine.dll" "$OUTPUT/standalone/Soku2.dll"
mkdir -p "$OUTPUT/standalone/config/info"
echo 'set_version("3.0")' > "$OUTPUT/standalone/config/SOKU2_base.lua"
echo > "$OUTPUT/standalone/config/info/characters_base.csv"
for character in `ls src/Characters/`; do
generate_character "$character"
done
cd "$OUTPUT/Soku2_package"
echo "Generating Soku2Addon.zip"
zip ../Soku2Addon.zip -r .
cd "$OUTPUT/standalone"
echo "Generating CharacterEngine.zip"
zip ../CharacterEngine.zip -r .
else
while [ $# -ge 2 ]; do
generate_character "$2"
shift
done
fi