load 'rake.conf'

if not defined? RGSS_LIB_DIR
  puts 'RGSS_LIB_DIR ݒ肳Ă܂B'
  exit 0
end
$LOAD_PATH.push(RGSS_LIB_DIR)

require 'rake/clean'
require 'tools/dbc/rxdata_compiler'

PROJECT_DIR = './' if not defined? PROJECT_DIR
DATA_DIR = PROJECT_DIR + 'Data/'
CSV_DIR = PROJECT_DIR + 'csv/'
ITEM_GEN_CSV_DIR = CSV_DIR + 'ItemGen/'

FODS_FILE = PROJECT_DIR + 'data_base.fods' if not defined? FODS_FILE

RXDATA_FILES = FileList[
DATA_DIR + 'System.rxdata',
DATA_DIR + 'States.rxdata',
DATA_DIR + 'Classes.rxdata',
DATA_DIR + 'Skills.rxdata',
DATA_DIR + 'Items.rxdata',
DATA_DIR + 'Weapons.rxdata',
DATA_DIR + 'Armors.rxdata',
DATA_DIR + 'Enemies.rxdata',
DATA_DIR + 'Actors.rxdata'
]
CLOBBER.include(RXDATA_FILES)

CSV_FILE_DATA = {
  ITEM_GEN_CSV_DIR + 'TreasureData.csv' => %w(name probs nexts values),
  ITEM_GEN_CSV_DIR + 'Item_Attribute.csv' => %w(datakey exp_type attr_name attr_value),
  ITEM_GEN_CSV_DIR + 'Item_Expansion.csv' => %w(datakey name base_item_id base_item_type name_pos level attributes help_text alias_names)
}
ITEM_GEN_FILES = FileList[
ITEM_GEN_CSV_DIR + 'TreasureData.csv',
ITEM_GEN_CSV_DIR + 'Item_Attribute.csv',
ITEM_GEN_CSV_DIR + 'Item_Expansion.csv'
]
CLOBBER.include(ITEM_GEN_FILES)

CSV_PROPERTIES_FILE_DATA = {
  CSV_DIR + 'ClassesProperties.csv' => ['Classes',%w(id base_pdef)],
  CSV_DIR + 'ActorsProperties.csv' => ['Actors',%w(id sex character)],
  CSV_DIR + 'EnemiesProperties.csv' => ['Enemies',%w(id treasure_id)]
}
CSV_PROPERTIES_FILES = FileList[
CSV_DIR + 'ClassesProperties.csv',
CSV_DIR + 'ActorsProperties.csv',
CSV_DIR + 'EnemiesProperties.csv'
]
CLOBBER.include(CSV_PROPERTIES_FILES)

ALL_TASKS = []

# default task
task :default => :all

directory DATA_DIR
directory CSV_DIR

# DataBase task
desc 'Make rxdata (RPG Tkool XP Database)'
task :rxdata => [DATA_DIR,*RXDATA_FILES]
ALL_TASKS << :rxdata

# Properties task
desc 'Make properties'
task :properties => [CSV_DIR,*CSV_PROPERTIES_FILES]
ALL_TASKS << :properties

# Item Generator
directory ITEM_GEN_CSV_DIR

desc 'Make csv for "item generate data"'
task :item_gen => [ITEM_GEN_CSV_DIR,*ITEM_GEN_FILES]
ALL_TASKS << :item_gen

# all task
desc 'Make all(default)' + "[#{ALL_TASKS.join(',')}]"
task :all => ALL_TASKS

# remake task
desc 'Remake (clobber and all)'
task :remake => [:clobber,:all]

# rules
rule( /\.rxdata$/ => FODS_FILE ) do |t|
  puts 'make ' + t.name
  rxdc t.source, File.basename(t.name,'.rxdata')
end

rule( /\.csv$/ => FODS_FILE ) do |t|
  puts 'make ' + t.name
  if CSV_FILE_DATA.member?(t.name)
    csvc t.source, File.basename(t.name,'.csv'), t.name, CSV_FILE_DATA[t.name]
  elsif CSV_PROPERTIES_FILE_DATA.member?(t.name)
    sheet,col_names = CSV_PROPERTIES_FILE_DATA[t.name]
    propc t.source, sheet, t.name, col_names
  end
end
