Advertisement
Guest User

mireiyu_novel_page.rb

a guest
Dec 22nd, 2014
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.45 KB | None | 0 0
  1. #! ruby -Ks
  2.  
  3. #読み込み
  4. require 'dxruby'
  5.  
  6. ##汎用pageモジュール。##
  7. ##元のソース=>汎用sceneモジュールscene.rb(パブリックドメイン)
  8.  
  9. module Page
  10.  
  11.  #単なる定義
  12.  class Exit
  13.  end
  14.  
  15.  #ページ流しとフレームカウンター設定
  16.  class Base
  17.   attr_accessor :Next_page
  18.   attr_reader :frame_counter
  19.  
  20. #デフォルト設定
  21.   def initialize
  22.     @Next_page = nil
  23.     @frame_counter = 0
  24.     init
  25.   end
  26.  
  27. #フレームは1以上で始める
  28.   def __update
  29.     @frame_counter += 1
  30.     update
  31.   end
  32.   private :__update
  33.  
  34.   def __run
  35.     run
  36.   end
  37.   private :__run
  38.  
  39. #以下4つは未設定
  40.   def init
  41.   end
  42.  
  43.   def __exit
  44.     exit
  45.   end
  46.   private :__exit
  47.  
  48.   def update
  49.   end
  50.  
  51.   def run
  52.   end
  53.  
  54.   def render
  55.   end
  56. end
  57.  
  58. #fps60で起動
  59. def self.main_loop(page_class, fps = 60, step = 1)
  60.   page = page_class.new
  61.   default_step = step
  62.  
  63.   Window.caption="さんぷる"
  64.   Window.load_icon('sample_pass/icon_sample1.ico')
  65.   close_flag = false
  66.  
  67. ##以下ループ処理
  68.   Window.create
  69.   loop do
  70.  
  71. #強制終了
  72.    break if $end == true
  73.  
  74. #×ウィンドウを閉じさせない処理
  75.    close_flag = true if Input.update
  76.    if close_flag
  77.     puts 'ウィンドウを閉じるにはEscボタンを押します。'
  78.     close_flag = false
  79.    end
  80.  
  81. #ポインタ定義はフレームに直結するここでもう行う。
  82.    $xpoint = Input.mousePosX
  83.    $ypoint = Input.mousePosY
  84.  
  85. #フルスクリーン対応
  86.    if Input.keyPush?(K_F5)
  87.    Window.windowed = false
  88.    end
  89.  
  90.    if Input.keyPush?(K_F4)
  91.    Window.windowed = true
  92.    end
  93.  
  94. #fpsアップダウン
  95.    if Input.keyPush?(K_PGDN)
  96.      step += 1
  97.      Window.fps = fps * default_step / step
  98.      f = fps * default_step / step
  99.      print f,"fps"
  100.    end
  101.  
  102.    if Input.keyPush?(K_PGUP) and step > default_step
  103.      step -= 1
  104.      Window.fps = fps * default_step / step
  105.      f = fps * default_step / step
  106.      print f,"fps"
  107.    end
  108.  
  109. #メインの定常処理はrun->render->update->exitとなる。
  110.    step.times do
  111.      break if page.Next_page
  112.      page.__send__ :__run
  113.    end
  114.  
  115.    page.render
  116.  
  117.    step.times do
  118.      break if page.Next_page
  119.      page.__send__ :__update
  120.      page.__send__ :__exit
  121.    end
  122.  
  123.    if page.Next_page
  124.      page.exit
  125.      break if Exit == page.Next_page
  126.      page = page.Next_page.new
  127.    end
  128.  
  129. #自力でループを回している時は必要
  130.    Window.sync
  131.    Window.update
  132.   end
  133.  end
  134. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement