|
ferencd@0
|
1 require 'fileutils'
|
|
ferencd@0
|
2
|
|
ferencd@0
|
3 imgfile = "download.png"
|
|
ferencd@0
|
4 target_dir = "work"
|
|
ferencd@0
|
5
|
|
ferencd@0
|
6 imgfile = ARGV[0] if ARGV.length >= 1
|
|
ferencd@0
|
7 target_dir = ARGV[1] if ARGV.length >= 2
|
|
ferencd@0
|
8
|
|
ferencd@0
|
9 puts "working on image: #{imgfile} going into #{target_dir}"
|
|
ferencd@0
|
10
|
|
ferencd@0
|
11 # Does it exist?
|
|
ferencd@0
|
12 abort("#{imgfile} does not exist. Giving up.") if not File.exist?(imgfile)
|
|
ferencd@0
|
13
|
|
ferencd@0
|
14 # Cutting the file into long pieces.
|
|
ferencd@0
|
15 abort("#{imgfile} could not be split up into lines") if not system("convert #{imgfile} -crop 832x64 +repage +adjoin row_%02d.png")
|
|
ferencd@0
|
16
|
|
ferencd@0
|
17 # Relocating all pieces into their own directory.
|
|
ferencd@0
|
18 # The following is the list:
|
|
ferencd@0
|
19 # 0 - Spell cast up - scu
|
|
ferencd@0
|
20 # 1 - Spell cast left - scl
|
|
ferencd@0
|
21 # 2 - Spell cast down - scd
|
|
ferencd@0
|
22 # 3 - Spell cast right - scr
|
|
ferencd@0
|
23 # 4 - Thrust up - tru
|
|
ferencd@0
|
24 # 5 - Thrust left - trl
|
|
ferencd@0
|
25 # 6 - Thrust down - trd
|
|
ferencd@0
|
26 # 7 - Thrust right - trr
|
|
ferencd@0
|
27 # 8 - Walk up - wlu
|
|
ferencd@0
|
28 # 9 - Walk left - wll
|
|
ferencd@0
|
29 # 10 - Walk down - wld
|
|
ferencd@0
|
30 # 11 - Walk right - wlr
|
|
ferencd@0
|
31 # 12 - Slash up - slu
|
|
ferencd@0
|
32 # 13 - Slash left - sll
|
|
ferencd@0
|
33 # 14 - Slash down - sld
|
|
ferencd@0
|
34 # 15 - Slash right - slr
|
|
ferencd@0
|
35 # 16 - Shoot up - shu
|
|
ferencd@0
|
36 # 17 - Shoot left - shl
|
|
ferencd@0
|
37 # 18 - Shoot down - shd
|
|
ferencd@0
|
38 # 19 - Shoot right - shr
|
|
ferencd@0
|
39 # 20 - Hurt - hrt
|
|
ferencd@0
|
40
|
|
ferencd@0
|
41 maps = {
|
|
ferencd@0
|
42 "00" => {:name => "scu", :count => 7, :base_name => "sc", :direction => "u"},
|
|
ferencd@0
|
43 "01" => {:name => "scl", :count => 7, :base_name => "sc", :direction => "l"},
|
|
ferencd@0
|
44 "02" => {:name => "scd", :count => 7, :base_name => "sc", :direction => "d"},
|
|
ferencd@0
|
45 "03" => {:name => "scr", :count => 7, :base_name => "sc", :direction => "r"},
|
|
ferencd@0
|
46 "04" => {:name => "tru", :count => 8, :base_name => "tr", :direction => "u"},
|
|
ferencd@0
|
47 "05" => {:name => "trl", :count => 8, :base_name => "tr", :direction => "l"},
|
|
ferencd@0
|
48 "06" => {:name => "trd", :count => 8, :base_name => "tr", :direction => "d"},
|
|
ferencd@0
|
49 "07" => {:name => "trr", :count => 8, :base_name => "tr", :direction => "r"},
|
|
ferencd@0
|
50 "08" => {:name => "wlu", :count => 9, :base_name => "wl", :direction => "u"},
|
|
ferencd@0
|
51 "09" => {:name => "wll", :count => 9, :base_name => "wl", :direction => "l"},
|
|
ferencd@0
|
52 "10" => {:name => "wld", :count => 9, :base_name => "wl", :direction => "d"},
|
|
ferencd@0
|
53 "11" => {:name => "wlr", :count => 9, :base_name => "wl", :direction => "r"},
|
|
ferencd@0
|
54 "12" => {:name => "slu", :count => 6, :base_name => "sl", :direction => "u"},
|
|
ferencd@0
|
55 "13" => {:name => "sll", :count => 6, :base_name => "sl", :direction => "l"},
|
|
ferencd@0
|
56 "14" => {:name => "sld", :count => 6, :base_name => "sl", :direction => "d"},
|
|
ferencd@0
|
57 "15" => {:name => "slr", :count => 6, :base_name => "sl", :direction => "r"},
|
|
ferencd@0
|
58 "16" => {:name => "shu", :count =>13, :base_name => "sh", :direction => "u"},
|
|
ferencd@0
|
59 "17" => {:name => "shl", :count =>13, :base_name => "sh", :direction => "l"},
|
|
ferencd@0
|
60 "18" => {:name => "shd", :count =>13, :base_name => "sh", :direction => "d"},
|
|
ferencd@0
|
61 "19" => {:name => "shr", :count =>13, :base_name => "sh", :direction => "r"},
|
|
ferencd@0
|
62 "20" => {:name => "hrt", :count => 6, :base_name => "hr", :direction => "t"}
|
|
ferencd@0
|
63 }
|
|
ferencd@0
|
64
|
|
ferencd@0
|
65
|
|
ferencd@0
|
66 # Prepare the work directory
|
|
ferencd@0
|
67 abort("Cannot create #{target_dir}") if not FileUtils::mkdir_p "#{target_dir}"
|
|
ferencd@0
|
68
|
|
ferencd@0
|
69 maps.each do |key, value_map|
|
|
ferencd@0
|
70
|
|
ferencd@0
|
71 # Create the directory where the file will go
|
|
ferencd@0
|
72 current_target_dir = target_dir + "/" + value_map[:base_name]
|
|
ferencd@0
|
73 abort("Cannot create #{current_target_dir} dir") if not FileUtils::mkdir_p "#{current_target_dir}"
|
|
ferencd@0
|
74
|
|
ferencd@0
|
75 # The current file
|
|
ferencd@0
|
76 current_file = "row_#{key}.png"
|
|
ferencd@0
|
77 FileUtils.mv(current_file, "#{current_target_dir}")
|
|
ferencd@0
|
78
|
|
ferencd@0
|
79 #Save current location
|
|
ferencd@0
|
80 current_dir = Dir.pwd
|
|
ferencd@0
|
81
|
|
ferencd@0
|
82 # Create the template of the outcoming files
|
|
ferencd@0
|
83 target_filenames = value_map[:direction] + "_" + value_map[:base_name] + "_%01d.png"
|
|
ferencd@0
|
84 # now go into the directory and chop up the images
|
|
ferencd@0
|
85 Dir.chdir(current_target_dir)
|
|
ferencd@0
|
86 abort("Cannot chop up #{current_file}") if not system("convert #{current_file} -crop 64x64 +repage +adjoin -scene 1 #{target_filenames}")
|
|
ferencd@0
|
87
|
|
ferencd@0
|
88 # Now remove all files that are after count
|
|
ferencd@0
|
89 (value_map[:count] + 1 .. 13).each do |num|
|
|
ferencd@0
|
90 to_delete_filename = value_map[:direction] + "_" + value_map[:base_name] + "_" + num.to_s + ".png"
|
|
ferencd@0
|
91 FileUtils.rm(to_delete_filename)
|
|
ferencd@0
|
92 end
|
|
ferencd@0
|
93
|
|
ferencd@0
|
94 # remove current file
|
|
ferencd@0
|
95 FileUtils.rm(current_file)
|
|
ferencd@0
|
96
|
|
ferencd@0
|
97 # And resize everything in the current directory to 32x32
|
|
ferencd@0
|
98 abort("Cannot mogrify") if not system("mogrify -geometry x32 *.png")
|
|
ferencd@0
|
99
|
|
ferencd@0
|
100 # Let's go home, fetch the next file
|
|
ferencd@0
|
101 Dir.chdir(current_dir)
|
|
ferencd@0
|
102 end
|
|
ferencd@0
|
103
|
|
ferencd@0
|
104
|