じ☆ve冰风 发表于 2024-4-12 16:45:14

【VA】全局开关和变量

#==============================================================================
# 〓 全局开关和变量 〓      By: 芯☆淡茹水
#==============================================================================
# 全局开关或变量,在取名时在名字前面加上 $ 符号
#==============================================================================
module XR_GlobalData
#--------------------------------------------------------------------------
File_name = "GlobalData"
#--------------------------------------------------------------------------
def self.filename
    return File_name + ".rxdata2"
end
#--------------------------------------------------------------------------
def self.make_empty_data
    return {:switches=>{}, :variables=>{}}
end
#--------------------------------------------------------------------------
def self.on_change(type, id, value)
    @data = @data || self.make_empty_data
    if @data
      @data = value
      file = File.open(self.filename, "wb")
      Marshal.dump(@data, file)
      file.close
    end
end
#--------------------------------------------------------------------------
def self.load
    @data = self.make_empty_data
    if FileTest.exist?(self.filename)
      file = File.open(self.filename, "rb")
      @data = Marshal.load(file)
      file.close
    end
    $game_switches.synchro(@data[:switches])
    $game_variables.synchro(@data[:variables])
end
end
#==============================================================================
class Game_Switches
#--------------------------------------------------------------------------
def is_global_switch?(switch_id)
    return false if !switch_id
    name = $data_system.switches
    return !!name && !!name.match(/^\$/)
end
#--------------------------------------------------------------------------
def synchro(hash)
    hash.keys.each do |id|
      @data = hash
      on_change
    end
end
#--------------------------------------------------------------------------
alias :xr_gd_change_switch :[]=
def []=(switch_id, value)
    tmp = self
    xr_gd_change_switch(switch_id, value)
    if is_global_switch?(switch_id) && tmp != self
      XR_GlobalData.on_change(:switches, switch_id, self)
    end
end
end
#==============================================================================
class Game_Variables
#--------------------------------------------------------------------------
def is_global_variable?(variable_id)
    return false if !variable_id
    name = $data_system.variables
    return !!name && !!name.match(/^\$/)
end
#--------------------------------------------------------------------------
def synchro(hash)
    hash.keys.each do |id|
      @data = hash
      on_change
    end
end
#--------------------------------------------------------------------------
alias :xr_gd_change_variable :[]=
def []=(variable_id, value)
    tmp = self
    xr_gd_change_variable(variable_id, value)
    if is_global_variable?(variable_id) && tmp != self
      XR_GlobalData.on_change(:variables, variable_id, self)
    end
end
end
#==============================================================================
class << DataManager
#--------------------------------------------------------------------------
alias xr_gd_create_game_objects create_game_objects
def create_game_objects
    xr_gd_create_game_objects
    XR_GlobalData.load
end
#--------------------------------------------------------------------------
alias xr_gd_load_game_without_rescue load_game_without_rescue
def load_game_without_rescue(index)
    result = xr_gd_load_game_without_rescue(index)
    XR_GlobalData.load
    return result
end
end
#==============================================================================
# end
#==============================================================================
页: [1]
查看完整版本: 【VA】全局开关和变量