57 Commits

Author SHA1 Message Date
Arlind
cc4fdd00e9 Update CI from skins-template 2025-10-03 21:40:06 +02:00
Arlind
dc793dc01b Update .gitattributes from skins-template 2025-10-03 21:40:05 +02:00
Arlind
385f4cadf0 [ci skip] push back from pipeline 2025-10-03 19:39:44 +00:00
Arlind
a1b24774b5 Update .gitea/workflows/ci.yml
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 9s
2025-10-03 21:39:36 +02:00
Arlind
a0a233a531 Update CI from skins-template 2025-10-03 21:36:16 +02:00
Arlind
16ce5ce9b8 Update .gitattributes from skins-template 2025-10-03 21:36:16 +02:00
Arlind
21a8012d9b Update .gitattributes from skins-template 2025-10-03 21:31:12 +02:00
Arlind
b3b3673606 Update CI from skins-template 2025-10-03 21:31:11 +02:00
Arlind
3a0aa52c89 [ci skip] push back from pipeline 2025-10-03 19:29:58 +00:00
Arlind
3880eff63d [ci skip] push back from pipeline 2025-10-03 19:29:05 +00:00
Arlind
be37af95f2 Update .gitea/workflows/ci.yml
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 9s
2025-10-03 21:28:56 +02:00
Arlind
7e0e9d47d2 [ci skip] push back from pipeline 2025-10-01 13:37:24 +00:00
Arlind
11f8e2bcb4 Update .gitattributes from skins-template 2025-10-01 15:35:53 +02:00
Arlind
e944807ccc Update CI from skins-template 2025-10-01 15:35:53 +02:00
Arlind
8268fc92f1 [ci skip] push back from pipeline 2025-10-01 13:34:49 +00:00
18134088d8 fetch depth 0 already pulls tags
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 10s
2025-10-01 15:34:37 +02:00
Arlind
0ed983d3ca [ci skip] push back from pipeline 2025-10-01 13:31:42 +00:00
27062384d4 test less rights
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Has been cancelled
2025-10-01 15:30:58 +02:00
Arlind
446fd9e07b [ci skip] push back from pipeline 2025-10-01 13:30:21 +00:00
Arlind
973e1d79e0 [ci skip] push back from pipeline 2025-10-01 13:29:40 +00:00
71bb3cd703 test less right
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 9s
2025-10-01 15:29:29 +02:00
Arlind
d52b0f0981 [ci skip] push back from pipeline 2025-10-01 13:27:10 +00:00
Arlind
77bd0d18fd [ci skip] push back from pipeline 2025-10-01 13:26:36 +00:00
Arlind
2fe4154327 [ci skip] push back from pipeline 2025-10-01 13:25:56 +00:00
Arlind
f04c82ebd4 [ci skip] push back from pipeline 2025-10-01 13:12:24 +00:00
Arlind
d9ac3bcea3 [ci skip] push back from pipeline 2025-10-01 13:11:41 +00:00
abc25b0161 change target branch
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 7s
2025-10-01 15:05:19 +02:00
d4271a53da omg focuis
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 1s
2025-10-01 15:04:06 +02:00
de439afe81 fix path
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 3s
2025-10-01 15:03:17 +02:00
4ef043dd48 fix path
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 3s
2025-10-01 15:02:22 +02:00
42310f4861 bring back clean up
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 3s
2025-10-01 15:01:52 +02:00
Arlind
23c276e3ac Update README.md 2025-10-01 14:51:01 +02:00
Arlind
af952d5ddf [ci skip] push back from pipeline 2025-10-01 12:44:52 +00:00
Arlind
64470fe0f4 [ci skip] push back from pipeline 2025-10-01 12:37:01 +00:00
420ef269da fix path
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 9s
2025-10-01 14:36:50 +02:00
cb87b1a62f test
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Failing after 1s
2025-10-01 14:31:10 +02:00
Arlind
e51a6e160a [ci skip] push back from pipeline 2025-10-01 12:15:51 +00:00
Arlind
a5862d785e Delete Skins/azerinoxrektygon edit/cursor/cursor90-2(Yellow).psd
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 7s
2025-10-01 14:15:43 +02:00
Arlind
8ac45d5471 Update .gitattributes from skins-template 2025-09-30 23:12:59 +02:00
Arlind
915c9f9620 Update CI from skins-template 2025-09-30 23:12:58 +02:00
Arlind
a5bd42b092 [ci skip] push back from pipeline 2025-09-30 21:00:23 +00:00
Arlind
9856e73c01 Update .gitea/workflows/ci.yml
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 7s
2025-09-30 23:00:16 +02:00
Arlind
5b60d8d534 Update .gitattributes from skins-template 2025-09-30 22:55:57 +02:00
Arlind
c28f6c58d5 Update CI from skins-template 2025-09-30 22:55:57 +02:00
Arlind
40eaa27f24 [ci skip] push back from pipeline 2025-09-30 20:51:45 +00:00
dada6b259c test
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 12s
2025-09-30 22:51:29 +02:00
b56e66fc6f [ci skip] push back from pipeline 2025-09-30 20:44:37 +00:00
Arlind
8eb041dfd0 Update .gitattributes from skins-template 2025-09-17 00:19:03 +02:00
Arlind
f6320ee738 Update CI from skins-template 2025-09-17 00:19:03 +02:00
a880f0c917 [ci skip] push back from pipeline 2025-09-16 22:18:30 +00:00
Arlind
cfb6d40869 Update .gitea/workflows/ci.yml
Some checks failed
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Has been cancelled
2025-09-17 00:17:50 +02:00
6040e3586f [ci skip] push back from pipeline 2025-09-16 22:15:48 +00:00
1cb2fdc581 [ci skip] push back from pipeline 2025-09-16 21:56:09 +00:00
Arlind
9dd161e29d Update .gitea/workflows/ci.yml
All checks were successful
Generate Skin previews, OSK files and per skin documentation / Full CI/CD Pipeline (push) Successful in 6s
2025-09-16 23:56:02 +02:00
af5744ffa0 [ci skip] push back from pipeline 2025-08-18 00:22:37 +00:00
122170553d [ci skip] push back from pipeline 2025-08-13 21:05:16 +00:00
bbfb2df2a2 resetting repo 2025-08-13 22:56:04 +02:00
6338 changed files with 19494 additions and 549 deletions

