Determine the Soldiers At War palette
This commit also takes the first step towards making it configurable; override `internal/palettes.DefaultPaletteName` at build time to choose one palette over another. It would be nice to set this at runtime!
This commit is contained in:
45
scripts/palette-from-pcx
Executable file
45
scripts/palette-from-pcx
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
if ARGV.size != 2
|
||||
puts "Usage: $0 <filename.pcx> <Palette name>"
|
||||
exit 1
|
||||
end
|
||||
|
||||
FILENAME = ARGV[0]
|
||||
PALETTENAME = ARGV[1]
|
||||
|
||||
f = File.open(FILENAME)
|
||||
|
||||
# In a 256-colour PCX file, the palette is stored in the final 768 bytes as RGB
|
||||
# triplets, and the byte before that should be 0x0C: https://en.wikipedia.org/wiki/PCX#Color_palette
|
||||
f.seek(-769, IO::SEEK_END)
|
||||
|
||||
raise "Check byte is wrong" unless f.read(1) == "\x0C"
|
||||
|
||||
puts <<EOF
|
||||
package palettes
|
||||
|
||||
import "image/color"
|
||||
|
||||
var (
|
||||
#{PALETTENAME}Palette = color.Palette{
|
||||
Transparent,
|
||||
|
||||
EOF
|
||||
|
||||
# bytes.shift(3) # Ignore idx 0 so we can make it transparent
|
||||
|
||||
256.times do
|
||||
r, g, b = f.read(3).bytes
|
||||
|
||||
puts "\t\tcolor.RGBA{R: #{r}, G: #{g}, B: #{b}, A: 255},"
|
||||
end
|
||||
|
||||
puts <<EOF
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
Palettes["#{PALETTENAME}"] = #{PALETTENAME}Palette
|
||||
}
|
||||
EOF
|
Reference in New Issue
Block a user