RGSS2を知る(27)

マーシャル関連。とりあえずColorを。

open("c:\\test.txt","w") do |fh|
  fh.write(Marshal.dump(Color.new(1,2,3,4)))
end
04 08 75 3A 0D 0A 43 6F 6C 6F 72 25
00 00 00 00 00 00 F0 3F
00 00 00 00 00 00 00 40
00 00 00 00 00 00 08 40
00 00 00 00 00 00 10 40

色のデータ1つにつき8Byte。これはdouble型をそのまま吐き出していると思われる。
_loadメソッドの引数の文字列をdouble型を並べた構造体にmemcpyするように作ってみた。

require 'freergss'

open("c:\\test.txt") do |fh|
  p Marshal.load(fh.read) # => (1.000000, 2.000000, 3.000000, 4.000000)
end

OK。
って、テキストで書いて読んでるからうまくいってるけど0D0Aとかおるやんけw
ほんとはバイナリで書いて読まないとあかん。