Module: RGSSAD

Defined in:
lib/rgss3/rgss3a.rb

Defined Under Namespace

Classes: RGSSAD_File

Constant Summary collapse

ENC_FILE =
Dir["Game.rgss{ad,2a,3a}"][0] || ""
@@files =
[]
@@xor =
0xDEADCAFE
@@rgss3a_xor =
0
@@orig_xor =
0

Class Method Summary collapse

Class Method Details

.add_file(file_contents, filename) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/rgss3/rgss3a.rb', line 41

def self.add_file(file_contents, filename)
  file = RGSSAD_File.new
  file.filename = filename
  file.filename_size = filename.size
  file.file = file_contents
  file.file_size = file_contents.size
  @@files.delete_if {|f| f.filename == file.filename}
  @@files << file
  @@files.sort! {|a,b| a.filename <=> b.filename}
end

.decryptObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rgss3/rgss3a.rb', line 12

def self.decrypt
  return unless File.exists?(ENC_FILE)
  @@files.clear
  rgssad = ''
  File.open(ENC_FILE, 'rb') {|file|
    file.read(8)
    @@orig_xor = file.read(4).unpack('L*') * 9 + 3 if ENC_FILE == "Game.rgss3a"
    rgssad = file.read
  }
  rgssad = self.parse_rgssad(rgssad, true)
  offset = 0
  while rgssad[offset] != nil
    file = RGSSAD_File.new
    file.filename_size = rgssad[offset, 4].unpack('L')[0]
    offset += 4
    file.filename = rgssad[offset, file.filename_size]
    offset += file.filename_size
    file.file_size = rgssad[offset, 4].unpack('L')[0]
    offset += 4
    file.file = rgssad[offset, file.file_size]
    @@files << file
    offset += file.file_size
  end
end

.encryptObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/rgss3/rgss3a.rb', line 52

def self.encrypt
  return if @@files.empty? && !File.exists?(ENC_FILE)
  rgssad = ''
  @@files.each do |file|
    rgssad << [file.filename_size].pack('L')
    rgssad << file.filename
    rgssad << [file.file_size].pack('L')
    rgssad << file.file
  end
  File.open(ENC_FILE, 'wb') do |file|
    file.print("RGSSAD\0\1")
    file.print(self.parse_rgssad(rgssad, false))
  end
end

.filesObject



37
38
39
# File 'lib/rgss3/rgss3a.rb', line 37

def self.files
  @@files
end