home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 4427 / aisp_memo-20090510.7z / misc / rewrite_emotion.rb < prev   
Encoding:
Ruby Source  |  2009-04-11  |  1.6 KB  |  83 lines

  1. #!/usr/bin/env ruby
  2. # emotion.csvñ≥╜±ñ¡┤╣ñ¿ñδ
  3. # ╝┬╣╘ñ╦ñ╧data/chara/1.hedñ≥┼╕│½ñ╖ñ╞ñ¬ñ»╔¼═╫ñóñΩ
  4. #
  5. # ╗╚ññ╩²
  6. #    % ruby rewrite_emotion.rb aisp_root_dir
  7. # ╜±ñ¡┤╣ñ¿ñδ╞Γ═╞
  8. # ─╔▓├ñ╣ñδÑ╫ÑΩÑ╗Ñ├Ñ╚
  9.  
  10. require 'nkf'
  11. require 'fileutils'
  12.  
  13. #----------------------------------------------------------------------
  14. MOTION_ID = 0
  15. START_ANIM = 1
  16. LOOP_ANIM = 2
  17. LOOP_COUNT = 3
  18. END_ANIM = 4
  19. PARAM1 = 5
  20. NAME = 6
  21. CMD_PARAM = 7
  22. MENU_NR = 8
  23. ICON_ID = 9
  24. ICON_SE = 10
  25. CATEGORY = 11
  26.  
  27. def convert_existing(in_data)
  28.   out_data = []
  29.   in_data.length.times do |i|
  30.     input = in_data[i]
  31.     data = input.split(/,/)
  32.     data << '' # ║╟╕σñ╦ѽÑ≤Ñ▐ñ≥ñ─ñ▒ñδñ┐ñß
  33.  
  34.     # sitÑΓí╝Ñ╖ÑτÑ≤
  35.     if data[START_ANIM] == '16011'
  36.       data[CMD_PARAM] = 'sit'
  37.     end
  38.     out_data << data.join(",")
  39.   end
  40.   return out_data
  41. end
  42.  
  43. def add_extra(dir)
  44.   pat = "#{dir}/../chara/1/00201/anim/*.MRB"
  45.   #pat = "../../unpacked/chara/1/00201/anim/*.MRB" # debug
  46.   alist = Dir::glob(pat).map do |x|
  47.     x.sub!(/\.MRB$/, '')
  48.     x.sub!(/^.*_/, '')
  49.   end
  50.   r = []
  51.   alist.each do |x|
  52.     r << "#{x},#{x},#{x},1,#{x},,#{x},#{x},,,,ACTION,"
  53.   end
  54.   return r
  55. end
  56.  
  57. def convert(in_data, dir)
  58.   out_data = convert_existing(in_data)
  59.   out_data = out_data + add_extra(dir)
  60.   return out_data
  61. end
  62.  
  63. def main(dir)
  64.   src = "#{dir}/emotion.csv.dist"
  65.   dst = "#{dir}/emotion.csv"
  66.   if !FileTest.exists?(src) && FileTest.exists?(dst)
  67.     FileUtils.cp(dst, src, {:preserve => true})
  68.   end
  69.  
  70.   ifp = open("#{dir}/emotion.csv.dist")
  71.   ofp = open("#{dir}/emotion.csv", "wb")
  72.  
  73.   in_data = NKF.nkf('-S -e -d', ifp.read).split("\n")
  74.   out_data = convert(in_data, dir)
  75.   ofp.print NKF.nkf('-s -E -c', out_data.join("\n") + "\n")
  76.   ofp.close
  77.   ifp.close
  78. end
  79.  
  80. main(ARGV[0])
  81.