Class: Termfront::TitleScreen
- Inherits:
-
Object
- Object
- Termfront::TitleScreen
- Defined in:
- lib/termfront/title_screen.rb
Constant Summary collapse
- DEMO_WAYPOINTS =
[ [2.5, 5.0], [7.0, 2.5], [11.0, 3.5], [13.0, 5.0], [13.0, 8.0], [10.0, 8.5], [5.0, 8.5], [2.5, 5.0] ].freeze
- TITLE_TEXT =
"T E R M F R O N T"- SUB_TEXT =
"Terminal FPS"- MENU_ITEMS =
["[P] PvP", "[F] Wavesfight", "[C] Campaign", "[S] Training", "[Q] Quit"].freeze
Instance Method Summary collapse
-
#initialize(stdout) ⇒ TitleScreen
constructor
A new instance of TitleScreen.
- #show ⇒ Object
Constructor Details
#initialize(stdout) ⇒ TitleScreen
Returns a new instance of TitleScreen.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/termfront/title_screen.rb', line 14 def initialize(stdout) @stdout = stdout @title_spin = 0.0 @demo_wp_idx = 0 @demo_wp_t = 0.0 @demo_fire = 0 mission_class = Mission::Base.campaign.first if mission_class m = mission_class.new @demo_map = m.map_data.map { |row| row.is_a?(Array) ? row : row.chars }.freeze @demo_map_h = @demo_map.size @demo_map_w = @demo_map[0].size @demo_enemies = m.enemy_defs.freeze end @static_lines_cols = 0 @static_title_line = nil @static_sub_line = nil @static_menu_lines = nil end |
Instance Method Details
#show ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/termfront/title_screen.rb', line 36 def show @title_spin = 0.0 @demo_wp_idx = 0 @demo_wp_t = 0.0 @demo_fire = 0 TerminalOutput.write_all(@stdout, TerminalOutput.begin_frame(home: true, clear: true) + TerminalOutput.end_frame) STDIN.raw do |stdin| last_render = clock - Config::RENDER_DT loop do now = clock @title_spin += 0.015 if now - last_render >= Config::RENDER_DT render last_render = now end while IO.select([stdin], nil, nil, 0) begin ch = stdin.read_nonblock(64) ch.each_byte do |b| case b when 102, 70 then return :wavesfight when 115, 83 then return :singleplayer when 99, 67 then return :campaign when 112, 80 then return :pvp when 113, 81, 27 then return :quit end end rescue IO::WaitReadable break end end spent = clock - now remain = Config::FRAME_DT - spent sleep(remain) if remain > 0 end end end |