mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 13:15:01 +00:00
96 lines
3.6 KiB
Ruby
96 lines
3.6 KiB
Ruby
module GameData
|
|
class PlayerMetadata
|
|
attr_reader :id
|
|
attr_reader :trainer_type
|
|
attr_reader :walk_charset
|
|
attr_reader :home
|
|
attr_reader :pbs_file_suffix
|
|
|
|
DATA = {}
|
|
DATA_FILENAME = "player_metadata.dat"
|
|
|
|
SCHEMA = {
|
|
"SectionName" => [:id, "u"],
|
|
"TrainerType" => [:trainer_type, "e", :TrainerType],
|
|
"WalkCharset" => [:walk_charset, "s"],
|
|
"RunCharset" => [:run_charset, "s"],
|
|
"CycleCharset" => [:cycle_charset, "s"],
|
|
"SurfCharset" => [:surf_charset, "s"],
|
|
"DiveCharset" => [:dive_charset, "s"],
|
|
"FishCharset" => [:fish_charset, "s"],
|
|
"SurfFishCharset" => [:surf_fish_charset, "s"],
|
|
"Home" => [:home, "vuuu"]
|
|
}
|
|
|
|
extend ClassMethodsIDNumbers
|
|
include InstanceMethods
|
|
|
|
def self.editor_properties
|
|
return [
|
|
["ID", ReadOnlyProperty, _INTL("ID number of this player.")],
|
|
["TrainerType", TrainerTypeProperty, _INTL("Trainer type of this player.")],
|
|
["WalkCharset", CharacterProperty, _INTL("Charset used while the player is still or walking.")],
|
|
["RunCharset", CharacterProperty, _INTL("Charset used while the player is running. Uses WalkCharset if undefined.")],
|
|
["CycleCharset", CharacterProperty, _INTL("Charset used while the player is cycling. Uses RunCharset if undefined.")],
|
|
["SurfCharset", CharacterProperty, _INTL("Charset used while the player is surfing. Uses CycleCharset if undefined.")],
|
|
["DiveCharset", CharacterProperty, _INTL("Charset used while the player is diving. Uses SurfCharset if undefined.")],
|
|
["FishCharset", CharacterProperty, _INTL("Charset used while the player is fishing. Uses WalkCharset if undefined.")],
|
|
["SurfFishCharset", CharacterProperty, _INTL("Charset used while the player is fishing while surfing. Uses FishCharset if undefined.")],
|
|
["Home", MapCoordsFacingProperty, _INTL("Map ID and X/Y coordinates of where the player goes after a loss if no Pokémon Center was visited.")]
|
|
]
|
|
end
|
|
|
|
# @param player_id [Integer]
|
|
# @return [self, nil]
|
|
def self.get(player_id = 1)
|
|
validate player_id => Integer
|
|
return self::DATA[player_id] if self::DATA.has_key?(player_id)
|
|
return self::DATA[1]
|
|
end
|
|
|
|
def initialize(hash)
|
|
@id = hash[:id]
|
|
@trainer_type = hash[:trainer_type]
|
|
@walk_charset = hash[:walk_charset]
|
|
@run_charset = hash[:run_charset]
|
|
@cycle_charset = hash[:cycle_charset]
|
|
@surf_charset = hash[:surf_charset]
|
|
@dive_charset = hash[:dive_charset]
|
|
@fish_charset = hash[:fish_charset]
|
|
@surf_fish_charset = hash[:surf_fish_charset]
|
|
@home = hash[:home]
|
|
@pbs_file_suffix = hash[:pbs_file_suffix] || ""
|
|
end
|
|
|
|
def run_charset
|
|
return @run_charset || @walk_charset
|
|
end
|
|
|
|
def cycle_charset
|
|
return @cycle_charset || run_charset
|
|
end
|
|
|
|
def surf_charset
|
|
return @surf_charset || cycle_charset
|
|
end
|
|
|
|
def dive_charset
|
|
return @dive_charset || surf_charset
|
|
end
|
|
|
|
def fish_charset
|
|
return @fish_charset || @walk_charset
|
|
end
|
|
|
|
def surf_fish_charset
|
|
return @surf_fish_charset || fish_charset
|
|
end
|
|
|
|
alias __orig__get_property_for_PBS get_property_for_PBS unless method_defined?(:__orig__get_property_for_PBS)
|
|
def get_property_for_PBS(key)
|
|
key = "SectionName" if key == "ID"
|
|
return __orig__get_property_for_PBS(key)
|
|
end
|
|
end
|
|
end
|