Added class Data::Ability and made all code use symbols for abilities instead of numbers. Also added class Data::Item but it's unused.

This commit is contained in:
Maruno17
2020-11-01 20:10:28 +00:00
parent c4e69d0a2e
commit 213347b938
34 changed files with 590 additions and 345 deletions

View File

@@ -311,6 +311,18 @@ module Compiler
end
return enumer.const_get(ret.to_sym)
elsif enumer.is_a?(Symbol) || enumer.is_a?(String)
if enumer == :Ability
enumer = Data.const_get(enumer.to_sym)
begin
if ret == "" || !enumer.exists?(ret.to_sym)
raise _INTL("Undefined value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport)
end
rescue NameError
raise _INTL("Incorrect value {1} in {2}\r\n{3}", ret, enumer.name, FileLineData.linereport)
end
return ret.to_sym
end
enumer = Object.const_get(enumer.to_sym)
begin
if ret=="" || !enumer.const_defined?(ret)
@@ -341,6 +353,12 @@ module Compiler
return nil if ret=="" || !(enumer.const_defined?(ret) rescue false)
return enumer.const_get(ret.to_sym)
elsif enumer.is_a?(Symbol) || enumer.is_a?(String)
if enumer == :Ability
enumer = Data.const_get(enumer.to_sym)
return nil if ret == "" || !enumer.exists?(ret.to_sym)
return ret.to_sym
end
enumer = Object.const_get(enumer.to_sym)
return nil if ret=="" || !(enumer.const_defined?(ret) rescue false)
return enumer.const_get(ret.to_sym)
@@ -607,9 +625,9 @@ module Compiler
yield(_INTL("Compiling berry plant data"))
compile_berry_plants # Depends on PBItems
yield(_INTL("Compiling Pokémon data"))
compile_pokemon # Depends on PBMoves, PBItems, PBTypes, PBAbilities
compile_pokemon # Depends on PBMoves, PBItems, PBTypes, Ability
yield(_INTL("Compiling Pokémon forms data"))
compile_pokemon_forms # Depends on PBSpecies, PBMoves, PBItems, PBTypes, PBAbilities
compile_pokemon_forms # Depends on PBSpecies, PBMoves, PBItems, PBTypes, Ability
yield(_INTL("Compiling machine data"))
compile_move_compatibilities # Depends on PBSpecies, PBMoves
yield(_INTL("Compiling Trainer type data"))

View File

@@ -326,34 +326,34 @@ module Compiler
# Compile abilities
#=============================================================================
def compile_abilities
records = []
movenames = []
movedescs = []
maxValue = 0
pbCompilerEachPreppedLine("PBS/abilities.txt") { |line,lineno|
record = pbGetCsvRecord(line,lineno,[0,"vnss"])
if movenames[record[0]]
raise _INTL("Ability ID number '{1}' is used twice.\r\n{2}",record[0],FileLineData.linereport)
ability_names = []
ability_descriptions = []
pbCompilerEachPreppedLine("PBS/abilities.txt") { |line, line_no|
line = pbGetCsvRecord(line, line_no, [0, "vnss"])
ability_number = line[0]
ability_symbol = line[1].to_sym
if Data::Ability::DATA[ability_number]
raise _INTL("Ability ID number '{1}' is used twice.\r\n{2}", ability_number, FileLineData.linereport)
elsif Data::Ability::DATA[ability_symbol]
raise _INTL("Ability ID '{1}' is used twice.\r\n{2}", ability_symbol, FileLineData.linereport)
end
movenames[record[0]] = record[2]
movedescs[record[0]] = record[3]
maxValue = [maxValue,record[0]].max
records.push(record)
# Construct ability hash
ability_hash = {
:id => ability_symbol,
:id_number => ability_number,
:name => line[2],
:description => line[3]
}
# Add ability's data to records
Data::Ability::DATA[ability_number] = Data::Ability::DATA[ability_symbol] = Data::Ability.new(ability_hash)
ability_names[ability_number] = ability_hash[:name]
ability_descriptions[ability_number] = ability_hash[:description]
}
MessageTypes.setMessages(MessageTypes::Abilities,movenames)
MessageTypes.setMessages(MessageTypes::AbilityDescs,movedescs)
code = "class PBAbilities\r\n"
for rec in records
code += "#{rec[1]}=#{rec[0]}\r\n"
end
code += "def self.getName(id)\r\n"
code += "id=getID(PBAbilities,id)\r\n"
code += "return pbGetMessage(MessageTypes::Abilities,id); end\r\n"
code += "def self.getCount; return #{records.length}; end\r\n"
code += "def self.maxValue; return #{maxValue}; end\r\n"
code += "end\r\n"
eval(code, TOPLEVEL_BINDING)
pbAddScript(code,"PBAbilities")
# Save all data
Data::Ability.save
MessageTypes.setMessages(MessageTypes::Abilities, ability_names)
MessageTypes.setMessages(MessageTypes::AbilityDescs, ability_descriptions)
Graphics.update
end
#=============================================================================