diasurgical / devilutionX

Diablo build for modern operating systems
Other
8.01k stars 786 forks source link

Remove unused sounds #7310

Closed glebm closed 1 month ago

glebm commented 2 months ago

Done with the following script:

#!/usr/bin/env ruby

tsv = File.read('assets/txtdata/sound/effects.tsv')
all = tsv.lines[1...].map {|l| l.split("\t")[0]}
used = Dir['Source/**/*.{cpp,c,h,hpp}'].flat_map do |path|
    File.read(path).scan(/SfxID::[A-Za-z0-9]+/).map {|s| s.split('::')[1]}
end

# Used via RndSFX
used.concat(%w[
    Warrior69b
    Sorceror69b
    Rogue69b
    Monk69b
    Swing2
    SpellAcid1
    OperateShrine1
    Warrior14b
    Warrior14c
    Warrior15b
    Warrior15c
    Warrior16b
    Warrior16c
    Warrior2b
    Warrior2c
    Rogue14b
    Rogue14c
    Sorceror14b
    Sorceror14c
    Monk14b
    Monk14c
])

used.sort!
used.uniq!
unused = all - used
unused.sort!

File.open('assets/txtdata/sound/effects.tsv', 'w') do |f|
    f.write(tsv.lines[0])
    tsv.lines[1...].each do |line|
        fields = line.split("\t")
        if unused.include?(fields[0])
            puts fields[2].tr('\\', '/')
        else
            f.write(line)
        end
    end
end

List files for unpack_and_minify_mpq updated in https://github.com/diasurgical/devilutionx-mpq-tools/pull/11