render_differential
の続きから。dialog_range
でdialogのx,y位置をrangeで取る。y_range
は1...16
、x_range
は15...33
という感じ。 y_range.each do |row|
で dialog_rows
もといnew_lines
に詰め込む。 row < 0
か row >= screen_height
ならスキップ。 そうでなければ new_lines[row]
がなければ初期化し、new_lines[row]
に x_range
の始端、dialog
の幅、dialog.contents[row - y_range.begin]
でダイアログの中身を詰め込む。y_rangeからy_rangeの始端を引いたindexを使う。最終的にnew_linesはこんな感じになる
どこからcontensに詰め込んでいるのか見たい