IceDragon200

DatabaseToXml WIP2

Sep 4th, 2011
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 19.32 KB | None | 0 0
  1. #==============================================================================#
  2. # ** ISS - Database To Xml
  3. #==============================================================================#
  4. # ** Date Created  : 09/04/2011
  5. # ** Date Modified : 09/05/2011
  6. # ** Created By    : IceDragon
  7. # ** For Game      : Code JIFZ
  8. # ** ID            : 027
  9. # ** Version       : 1.0
  10. # ** Requires      : ISS000 - Core(2.1 or above)
  11. #==============================================================================#
  12. ($imported ||= {})["ISS-DatabaseToXml"] = true
  13. #==============================================================================#
  14. # ** ISS::NoteInject
  15. #==============================================================================#
  16. module ISS
  17.   install_script( 27, :system )
  18.   module DatabaseToXml
  19.     Dir.mkdir( "Database" ) if !FileTest.directory?( "Database" )
  20.      
  21.     def self.dump_database
  22.       dump_data_object( "ITEM", "Items", "Database/Items" )
  23.       dump_data_object( "SKILL", "Skills", "Database/Skills" )
  24.       dump_data_object( "ARMOR", "Armors", "Database/Armors" )
  25.       dump_data_object( "WEAPON", "Weapons", "Database/Weapons" )
  26.       dump_data_object( "STATE", "States", "Database/States" )
  27.       dump_data_object( "CLASS", "Classes", "Database/Classes" )
  28.     end
  29.    
  30.     def self.dump_data_object( prename, filename, outputfolder )
  31.       Dir.mkdir( outputfolder ) if !FileTest.directory?( outputfolder )
  32.       (i = load_data( "Data/#{filename}.rvdata" )).each { |o|
  33.          next if o.nil?()
  34.          File.open("#{outputfolder}/#{prename}#{"%03d"%o.id}.xml", "w+") { |f|
  35.            f.puts( o.create_xml )
  36.          }
  37.       }
  38.     end
  39.    
  40.     def self.array_to_string( array )
  41.       return array.inject("") { |r, i| r + %Q("#{i}") + (array.index(i)==array.size-1 ? "" : ",") }
  42.     end  
  43.      
  44.     def self.learnings_array_to_string( array )
  45.       return array.inject("") { |r, i| r + %Q(\n#{i.create_xml}) }
  46.     end
  47.    
  48.     def self.rank_table_to_string( table )
  49.       result = ""
  50.       for x in 1...table.xsize
  51.         ans = %Q("#{table[x]}")
  52.         result += %Q(<#{x}=#{ans}/>) + (x==table.xsize-1 ? "" : "\n")
  53.       end
  54.       return result
  55.     end  
  56.    
  57.     def self.sting_each_line( string )
  58.       string.split( /[\r\n]+/ ).each { |line| yield line }
  59.     end
  60.    
  61.     def self.string_to_bool( string )
  62.       case string
  63.       when true              ; return true
  64.       when false             ; return false  
  65.       when /(TRUE|YES|Y|T)/i ; return true
  66.       when /(FALSE|NO|N|F)/i ; return false
  67.       else                   ; return false
  68.       end  
  69.     end
  70.    
  71.     def self.number_string_to_array( string )
  72.       result = []
  73.       case string
  74.       when /("\d+"(?:\s*,\s*"\d+")*)/i
  75.         $1.split(/\d+/).each { |i| result << i }
  76.       when /(\d+(?:\s*,\s*\d+)*)/i
  77.         $1.split(/\d+/).each { |i| result << i }
  78.       end  
  79.       return result
  80.     end
  81.    
  82.   end  
  83. end
  84.  
  85. class RPG::BaseItem
  86.  
  87.   def create_xml()
  88.     return %Q(
  89. <id="#{@id}"/>    
  90. <name="#{@name}"/>
  91. <icon_index="#{@icon_index}"/>
  92. <description="#{@description}"/>
  93.  
  94. <note>
  95. #{@note}
  96. </note>
  97. )
  98.   end
  99.  
  100.   def set_from_string( instring )
  101.     @__reading_note_lines = false
  102.     ISS::DatabaseToXml.sting_each_line { |line|
  103.       string_to_property( line )  
  104.     }
  105.   end
  106.  
  107.   def string_to_property( line )
  108.     case line
  109.     when /<id="(\d+)"\/>/i
  110.       @id = $1.to_i
  111.     when /<name="(.*)"\/>/i  
  112.       @name = $1
  113.     when /<icon_index="(\d+)"\/>/i    
  114.       @icon_index = $1.to_i
  115.     when /<description="(.*)"\/>/i
  116.       @description = $1
  117.     when /<note>/i
  118.       @__reading_note_lines = true
  119.     when /<\/note>/i
  120.       @__reading_note_lines = false
  121.     else  
  122.       if @__reading_note_lines
  123.         self.note += line + "\n"
  124.       end  
  125.     end
  126.   end
  127.  
  128. end
  129.  
  130. class RPG::UsableItem
  131.  
  132.   def create_xml()
  133.     return super + %Q(
  134. <scope="#{@scope}"/>
  135. <occasion="#{@occasion}"/>
  136. <speed="#{@speed}"/>
  137. <animation_id="#{@animation_id}"/>
  138.  
  139. <common_event_id="#{@common_event_id}"/>
  140.  
  141. <base_damage="#{@base_damage}"/>
  142. <variance="#{@variance}"/>
  143. <atk_f="#{@atk_f}"/>
  144. <spi_f="#{@spi_f}"/>
  145.  
  146. <physical_attack="#{@physical_attack.to_s}"/>
  147. <damage_to_mp="#{@damage_to_mp.to_s}"/>
  148. <absorb_damage="#{@absorb_damage.to_s}"/>
  149. <ignore_defense="#{@ignore_defense.to_s}"/>
  150.  
  151. <element_set>
  152. #{ISS::DatabaseToXml.array_to_string( @element_set )}
  153. </element_set>
  154.  
  155. <plus_state_set>
  156. #{ISS::DatabaseToXml.array_to_string( @plus_state_set )}
  157. </plus_state_set>
  158.  
  159. <minus_state_set>
  160. #{ISS::DatabaseToXml.array_to_string( @minus_state_set )}
  161. </minus_state_set>
  162. )
  163.   end
  164.  
  165.   def set_from_string( string )
  166.     @__reading_element_set     = false
  167.     @__reading_plus_state_set  = false
  168.     @__reading_minus_state_set = false
  169.     super( string )
  170.   end
  171.  
  172.   def string_to_property( line )
  173.     super( line )
  174.     case line
  175.     when /<scope="(\d+)"\/>/i
  176.       @scope = $1.to_i
  177.     when /<occasion="(\d+)"\/>/i
  178.       @occasion = $1.to_i
  179.     when /<speed="(\d+)"\/>/i
  180.       @speed = $1.to_i
  181.     when /<animation_id="(\d+)"\/>/i
  182.       @animation_id = $1.to_i
  183.     when /<common_event_id="(\d+)"\/>/i  
  184.       @common_event_id = $1.to_i
  185.     when /<base_damage="(\d+)"\/>/i
  186.       @base_damage = $1.to_i
  187.     when /<variance="(\d+)"\/>/i
  188.       @variance = $1.to_i
  189.     when /<atk_f="(\d+)"\/>/i
  190.       @atk_f = $1.to_i
  191.     when /<spi_f="(\d+)"\/>/i
  192.       @spi_f = $1.to_i
  193.     when /<physical_attack="(\w+)"\/>/i
  194.       @physical_attack = ISS::DatabaseToXml.string_to_bool( $1 )
  195.     when /<damage_to_mp="(\w+)"\/>/i
  196.       @damage_to_mp = ISS::DatabaseToXml.string_to_bool( $1 )
  197.     when /<absorb_damage="(\w+)"\/>/i
  198.       @absorb_damage = ISS::DatabaseToXml.string_to_bool( $1 )
  199.     when /<ignore_defense="(\w+)"\/>/i
  200.       @ignore_defense = ISS::DatabaseToXml.string_to_bool( $1 )  
  201.     when /<element_set>/i  
  202.       @__reading_element_set = true
  203.     when /<\/element_set>/i  
  204.       @__reading_element_set = false
  205.     when /<plus_state_set>/i  
  206.       @__reading_plus_state_set = true
  207.     when /<\/plus_state_set>/i  
  208.       @__reading_plus_state_set = false
  209.     when /<minus_state_set>/i  
  210.       @__reading_minus_state_set = true
  211.     when /<\/minus_state_set>/i  
  212.       @__reading_minus_state_set = false  
  213.     else
  214.       if @__reading_element_set
  215.         @element_set += ISS::DatabaseToXml.number_string_to_array( line )
  216.       end  
  217.       if @__reading_plus_state_set
  218.         @plus_state_set += ISS::DatabaseToXml.number_string_to_array( line )
  219.       end  
  220.       if @__reading_minus_state_set
  221.         @minus_state_set += ISS::DatabaseToXml.number_string_to_array( line )
  222.       end
  223.     end  
  224.   end
  225.  
  226. end
  227.  
  228. class RPG::Item
  229.  
  230.   def create_xml()
  231.     return super + %Q(
  232. <price="#{@price}"/>
  233.  
  234. <consumable="#{@consumable.to_s}"/>
  235.  
  236. <hp_recovery_rate="#{@hp_recovery_rate}"/>
  237. <hp_recovery="#{@hp_recovery}"/>
  238.  
  239. <mp_recovery_rate="#{@mp_recovery_rate}"/>
  240. <mp_recovery="#{@mp_recovery}"/>
  241.  
  242. <parameter_type="#{@parameter_type}"/>
  243. <parameter_points="#{@parameter_points}"/>
  244.     )
  245.   end
  246.  
  247.   def string_to_property( line )
  248.     super( line )
  249.     case line
  250.     when /<price="(\d+)"\/>/i
  251.       @price = $1.to_i
  252.     when /<consumable="(\w+)"\/>/i  
  253.       @consumable = ISS::DatabaseToXml.string_to_bool( $1 )
  254.     when /<hp_recovery_rate="(\d+)"\/>/i  
  255.       @hp_recovery_rate = $1.to_i
  256.     when /<hp_recovery="(\d+)"\/>/i  
  257.       @hp_recovery = $1.to_i
  258.     when /<mp_recovery_rate="(\d+)"\/>/i  
  259.       @mp_recovery_rate = $1.to_i
  260.     when /<mp_recovery="(\d+)"\/>/i    
  261.       @mp_recovery = $1.to_i
  262.     when /<parameter_type="(\d+)"\/>/i  
  263.       @parameter_type = $1.to_i
  264.     when /<parameter_points="(\d+)"\/>/i  
  265.       @parameter_points = $1.to_i
  266.     end
  267.   end
  268.  
  269. end
  270.  
  271. class RPG::Skill
  272.  
  273.   def create_xml()
  274.     return super + %Q(
  275. <mp_cost="#{@mp_cost}"/>
  276.  
  277. <hit="#{@hit}"/>
  278.  
  279. <message1="#{@message1}"/>
  280. <message2="#{@message2}"/>  
  281.     )
  282.   end
  283.  
  284.   def string_to_property( line )
  285.     super( line )
  286.     case line
  287.     when /<mp_cost="(\d+)"\/>/i
  288.       @mp_cost = $1.to_i
  289.     when /<hit="(\d+)"\/>/i  
  290.       @hit = $1.to_i
  291.     when /<message1="(.*)"\/>/i  
  292.       @message1 = $1
  293.     when /<message2="(.*)"\/>/i  
  294.       @message2 = $1
  295.     end
  296.   end
  297.  
  298. end
  299.  
  300. class RPG::Armor
  301.  
  302.   def create_xml()
  303.     return super + %Q(
  304. <kind="#{@kind}"/>
  305. <price="#{@price}"/>
  306.  
  307. <eva="#{@eva}"/>
  308.  
  309. <atk="#{@atk}"/>  
  310. <def="#{@def}"/>  
  311. <spi="#{@spi}"/>  
  312. <agi="#{@agi}"/>  
  313.  
  314. <prevent_critical="#{@prevent_critical.to_s}"/>
  315. <half_mp_cost="#{@half_mp_cost.to_s}"/>
  316. <double_exp_gain="#{@double_exp_gain.to_s}"/>
  317. <auto_hp_recover="#{@auto_hp_recover.to_s}"/>
  318.  
  319. <element_set>
  320. #{ISS::DatabaseToXml.array_to_string( @element_set )}
  321. </element_set>
  322.  
  323. <state_set>
  324. #{ISS::DatabaseToXml.array_to_string( @state_set )}
  325. </state_set>
  326.     )
  327.   end
  328.  
  329.   def set_from_string( string )
  330.     @__reading_element_set     = false
  331.     @__reading_state_set = false
  332.     super( string )
  333.   end
  334.  
  335.   def string_to_property( line )
  336.     super( line )
  337.     case line
  338.     when /<kind="(\d+)"\/>/i
  339.       @kind = $1.to_i
  340.     when /<price="(\d+)"\/>/i  
  341.       @price = $1.to_i
  342.     when /<eva="(\d+)"\/>/i
  343.       @eva = $1.to_i
  344.     when /<atk="(\d+)"\/>/i  
  345.       @atk = $1.to_i
  346.     when /<def="(\d+)"\/>/i
  347.       @def = $1.to_i  
  348.     when /<spi="(\d+)"\/>/i  
  349.       @spi = $1.to_i
  350.     when /<agi="(\d+)"\/>/i
  351.       @agi = $1.to_i  
  352.     when /<prevent_critical="(\w+)"\/>/i  
  353.       @prevent_critical = ISS::DatabaseToXml.string_to_bool( $1 )  
  354.     when /<half_mp_cost="(\w+)"\/>/i  
  355.       @half_mp_cost = ISS::DatabaseToXml.string_to_bool( $1 )
  356.     when /<double_exp_gain="(\w+)"\/>/i  
  357.       @double_exp_gain = ISS::DatabaseToXml.string_to_bool( $1 )
  358.     when /<auto_hp_recover="(\w+)"\/>/i  
  359.       @auto_hp_recover = ISS::DatabaseToXml.string_to_bool( $1 )  
  360.     when /<element_set>/i  
  361.       @__reading_element_set = true
  362.     when /<\/element_set>/i  
  363.       @__reading_element_set = false
  364.     when /<state_set>/i  
  365.       @__reading_element_set = true
  366.     when /<\/state_set>/i  
  367.       @__reading_element_set = false      
  368.     else
  369.       if @__reading_element_set
  370.         @element_set += ISS::DatabaseToXml.number_string_to_array( line )
  371.       end
  372.       if @__reading_state_set
  373.         @state_set += ISS::DatabaseToXml.number_string_to_array( line )
  374.       end
  375.     end
  376.   end
  377.  
  378. end
  379.  
  380. class RPG::Weapon
  381.  
  382.   def create_xml()
  383.     return super + %Q(
  384. <animation_id="#{@animation_id}"/>
  385. <price="#{@price}"/>
  386.  
  387. <hit="#{@hit}"/>
  388.  
  389. <atk="#{@atk}"/>  
  390. <def="#{@def}"/>  
  391. <spi="#{@spi}"/>  
  392. <agi="#{@agi}"/>  
  393.  
  394. <two_handed="#{@two_handed.to_s}"/>
  395. <fast_attack="#{@fast_attack.to_s}"/>
  396. <dual_attack="#{@dual_attack.to_s}"/>
  397. <critical_bonus="#{@critical_bonus.to_s}"/>
  398.  
  399. <element_set>
  400. #{ISS::DatabaseToXml.array_to_string( @element_set )}
  401. </element_set>
  402.  
  403. <state_set>
  404. #{ISS::DatabaseToXml.array_to_string( @state_set )}
  405. </state_set>
  406.     )
  407.   end
  408.  
  409.   def set_from_string( string )
  410.     @__reading_element_set = false
  411.     @__reading_state_set = false
  412.     super( string )
  413.   end
  414.  
  415.   def string_to_property( line )
  416.     super( line )
  417.     case line
  418.     when /<animation_id="(\d+)"\/>/i
  419.       @animation_id = $1.to_i
  420.     when /<price="(\d+)"\/>/i  
  421.       @price = $1.to_i
  422.     when /<hit="(\d+)"\/>/i
  423.       @hit = $1.to_i
  424.     when /<atk="(\d+)"\/>/i  
  425.       @atk = $1.to_i
  426.     when /<def="(\d+)"\/>/i
  427.       @def = $1.to_i  
  428.     when /<spi="(\d+)"\/>/i  
  429.       @spi = $1.to_i
  430.     when /<agi="(\d+)"\/>/i
  431.       @agi = $1.to_i  
  432.     when /<two_handed="(\w+)"\/>/i  
  433.       @two_handed = ISS::DatabaseToXml.string_to_bool( $1 )  
  434.     when /<fast_attack="(\w+)"\/>/i  
  435.       @fast_attack = ISS::DatabaseToXml.string_to_bool( $1 )
  436.     when /<dual_attack="(\w+)"\/>/i  
  437.       @dual_attack = ISS::DatabaseToXml.string_to_bool( $1 )
  438.     when /<critical_bonus="(\w+)"\/>/i  
  439.       @critical_bonus = ISS::DatabaseToXml.string_to_bool( $1 )  
  440.     when /<element_set>/i  
  441.       @__reading_element_set = true
  442.     when /<\/element_set>/i  
  443.       @__reading_element_set = false
  444.     when /<state_set>/i  
  445.       @__reading_element_set = true
  446.     when /<\/state_set>/i  
  447.       @__reading_element_set = false      
  448.     else
  449.       if @__reading_element_set
  450.         @element_set += ISS::DatabaseToXml.number_string_to_array( line )
  451.       end
  452.       if @__reading_state_set
  453.         @state_set += ISS::DatabaseToXml.number_string_to_array( line )
  454.       end
  455.     end
  456.   end
  457. end
  458.  
  459. class RPG::State
  460.  
  461.   def create_xml()
  462.     return %Q(
  463. <id="#{@id}"/>    
  464. <name="#{@name}"/>
  465. <icon_index="#{@icon_index}"/>
  466.  
  467. <restriction="#{@restriction}"/>
  468. <priority="#{@priority}"/>
  469.  
  470. <atk_rate="#{@atk_rate}"/>
  471. <def_rate="#{@def_rate}"/>
  472. <spi_rate="#{@spi_rate}"/>
  473. <agi_rate="#{@agi_rate}"/>
  474.  
  475. <nonresistance="#{@nonresistance.to_s}"/>
  476. <offset_by_opposite="#{@offset_by_opposite.to_s}"/>
  477. <slip_damage="#{@slip_damage.to_s}"/>
  478. <reduce_hit_ratio="#{@reduce_hit_ratio.to_s}"/>
  479.  
  480. <battle_only="#{@battle_only.to_s}"/>
  481. <release_by_damage="#{@release_by_damage.to_s}"/>
  482.  
  483. <hold_turn="#{@hold_turn}"/>
  484. <auto_release_prob="#{@auto_release_prob}"/>
  485.  
  486. <message1="#{@message1}"/>
  487. <message2="#{@message2}"/>
  488. <message3="#{@message3}"/>
  489. <message4="#{@message4}"/>
  490.  
  491. <element_set>
  492. #{ISS::DatabaseToXml.array_to_string( @element_set )}
  493. </element_set>
  494.  
  495. <state_set>
  496. #{ISS::DatabaseToXml.array_to_string( @state_set )}
  497. </state_set>
  498.  
  499. <note>
  500. #{@note}
  501. </note>
  502.     )
  503.   end
  504.  
  505.   def set_from_string( instring )
  506.     @__reading_note_lines = false
  507.     @__reading_element_set = false
  508.     @__reading_state_set   = false
  509.     ISS::DatabaseToXml.sting_each_line { |line|
  510.       string_to_property( line )  
  511.     }
  512.   end
  513.  
  514.   def string_to_property( line )
  515.     case line
  516.     when /<id="(\d+)"\/>/i
  517.       @id = $1.to_i
  518.     when /<name="(.*)"\/>/i  
  519.       @name = $1
  520.     when /<icon_index="(\d+)"\/>/i    
  521.       @icon_index = $1.to_i
  522.     when /<restriction="(\d+)"\/>/i
  523.       @restriction = $1.to_i
  524.     when /<priority="(\d+)"\/>/i
  525.       @priority = $1.to_i
  526.     when /<atk_rate="(\d+)"\/>/i
  527.       @atk_rate = $1.to_i
  528.     when /<def_rate="(\d+)"\/>/i
  529.       @def_rate = $1.to_i
  530.     when /<spi_rate="(\d+)"\/>/i
  531.       @spi_rate = $1.to_i  
  532.     when /<agi_rate="(\d+)"\/>/i
  533.       @agi_rate = $1.to_i  
  534.     when /<nonresistance="(\w+)"\/>/i  
  535.       @nonresistance = ISS::DatabaseToXml.string_to_bool( $1 )  
  536.     when /<offset_by_opposite="(\w+)"\/>/i  
  537.       @offset_by_opposite = ISS::DatabaseToXml.string_to_bool( $1 )
  538.     when /<slip_damage="(\w+)"\/>/i  
  539.       @slip_damage = ISS::DatabaseToXml.string_to_bool( $1 )
  540.     when /<reduce_hit_ratio="(\w+)"\/>/i  
  541.       @reduce_hit_ratio = ISS::DatabaseToXml.string_to_bool( $1 )  
  542.     when /<battle_only="(\w+)"\/>/i  
  543.       @battle_only = ISS::DatabaseToXml.string_to_bool( $1 )  
  544.     when /<release_by_damage="(\w+)"\/>/i  
  545.       @release_by_damage = ISS::DatabaseToXml.string_to_bool( $1 )  
  546.     when /<hold_turn="(\d+)"\/>/i
  547.       @hold_turn = $1.to_i  
  548.     when /<auto_release_prob="(\d+)"\/>/i
  549.       @auto_release_prob = $1.to_i  
  550.     when /<message1="(.*)"\/>/i  
  551.       @message1 = $1
  552.     when /<message2="(.*)"\/>/i  
  553.       @message2 = $1
  554.     when /<message3="(.*)"\/>/i  
  555.       @message3 = $1
  556.     when /<message4="(.*)"\/>/i  
  557.       @message4 = $1  
  558.     when /<note>/i
  559.       @__reading_note_lines = true
  560.     when /<\/note>/i
  561.       @__reading_note_lines = false
  562.     when /<element_set>/i  
  563.       @__reading_element_set = true
  564.     when /<\/element_set>/i  
  565.       @__reading_element_set = false
  566.     when /<state_set>/i  
  567.       @__reading_element_set = true
  568.     when /<\/state_set>/i  
  569.       @__reading_element_set = false      
  570.     else  
  571.       if @__reading_note_lines
  572.         self.note += line + "\n"
  573.       end  
  574.       if @__reading_element_set
  575.         @element_set += ISS::DatabaseToXml.number_string_to_array( line )
  576.       end
  577.       if @__reading_state_set
  578.         @state_set += ISS::DatabaseToXml.number_string_to_array( line )
  579.       end
  580.     end
  581.   end
  582.  
  583. end
  584.  
  585. class RPG::Class
  586.  
  587.   def create_xml()
  588.     return %Q(
  589. <id="#{@id}"/>    
  590. <name="#{@name}"/>    
  591. <position="#{@position}"/>
  592.  
  593. <weapon_set>
  594. #{ISS::DatabaseToXml.array_to_string( @weapon_set )}
  595. </weapon_set>
  596.  
  597. <armor_set>
  598. #{ISS::DatabaseToXml.array_to_string( @armor_set )}
  599. </armor_set>
  600.  
  601. <element_ranks>
  602. #{ISS::DatabaseToXml.rank_table_to_string( @element_ranks )}
  603. </element_ranks>
  604.  
  605. <state_ranks>
  606. #{ISS::DatabaseToXml.rank_table_to_string( @state_ranks )}
  607. </state_ranks>
  608.  
  609. <learnings>
  610. #{ISS::DatabaseToXml.learnings_array_to_string( @learnings )}
  611. </learnings>
  612.  
  613. <skill_name_valid="#{@skill_name_valid.to_s}"/>
  614. <skill_name="#{@skill_name}"/>
  615.     )
  616.   end
  617.  
  618.   class Learning
  619.    
  620.     def create_xml()
  621.       return %Q(
  622. <learning>      
  623.   <level="#{@level}"/>    
  624.   <skill_id="#{@skill_id}"/>          
  625. </learning>
  626.       )
  627.     end  
  628.    
  629.   end  
  630.  
  631.   def set_from_string( instring )
  632.     @__reading_note_lines    = false
  633.     @__reading_weapon_set    = false
  634.     @__reading_armor_set     = false
  635.     @__reading_element_ranks = false
  636.     @__reading_state_ranks   = false
  637.     @__reading_learnings     = false
  638.     @__lastlearning = nil
  639.     ISS::DatabaseToXml.sting_each_line { |line|
  640.       string_to_property( line )  
  641.     }
  642.   end
  643.  
  644.   def string_to_property( line )
  645.     case line
  646.     when /<id="(\d+)"\/>/i
  647.       @id = $1.to_i
  648.     when /<name="(.*)"\/>/i  
  649.       @name = $1
  650.     when /<position="(\d+)"\/>/i
  651.       @position = $1.to_i  
  652.     when /<weapon_set>/i  
  653.       @__reading_weapon_set = true
  654.     when /<\/weapon_set>/i  
  655.       @__reading_weapon_set = false
  656.     when /<armor_set>/i  
  657.       @__reading_armor_set  = true
  658.     when /<\/armor_set>/i  
  659.       @__reading_armor_set  = false
  660.     when /<element_ranks>/i
  661.       @__reading_element_ranks = true
  662.     when /<\/element_ranks>/i  
  663.       @__reading_element_ranks = false
  664.     when /<state_ranks>/i  
  665.       @__reading_state_ranks = true
  666.     when /<\/state_ranks>/i  
  667.       @__reading_state_ranks = false
  668.     when /<learnings>/i  
  669.       @__reading_learnings  = true
  670.     when /<\/learnings>/i  
  671.       @__reading_learnings  = false
  672.     else
  673.       if @__reading_weapon_set
  674.         @weapon_set += ISS::DatabaseToXml.number_string_to_array( line )
  675.       end  
  676.       if @__reading_armor_set  
  677.         @armor_set += ISS::DatabaseToXml.number_string_to_array( line )
  678.       end
  679.       if @__reading_element_ranks
  680.         case line
  681.         when /<(\d+)="(\d+)"\/>/i
  682.           @element_ranks[$1.to_i] = $2.to_i
  683.         end  
  684.       end
  685.       if @__reading_state_ranks
  686.         case line
  687.         when /<(\d+)="(\d+)"\/>/i
  688.           @state_ranks[$1.to_i] = $2.to_i
  689.         end
  690.       end  
  691.       if @__reading_learnings
  692.         case line
  693.         when /<learning>/i
  694.           @__lastlearning = Learning.new()
  695.         when /<\/learning>/i  
  696.           @learnings << @__lastlearning unless @__lastlearning.nil?()
  697.           @__lastlearning = nil
  698.         when /<level="(\d+)"\/>/i  
  699.           next if @__lastlearning.nil?()
  700.           @__lastlearning.level = $1.to_i
  701.         when /<skill_id="(\d+)"\/>/i    
  702.           next if @__lastlearning.nil?()
  703.           @__lastlearning.skill_id = $1.to_i
  704.         end  
  705.       end  
  706.     end  
  707.   end
  708.    
  709. end
  710.  
  711. ISS::DatabaseToXml.dump_database
  712. #=*==========================================================================*=#
  713. # ** END OF FILE
  714. #=*==========================================================================*=#
Advertisement
Add Comment
Please, Sign In to add comment