- Add ResolveHellAssetPath to automatically load *-hell variants during tournamentMode with fallback to vanilla assets - Rebuild Hell Tower briefing menu using HellTower_menu background with smooth floor cursor and sliding callout info card - Fix buffer overrun in RenderHellTower3D by packing helltower-menu at native 640x480 resolution with bounds-checked blit - Temporarily disable tower background music per user request - Add asset packing pipeline, verification tools, and automated 10-floor run-through smoke test
105 lines
3.5 KiB
PowerShell
105 lines
3.5 KiB
PowerShell
# Copy all assets used by Hell Tower and its 10 games into assets\hell_tower
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$srcRoot = "assets"
|
|
$dstRoot = "assets\hell_tower"
|
|
|
|
if (-not (Test-Path $dstRoot)) {
|
|
New-Item -ItemType Directory -Path $dstRoot -Force | Out-Null
|
|
}
|
|
|
|
function Copy-AssetDir($relSrc, $relDst) {
|
|
$src = Join-Path $srcRoot $relSrc
|
|
$dst = Join-Path $dstRoot $relDst
|
|
if (-not (Test-Path $dst)) {
|
|
New-Item -ItemType Directory -Path $dst -Force | Out-Null
|
|
}
|
|
Write-Host "Copying directory $relSrc -> $relDst..."
|
|
Get-ChildItem -Path $src | ForEach-Object {
|
|
$destFile = Join-Path $dst $_.Name
|
|
Copy-Item -Path $_.FullName -Destination $destFile -Force
|
|
}
|
|
}
|
|
|
|
function Copy-AssetFile($relSrc, $relDst) {
|
|
$src = Join-Path $srcRoot $relSrc
|
|
$dst = Join-Path $dstRoot $relDst
|
|
$dstDir = Split-Path $dst -Parent
|
|
if (-not (Test-Path $dstDir)) {
|
|
New-Item -ItemType Directory -Path $dstDir -Force | Out-Null
|
|
}
|
|
Write-Host "Copying file $relSrc -> $relDst..."
|
|
Copy-Item -Path $src -Destination $dst -Force
|
|
}
|
|
|
|
# 1. Animations
|
|
Copy-AssetDir "animations\buckshot" "animations\buckshot"
|
|
Copy-AssetDir "animations\coin" "animations\coin"
|
|
Copy-AssetDir "animations\dice" "animations\dice"
|
|
Copy-AssetDir "animations\roulette" "animations\roulette"
|
|
Copy-AssetDir "animations\tables" "animations\tables"
|
|
Copy-AssetDir "animations\wheel" "animations\wheel"
|
|
Copy-AssetFile "animations\dbd_hook.ans" "animations\dbd_hook.ans"
|
|
|
|
# 2. Sprites
|
|
Copy-AssetDir "sprites\buckshot" "sprites\buckshot"
|
|
Copy-AssetDir "sprites\coin" "sprites\coin"
|
|
Copy-AssetDir "sprites\dice" "sprites\dice"
|
|
Copy-AssetDir "sprites\roulette" "sprites\roulette"
|
|
Copy-AssetDir "sprites\tables" "sprites\tables"
|
|
Copy-AssetDir "sprites\wheel" "sprites\wheel"
|
|
|
|
# 3. Music (Tower OST)
|
|
Copy-AssetDir "music\tower" "music\tower"
|
|
Copy-AssetDir "music\tower" "music"
|
|
|
|
# 4. Textures
|
|
Copy-AssetFile "textures\card-table.bin" "textures\card-table.bin"
|
|
Copy-AssetFile "textures\sprite_blackjack_table.png" "textures\sprite_blackjack_table.png"
|
|
Copy-AssetFile "textures\sprite_roulette_table.png" "textures\sprite_roulette_table.png"
|
|
Copy-AssetFile "textures\tex_wall_hell.png" "textures\tex_wall_hell.png"
|
|
|
|
# 5. Data
|
|
Copy-AssetFile "data\dealer_phrases.txt" "data\dealer_phrases.txt"
|
|
Copy-AssetFile "data\poker-ranks.bin" "data\poker-ranks.bin"
|
|
|
|
# 6. Audio
|
|
# Generated SFX
|
|
$genSfx = @(
|
|
"buckshot-pump.wav",
|
|
"dice-roll.wav",
|
|
"round-loss.wav",
|
|
"round-win.wav",
|
|
"skill-hit.wav",
|
|
"skill-miss.wav",
|
|
"skill-perfect.wav",
|
|
"ui-tick.wav"
|
|
)
|
|
foreach ($sfx in $genSfx) {
|
|
Copy-AssetFile "audio\generated\$sfx" "audio\generated\$sfx"
|
|
}
|
|
|
|
# ASCII root audio
|
|
$rootAudio = @(
|
|
"b05e1ac8be34248.wav",
|
|
"hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav",
|
|
"moving-stone.wav",
|
|
"playing_cards_deck_flick_through_001_20485.wav",
|
|
"revolverdryfirec.wav",
|
|
"roulette-wheel-throw-2.wav",
|
|
"toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav",
|
|
"victory-tf2.wav"
|
|
)
|
|
foreach ($aud in $rootAudio) {
|
|
Copy-AssetFile "audio\$aud" "audio\$aud"
|
|
}
|
|
|
|
# Russian audio files matching tower/game sound effects by exact size to avoid codepage issues
|
|
$dstAudioDir = Join-Path $dstRoot "audio"
|
|
$targetSizes = @(1466446, 228342, 212174, 757838)
|
|
Get-ChildItem "assets\audio\*.wav" | Where-Object { $targetSizes -contains $_.Length } | ForEach-Object {
|
|
Write-Host "Copying audio file $($_.Name) -> audio\$($_.Name)..."
|
|
Copy-Item -Path $_.FullName -Destination (Join-Path $dstAudioDir $_.Name) -Force
|
|
}
|
|
|
|
Write-Host "All Hell Tower assets successfully copied!"
|