24
.gitattributes vendored
View File

@@ -2,14 +2,32 @@
*.exe filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.JPG filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.PNG filter=lfs diff=lfs merge=lfs -text
*.pnG filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.xcf filter=lfs diff=lfs merge=lfs -text
*.pxr filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.WAV filter=lfs diff=lfs merge=lfs -text
*.wav123321321 filter=lfs diff=lfs merge=lfs -text
*.sfk filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.lnk filter=lfs diff=lfs merge=lfs -text
*.pk filter=lfs diff=lfs merge=lfs -text
*.fig filter=lfs diff=lfs merge=lfs -text
*.fds filter=lfs diff=lfs merge=lfs -text
*.pdn filter=lfs diff=lfs merge=lfs -text
*.osk filter=lfs diff=lfs merge=lfs -text
*.osr filter=lfs diff=lfs merge=lfs -text
*.osz filter=lfs diff=lfs merge=lfs -text
*.pack filter=lfs diff=lfs merge=lfs -text
*.pdn filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.WAV filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text

View File

@@ -1,560 +1,108 @@
name: CI/CD Pipeline
name: Generate Skin previews, OSK files and per skin documentation
on:
push:
branches:
- main
paths:
- '.gitea/workflows/ci.yml'
- '.gitea/workflows/*'
- 'Skins/**/*'
workflow_dispatch:
inputs:
force_rebuild:
description: 'Force rebuild all skins'
required: false
default: 'false'
target_skins:
description: 'Comma-separated list of skin folder names to rebuild (e.g., "Skin1,Skin2")'
required: false
default: ''
env:
DANSER_PATH: "/app/danser/danser-cli"
DANSER_DIR: "/app/danser"
DANSER_VIDEO_DIR: "/app/danser/videos"
DANSER_SCREENSHOT_DIR: "/app/danser/screenshots"
SKINS_DIR: "${{ github.workspace }}/Skins"
DANSER_SKINS_DIR: "/app/danser/skins"
DEFAULT_SKIN_DIR: "${{ github.workspace }}/src/default-skin"
DEFAULT_SKIN_DIR: "/app/danser/skins/default-skin"
REPO_SCREENSHOT_DIR: "${{ github.workspace }}/media/gameplay"
REPO_MOD_ICONS_DIR: "${{ github.workspace }}/media/icons"
REPO_RANKING_PANEL_DIR: "${{ github.workspace }}/media/panel"
SETTINGS_JSON_PATH: "/app/danser/settings/default.json"
REPO_THUMBNAIL_DIR: "${{ github.workspace }}/media/thumbnail"
README_PATH: "${{ github.workspace }}/README.md"
REPLAY_PATH: "${{ github.workspace }}/src/replay.osr"
GAMEPLAY_REPLAY_PATH: "/app/danser/custom-replays/yomi_yori.osr"
THUMBNAIL_REPLAY_PATH: "/app/danser/custom-replays/combo_colors.osr"
PANEL_REPLAY_PATH: "/app/danser/custom-replays/2000_gekis.osr"
OSK_PATH: "${{ github.workspace }}/export"
IMAGE_NAME: arlind/skins
IMAGE_NAME: osc/skins-image
REGISTRY_URL: "https://${{ vars.CONTAINER_REGISTRY }}"
OSU_ID: ${{ vars.OSUID }}
DOC_DIR: "${{ github.workspace }}/docs"
permissions:
contents: write
jobs:
generate_everything:
name: Full CI/CD Pipeline
runs-on: ubuntu-latest
runs-on: danser
container:
image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
options: >-
--gpus all
--privileged
--security-opt seccomp=unconfined
--security-opt apparmor=unconfined
--cap-add=ALL
--env NVIDIA_DRIVER_CAPABILITIES=all
--env NVIDIA_VISIBLE_DEVICES=all
--user 0:0
steps:
- name: Checkout Repository
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.TOKEN }}
- name: Git LFS Pull
run: |
echo "Pulling Git LFS files..."
git lfs pull
echo "LFS files pulled."
- name: Extract Repository path
run: |
FULL_WORKSPACE_PATH="${{ github.workspace }}"
USER_REPOSITORY="${FULL_WORKSPACE_PATH#/workspace/}"
USER_REPOSITORY="${USER_REPOSITORY%/}"
echo "USER_REPOSITORY=$USER_REPOSITORY" >> $GITHUB_ENV
- name: Set XDG_RUNTIME_DIR
run: |
echo "Setting XDG_RUNTIME_DIR..."
mkdir -p /tmp/xdg_runtime_dir
chmod 0700 /tmp/xdg_runtime_dir
echo "XDG_RUNTIME_DIR=/tmp/xdg_runtime_dir" >> "$GITHUB_ENV"
echo "XDG_RUNTIME_DIR set."
- name: Create directories for assets
run: |
echo "Creating asset directories..."
mkdir -p "$REPO_SCREENSHOT_DIR"
mkdir -p "$REPO_MOD_ICONS_DIR"
mkdir -p "$REPO_RANKING_PANEL_DIR"
mkdir -p "$OSK_PATH"
echo "Asset directories created successfully."
- name: Create New Tag
run: |
echo "Computing new tag..."
git fetch --tags >/dev/null 2>&1
latest_tag=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "")
if [ -z "$latest_tag" ]; then
new_tag="v1.0.0"
else
version=${latest_tag#v}
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=$(echo "$version" | cut -d. -f3)
minor=$((minor + 1))
patch=0
new_tag="v${major}.${minor}.${patch}"
fi
echo "new_tag=$new_tag" >> $GITHUB_ENV
echo "Computed new tag: $new_tag"
- name: Move Skin files to Danser Skins directory
run: |
echo "Moving Skin files to Danser Skins directory..."
mkdir -p "$DANSER_SKINS_DIR"
mv "$SKINS_DIR"/* "$DANSER_SKINS_DIR"
echo "Skin files moved."
- name: Generate Danser videos and screenshots
run: |
echo "[Danser Job Started]"
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
INDEX=1
for skin in "$DANSER_SKINS_DIR"/*/; do
if [ -d "$skin" ]; then
SKIN_NAME=$(basename "$skin")
echo ""
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
LOGFILE="/tmp/danser_log_$SKIN_NAME.txt"
FFMPEG_LOG="/tmp/ffmpeg_log_$SKIN_NAME.txt"
echo " → Generating video..."
if ! xvfb-run -a "$DANSER_DIR/danser-cli" -replay "$REPLAY_PATH" -record -skip -start=215 -end=230 -noupdatecheck -out="$SKIN_NAME" -skin "$SKIN_NAME" >"$LOGFILE" 2>&1; then
echo " ✖ Video generation failed for $SKIN_NAME. Log output:"
cat "$LOGFILE"
exit 1
fi
echo " → Taking screenshot..."
if ! xvfb-run -a "$DANSER_DIR/danser-cli" -replay "$REPLAY_PATH" -skip -noupdatecheck -ss 243 -out="$SKIN_NAME" -skin "$SKIN_NAME" >>"$LOGFILE" 2>&1; then
echo " ✖ Screenshot generation failed for $SKIN_NAME. Log output:"
cat "$LOGFILE"
exit 1
fi
if [ -f "$DANSER_VIDEO_DIR/$SKIN_NAME.mp4" ]; then
echo " → Converting to GIF..."
if ! ffmpeg -y -hwaccel cuda -ss 4 -t 10 -i "$DANSER_VIDEO_DIR/$SKIN_NAME.mp4" \
-filter_complex "[0:v] fps=24,scale=720:-1:flags=lanczos,palettegen [p]; \
[0:v] fps=24,scale=720:-1:flags=lanczos [x]; \
[x][p] paletteuse" \
-c:v gif "$DANSER_VIDEO_DIR/$SKIN_NAME.gif" >"$FFMPEG_LOG" 2>&1; then
echo " ✖ FFmpeg conversion failed for $SKIN_NAME. Log output:"
cat "$FFMPEG_LOG"
exit 1
fi
mv "$DANSER_VIDEO_DIR/$SKIN_NAME.gif" "$REPO_SCREENSHOT_DIR/$SKIN_NAME.gif"
fi
if [ -f "$DANSER_SCREENSHOT_DIR/$SKIN_NAME.png" ]; then
mv "$DANSER_SCREENSHOT_DIR/$SKIN_NAME.png" "$REPO_RANKING_PANEL_DIR/$SKIN_NAME.png"
fi
echo " ✓ Completed"
INDEX=$((INDEX + 1))
fi
done
echo ""
echo "[Danser Job Finished — $SKIN_COUNT skins processed]"
- name: Rename Generated Assets Based on skin.ini
run: |
echo "[Asset Renaming Started]"
INDEX=1
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
for skin_path in "$DANSER_SKINS_DIR"/*/; do
if [ -d "$skin_path" ]; then
SKIN_NAME=$(basename "$skin_path")
echo ""
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
ini_file=$(find "$skin_path" -maxdepth 1 -iname "skin.ini" | head -n1)
skin_header="$SKIN_NAME"
if [ -f "$ini_file" ]; then
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
if [ -n "$name_line" ]; then
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
[ -n "$new_name" ] && skin_header="$new_name"
fi
fi
original_gif="$REPO_SCREENSHOT_DIR/$SKIN_NAME.gif"
renamed_gif="$REPO_SCREENSHOT_DIR/$skin_header.gif"
if [ -f "$original_gif" ] && [ "$original_gif" != "$renamed_gif" ]; then
mv -f "$original_gif" "$renamed_gif"
echo " ✓ Renamed GIF"
else
echo " → No GIF to rename or already named correctly"
fi
original_png="$REPO_RANKING_PANEL_DIR/$SKIN_NAME.png"
renamed_png="$REPO_RANKING_PANEL_DIR/$skin_header.png"
if [ -f "$original_png" ] && [ "$original_png" != "$renamed_png" ]; then
mv -f "$original_png" "$renamed_png"
echo " ✓ Renamed PNG"
else
echo " → No PNG to rename or already named correctly"
fi
echo " ✓ Completed"
INDEX=$((INDEX + 1))
fi
done
echo ""
echo "[Asset Renaming Complete — $SKIN_COUNT skins processed]"
- name: Generate Mod Icons
run: |
echo "[Mod Icon Generation Started]"
ICONS_JSON_FILE="${{ github.workspace }}/.gitea/workflows/icons.json"
group1_icons=$(jq -r '.group1 | join(" ")' "$ICONS_JSON_FILE")
group2_icons=$(jq -r '.group2 | join(" ")' "$ICONS_JSON_FILE")
group3_icons=$(jq -r '.group3 | join(" ")' "$ICONS_JSON_FILE")
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
INDEX=1
for skin_path in "$DANSER_SKINS_DIR"/*/; do
if [ -d "$skin_path" ]; then
SKIN_NAME=$(basename "$skin_path")
echo ""
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
ini_file=$(find "$skin_path" -maxdepth 1 -iname "skin.ini" | head -n1)
skin_header="$SKIN_NAME"
if [ -f "$ini_file" ]; then
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
if [ -n "$name_line" ]; then
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
if [ -n "$new_name" ]; then
skin_header="$new_name"
fi
fi
fi
ICON_FOLDER="$skin_path"
OUTPUT="${REPO_MOD_ICONS_DIR}/${skin_header}-mod-icons.png"
TILE_SIZE=160
PADDING=10
MAX_ICONS=7
BLANK_IMAGE="blank.png"
magick -size "${TILE_SIZE}x${TILE_SIZE}" xc:none "$BLANK_IMAGE"
row_images=""
row_index=1
for group_list in "$group1_icons" "$group2_icons" "$group3_icons"; do
montage_files=""
count=0
for icon in $group_list; do
icon_path="${ICON_FOLDER}/selection-mod-${icon}@2x.png"
if [ -f "$icon_path" ]; then
montage_files="$montage_files \"$icon_path\""
count=$((count + 1))
elif [ -f "$DEFAULT_SKIN_DIR/selection-mod-${icon}@2x.png" ]; then
montage_files="$montage_files \"$DEFAULT_SKIN_DIR/selection-mod-${icon}@2x.png\""
count=$((count + 1))
fi
done
missing=$(( MAX_ICONS - count ))
if [ "$missing" -lt 0 ]; then
missing=0
fi
i=0
while [ "$i" -lt "$missing" ]; do
montage_files="$montage_files \"$BLANK_IMAGE\""
i=$((i + 1))
done
row_file="row_${row_index}.png"
eval "magick montage $montage_files -tile \"${MAX_ICONS}x1\" -geometry \"${TILE_SIZE}x${TILE_SIZE}+${PADDING}+${PADDING}\" -background none \"$row_file\""
row_images="$row_images \"$row_file\""
row_index=$((row_index + 1))
done
num_rows=0
for _ in $row_images; do
num_rows=$((num_rows + 1))
done
eval "magick montage $row_images -tile \"1x${num_rows}\" -geometry \"+${PADDING}+${PADDING}\" -background none \"$OUTPUT\""
rm "$BLANK_IMAGE"
rm row_*.png
echo " ✓ Completed"
INDEX=$((INDEX + 1))
fi
done
echo ""
echo "[Mod Icon Generation Finished — $SKIN_COUNT skins processed]"
- name: Create OSK files
run: |
echo "[OSK Creation Job Started]"
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
INDEX=1
FIXED_TIMESTAMP="2025-01-01 00:00:00"
find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | sort | while IFS= read -r skin; do
SKIN_FOLDER=$(basename "$skin")
echo ""
echo "[$INDEX/$SKIN_COUNT] Processing skin folder: $SKIN_FOLDER"
ini_file=$(find "$skin" -maxdepth 1 -iname "skin.ini" | head -n1)
if [ -f "$ini_file" ]; then
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
if [ -n "$name_line" ]; then
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
if [ -n "$new_name" ]; then
SKIN_FOLDER="$new_name"
fi
fi
else
echo " → No skin.ini found, using folder name."
fi
osk_file="${OSK_PATH}/${SKIN_FOLDER}.osk"
if ! (cd "$skin" && find . -type f -exec touch -d "$FIXED_TIMESTAMP" {} +); then
echo " ✖ Failed to normalize timestamps in $skin"
exit 1
fi
if (
cd "$skin" && \
find . -type f | sort | zip -rq -D -X -9 --compression-method deflate "$osk_file" -@
); then
echo " ✓ OSK file created successfully."
else
echo " ✖ Failed to create OSK file: $osk_file"
exit 1
fi
INDEX=$((INDEX + 1))
done
echo ""
echo "[OSK Creation Job Finished — $SKIN_COUNT skins processed]"
- name: Generate README
run: |
echo "Starting README generation..."
SKINS_JSON_FILE="${{ github.workspace }}/.gitea/workflows/skins.json"
DESC_FILE=$(mktemp)
jq -r '.descriptions | to_entries[] | "\(.key)=\(.value)"' "$SKINS_JSON_FILE" > "$DESC_FILE"
echo "---" > "$README_PATH"
echo "gitea: none" >> "$README_PATH"
echo "include_toc: true" >> "$README_PATH"
echo "---" >> "$README_PATH"
echo "" >> "$README_PATH"
echo "# Skins" >> "$README_PATH"
echo "" >> "$README_PATH"
echo "<!--" >> "$README_PATH"
echo "osuid: $OSU_ID" >> "$README_PATH"
echo "-->" >> "$README_PATH"
echo "" >> "$README_PATH"
get_desc() {
key=$1
escaped_key=$(printf '%s\n' "$key" | sed 's/[\/&]/\\&/g')
grep "^${escaped_key}=" "$DESC_FILE" | cut -d '=' -f2-
}
ORDER_FILE=$(mktemp)
JSON_SKINS_TMP=$(mktemp)
SEEN_HEADERS_FILE=$(mktemp)
jq -r '.order[]' "$SKINS_JSON_FILE" > "$ORDER_FILE"
cp "$ORDER_FILE" "$JSON_SKINS_TMP"
while IFS= read -r skin; do
dir="$DANSER_SKINS_DIR/$skin"
if [ ! -d "$dir" ]; then
echo "Skipping missing skin directory: $skin"
continue
fi
ini_file=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n 1)
skin_header="$skin"
if [ -f "$ini_file" ]; then
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n 1)
if [ -n "$name_line" ]; then
skin_header=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
fi
fi
if grep -Fxq "$skin_header" "$SEEN_HEADERS_FILE"; then
echo "Skipping duplicate skin header from JSON order: $skin_header"
continue
fi
echo "$skin_header" >> "$SEEN_HEADERS_FILE"
escaped_img=$(echo "$skin_header.gif" | sed 's/ /%20/g')
escaped_osk=$(echo "$skin_header.osk" | sed 's/ /%20/g')
echo "## [$skin_header]($REGISTRY_URL/$USER_REPOSITORY/media/tag/$new_tag/export/$escaped_osk)" >> "$README_PATH"
echo "" >> "$README_PATH"
skin_desc=$(get_desc "$skin")
if [ -n "$skin_desc" ]; then
echo "$skin_desc" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
if [ -f "$ini_file" ]; then
author_line=$(grep -i '^[[:space:]]*Author:' "$ini_file" | head -n 1 || true)
if [ -n "$author_line" ]; then
author=$(echo "$author_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
if [ -n "$author" ]; then
echo "**Author:** $author" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
fi
fi
echo "![$skin_header Gameplay](media/gameplay/$escaped_img)" >> "$README_PATH"
echo "" >> "$README_PATH"
if [ -f "media/panel/${skin_header}.png" ]; then
escaped_panel=$(echo "${skin_header}.png" | sed 's/ /%20/g')
echo "![$skin_header Ranking Panel](media/panel/$escaped_panel)" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
mod_icon_file="${skin_header}-mod-icons.png"
if [ -f "media/icons/$mod_icon_file" ]; then
escaped_mod=$(echo "$mod_icon_file" | sed 's/ /%20/g')
echo "![$skin_header Mods](media/icons/$escaped_mod)" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
done < "$ORDER_FILE"
find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r dir; do
skin=$(basename "$dir")
ini_file=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n 1)
skin_header="$skin"
if [ -f "$ini_file" ]; then
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n 1)
if [ -n "$name_line" ]; then
skin_header=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
fi
fi
if grep -Fxq "$skin_header" "$SEEN_HEADERS_FILE"; then
continue
fi
if grep -Fxq "$skin" "$JSON_SKINS_TMP"; then
continue
fi
echo "$skin_header" >> "$SEEN_HEADERS_FILE"
escaped_img=$(echo "$skin_header.gif" | sed 's/ /%20/g')
escaped_osk=$(echo "$skin_header.osk" | sed 's/ /%20/g')
echo "## [$skin_header]($REGISTRY_URL/$USER_REPOSITORY/media/tag/$new_tag/export/$escaped_osk)" >> "$README_PATH"
echo "" >> "$README_PATH"
if [ -f "$ini_file" ]; then
author_line=$(grep -i '^[[:space:]]*Author:' "$ini_file" | head -n 1 || true)
if [ -n "$author_line" ]; then
author=$(echo "$author_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
if [ -n "$author" ]; then
echo "**Author:** $author" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
fi
fi
echo "![$skin_header Gameplay](media/gameplay/$escaped_img)" >> "$README_PATH"
echo "" >> "$README_PATH"
if [ -f "media/panel/${skin_header}.png" ]; then
escaped_panel=$(echo "${skin_header}.png" | sed 's/ /%20/g')
echo "![$skin_header Ranking Panel](media/panel/$escaped_panel)" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
mod_icon_file="${skin_header}-mod-icons.png"
if [ -f "media/icons/$mod_icon_file" ]; then
escaped_mod=$(echo "$mod_icon_file" | sed 's/ /%20/g')
echo "![$skin_header Mods](media/icons/$escaped_mod)" >> "$README_PATH"
echo "" >> "$README_PATH"
fi
done
rm "$DESC_FILE" "$ORDER_FILE" "$JSON_SKINS_TMP" "$SEEN_HEADERS_FILE"
echo "# Build History" >> "$README_PATH"
echo "" >> "$README_PATH"
echo "| Version | Date |" >> "$README_PATH"
echo "| ------- | ---- |" >> "$README_PATH"
current_commit_date=$(TZ="Europe/Zurich" date -d "$(git log -1 --format=%cI)" "+%d.%m.%Y %H:%M:%S")
echo "| [\`$new_tag (Current)\`](https://git.sulejmani.xyz/arlind/skins/src/tag/$new_tag/README.md) | $current_commit_date |" >> "$README_PATH"
git tag --sort=-v:refname | grep -v "^$new_tag$" | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | while read -r tag; do
tag_date=$(git log -1 --format=%ci "$tag")
formatted_date=$(TZ="Europe/Zurich" date -d "$tag_date" "+%d.%m.%Y %H:%M:%S")
echo "| [\`$tag\`](https://git.sulejmani.xyz/arlind/skins/src/tag/$tag/README.md) | $formatted_date |" >> "$README_PATH"
done
echo "README generation completed."
- name: Configure Git
run: |
echo "Configuring git user and LFS..."
git config user.email "arlind@sulej.ch"
git config user.name "ci-bot"
git config lfs.https://${{ vars.CONTAINER_REGISTRY }}/arlind/skins.git/info/lfs.locksverify true
echo "Git configured."
- name: Add and Commit changes
run: |
git config advice.addIgnoredFile false
echo "Staging files for commit..."
git add README.md media/gameplay/* media/panel/* media/icons/* export/*
echo "Committing changes..."
git commit -m "[ci skip] push back from pipeline" -q || echo "No changes to commit"
echo "Commit step completed."
- name: Push changes and create tag
run: |
echo "Checking branch and pushing changes..."
if [ "${GITHUB_REF}" = "refs/heads/main" ]; then
echo "On main branch: pushing to origin main..."
git push origin HEAD:main || echo "No changes to push"
echo "Creating and pushing tag $new_tag..."
git tag "$new_tag"
git push origin "$new_tag"
else
echo "On branch ${GITHUB_REF_NAME}: pushing to origin ${GITHUB_REF_NAME}..."
git push origin HEAD:"${GITHUB_REF_NAME}" || echo "No changes to push"
fi
echo "Push step completed."
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Discover and Detect Skins
id: discover
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/discover-skins@main
with:
force_rebuild: ${{ github.event.inputs.force_rebuild }}
target_skins: ${{ github.event.inputs.target_skins }}
- name: Pull Git LFS
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/pull-lfs@main
with:
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
- name: Prepare Assets
id: prepare
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/prepare-assets@main
with:
all_skins: ${{ steps.discover.outputs.all_skins }}
- name: Create Tag
id: tag
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/create-tag@main
- name: Generate Previews
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-previews@main
with:
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
- name: Generate Mod Icons and Convert Images
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-icons@main
with:
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
- name: Generate Documentation
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-docs@main
with:
new_tag: ${{ steps.tag.outputs.new_tag }}
readme_path: ${{ env.README_PATH }}
doc_dir: ${{ env.DOC_DIR }}
user_repository: ${{ steps.prepare.outputs.user_repository }}
- name: Cleanup Files
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/cleanup@main
with:
all_skins: ${{ steps.discover.outputs.all_skins }}
- name: Commit and Push
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/git-commit-push@main
with:
new_tag: ${{ steps.tag.outputs.new_tag }}

View File

@@ -1,10 +1,30 @@
{
"order": [
"example1",
"example2"
"- Barely still Jace",
"- Jace",
"- Jace White",
"- Varvalian",
"- Barely still oreru",
"- Gunna",
"Minimal_by_Geroyuni",
"Konata",
"Ameliorate v1.5",
"Skin 2",
"as244",
"boop"
],
"descriptions": {
"example1": "Description of example1",
"example2": "Description of example2"
"- Barely still Jace": "My main skin.",
"- Jace": "My secondary skin, only really used for EZ.",
"- Jace White": "Mock up Rafis' skin.",
"- Varvalian": "My first real skin I created for myself.",
"- Barely still oreru": "Barely still Jace, but every Audio file got replaced with Oreru.",
"- Gunna": "My first skin made from scratch.",
"Minimal_by_Geroyuni": "My first skin that wasn't completely ass.",
"Konata": "Play this with hitlightning enabled lol.",
"Ameliorate v1.5": "This is only on here 'cause all my main skins use the hitsounds from here.",
"Skin 2": "Either this or as244 are the first 2 skins me and my friend made on osuskinner.",
"as244": "Either this or Skin 2 are the first 2 skins me and my friend made on osuskinner.",
"boop": "Just boop, downloaded it for DT."
}
}

8
.gitignore vendored
View File

@@ -0,0 +1,8 @@
*did*
*WhiteCat*
*Niven*
*Night*
*aiupscale*
*test*
*Teto*
*Tesotra*

149
README.md Normal file
View File

@@ -0,0 +1,149 @@
---
gitea: none
include_toc: true
---
# Skins
<!--
osuid: 13792719
-->
**Go back to [osc/skins](https://git.sulejmani.xyz/osc/skins)**
**Click on the Skin name to download it, or click on the thumbnail to see more about the skin, including a video preview, screenshots, and mod icons.**
## [Barely still Jace (Arlind edit)](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Barely%20still%20Jace/Barely%20still%20Jace%20%28Arlind%20edit%29.osk)
My main skin.
**Author:** Various people
[![Barely still Jace (Arlind edit) Thumbnail](media/thumbnail/-%20Barely%20still%20Jace/Barely%20still%20Jace%20%28Arlind%20edit%29.webp)](/docs/-%20Barely%20still%20Jace/Barely%20still%20Jace%20%28Arlind%20edit%29.md)
## [Jace Arlind edit](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Jace/Jace%20Arlind%20edit.osk)
My secondary skin, only really used for EZ.
**Author:** Various people
[![Jace Arlind edit Thumbnail](media/thumbnail/-%20Jace/Jace%20Arlind%20edit.webp)](/docs/-%20Jace/Jace%20Arlind%20edit.md)
## [Jace Arlind edit (white)](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Jace%20White/Jace%20Arlind%20edit%20%28white%29.osk)
Mock up Rafis' skin.
**Author:** Various people
[![Jace Arlind edit (white) Thumbnail](media/thumbnail/-%20Jace%20White/Jace%20Arlind%20edit%20%28white%29.webp)](/docs/-%20Jace%20White/Jace%20Arlind%20edit%20%28white%29.md)
## [Varvalian Arlind edit](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Varvalian/Varvalian%20Arlind%20edit.osk)
My first real skin I created for myself.
**Author:** Garin, Gab, Varvalian
[![Varvalian Arlind edit Thumbnail](media/thumbnail/-%20Varvalian/Varvalian%20Arlind%20edit.webp)](/docs/-%20Varvalian/Varvalian%20Arlind%20edit.md)
## [Barely still Jace (Oreru edit)](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Barely%20still%20oreru/Barely%20still%20Jace%20%28Oreru%20edit%29.osk)
Barely still Jace, but every Audio file got replaced with Oreru.
**Author:** Various people
[![Barely still Jace (Oreru edit) Thumbnail](media/thumbnail/-%20Barely%20still%20oreru/Barely%20still%20Jace%20%28Oreru%20edit%29.webp)](/docs/-%20Barely%20still%20oreru/Barely%20still%20Jace%20%28Oreru%20edit%29.md)
## [Gunna skin by Arlind](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/-%20Gunna/Gunna%20skin%20by%20Arlind.osk)
My first skin made from scratch.
**Author:** arlind
[![Gunna skin by Arlind Thumbnail](media/thumbnail/-%20Gunna/Gunna%20skin%20by%20Arlind.webp)](/docs/-%20Gunna/Gunna%20skin%20by%20Arlind.md)
## [Minimal by Geroyuni](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/Minimal_by_Geroyuni/Minimal%20by%20Geroyuni.osk)
My first skin that wasn't completely ass.
**Author:** Geroyuni
[![Minimal by Geroyuni Thumbnail](media/thumbnail/Minimal_by_Geroyuni/Minimal%20by%20Geroyuni.webp)](/docs/Minimal_by_Geroyuni/Minimal%20by%20Geroyuni.md)
## [Konata - Rave Party V0.9.1](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/Konata/Konata%20-%20Rave%20Party%20V0.9.1.osk)
Play this with hitlightning enabled lol.
**Author:** Vext
[![Konata - Rave Party V0.9.1 Thumbnail](media/thumbnail/Konata/Konata%20-%20Rave%20Party%20V0.9.1.webp)](/docs/Konata/Konata%20-%20Rave%20Party%20V0.9.1.md)
## [Ameliorate v1.5](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/Ameliorate%20v1.5/Ameliorate%20v1.5.osk)
This is only on here 'cause all my main skins use the hitsounds from here.
**Author:** Toy
[![Ameliorate v1.5 Thumbnail](media/thumbnail/Ameliorate%20v1.5/Ameliorate%20v1.5.webp)](/docs/Ameliorate%20v1.5/Ameliorate%20v1.5.md)
## [Skin 2](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/Skin%202/Skin%202.osk)
Either this or as244 are the first 2 skins me and my friend made on osuskinner.
**Author:** osuskinner.com / Various Artist
[![Skin 2 Thumbnail](media/thumbnail/Skin%202/Skin%202.webp)](/docs/Skin%202/Skin%202.md)
## [as244](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/as244/as244.osk)
Either this or Skin 2 are the first 2 skins me and my friend made on osuskinner.
**Author:** osuskinner.com / Various Artist
[![as244 Thumbnail](media/thumbnail/as244/as244.webp)](/docs/as244/as244.md)
## [boop](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/boop/boop.osk)
Just boop, downloaded it for DT.
**Author:** ryuk
[![boop Thumbnail](media/thumbnail/boop/boop.webp)](/docs/boop/boop.md)
## [Default](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/Default/Default.osk)
**Author:** Developers
[![Default Thumbnail](media/thumbnail/Default/Default.webp)](/docs/Default/Default.md)
## [MonkoGlassTest](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/MonkoGlassTest/MonkoGlassTest.osk)
**Author:** Monko2k | Edited by rektygon
[![MonkoGlassTest Thumbnail](media/thumbnail/MonkoGlassTest/MonkoGlassTest.webp)](/docs/MonkoGlassTest/MonkoGlassTest.md)
## [azerinoxrektygon edit](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/azerinoxrektygon%20edit/azerinoxrektygon%20edit.osk)
**Author:** marcel7 (various artists)
[![azerinoxrektygon edit Thumbnail](media/thumbnail/azerinoxrektygon%20edit/azerinoxrektygon%20edit.webp)](/docs/azerinoxrektygon%20edit/azerinoxrektygon%20edit.md)
## [kik0](https://git.sulejmani.xyz/Arlind/skins/media/tag/v1.9.0/export/kik0/kik0.osk)
**Author:** kik0
[![kik0 Thumbnail](media/thumbnail/kik0/kik0.webp)](/docs/kik0/kik0.md)
# Build History
| Version | Date |
| ------- | ---- |
| [`v1.9.0 (Current)`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.9.0/README.md) | 03.10.2025 21:39:36 |
| [`v1.8.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.8.0/README.md) | 03.10.2025 21:39:23 |
| [`v1.7.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.7.0/README.md) | 03.10.2025 21:29:58 |
| [`v1.6.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.6.0/README.md) | 03.10.2025 21:29:05 |
| [`v1.5.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.5.0/README.md) | 01.10.2025 15:37:24 |
| [`v1.4.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.4.0/README.md) | 17.09.2025 00:18:30 |
| [`v1.3.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.3.0/README.md) | 17.09.2025 00:15:48 |
| [`v1.2.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.2.0/README.md) | 16.09.2025 23:56:09 |
| [`v1.1.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.1.0/README.md) | 18.08.2025 02:22:37 |
| [`v1.0.0`](https://git.sulejmani.xyz/Arlind/skins/src/tag/v1.0.0/README.md) | 13.08.2025 23:05:16 |

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Skins/- Barely still Jace/Go.png LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,45 @@
[General]
//----------General
Name: Barely still Jace (Arlind edit)
Author: Various people
Version: 2.5
//----------Settings
SliderBallFlip: 1
CursorTrailRotate: 0
SpinnerFadePlayfield: 0
SliderBallFrames: 60
HitCircleOverlayAboveNumer: 1
SliderStyle: 2
AllowSliderBallTint: 1
//----------Cursor
CursorCentre: 1
CursorExpand: 0
CursorRotate: 0
CursorTrailRotate: 0
[Colours]
//----------Combo colors
Combo1: 120,120,255
//----------Text colors
SongSelectActiveText: 250,250,250
SongSelectInactiveText: 230,230,230
//----------Slider
SliderBorder: 120,120,120
SliderTrackOverride: 3,3,12
[Fonts]
//----------Hitcircle font
HitCirclePrefix: Assets/default/default
HitCircleOverlap: 160
//----------Score font
ScorePrefix: Assets/score/score
ScoreOverlap: 9
//----------Combo font
ComboPrefix: Assets/combo/score
ScoreOverlap: 9

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More