rufio 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rufio/terminal_ui.rb +34 -10
- data/lib/rufio/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6e51cc4afc1f8340d7340288d7e20677fcd174d6dd32029714516827375d1d61
|
|
4
|
+
data.tar.gz: 3d777468ecee811d01cd303891d6c50aaae1b38e298e8ec2b48f818b6b24ad8c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4f9b4801d4d3f7bb0406e6f688d5e4de20ccf24d936924f714472d9841284804ebddc7d211a5c0b72cb72df09ea607ea47bd9bc02b0178550c86d9af791e8dfa
|
|
7
|
+
data.tar.gz: ffdb0429b787320d57fe28dd68bc67b7278dccf94723d30e52c619e51d60e954d3ed7fd4a1ca8eeaa1de0df914701784f08a74edafaa86a831bc928e3fad93ba
|
data/lib/rufio/terminal_ui.rb
CHANGED
|
@@ -192,10 +192,12 @@ module Rufio
|
|
|
192
192
|
# getch を使用し、受信した各バイトをキューに積む。
|
|
193
193
|
if windows?
|
|
194
194
|
@input_queue = Queue.new
|
|
195
|
+
@stop_input_thread = false
|
|
195
196
|
@input_thread = Thread.new do
|
|
196
197
|
loop do
|
|
198
|
+
break if @stop_input_thread
|
|
197
199
|
ch = STDIN.getch(min: 1)
|
|
198
|
-
break if ch.nil?
|
|
200
|
+
break if ch.nil? || @stop_input_thread
|
|
199
201
|
ch.bytes.each { |b| @input_queue << b }
|
|
200
202
|
end
|
|
201
203
|
rescue
|
|
@@ -291,11 +293,22 @@ module Rufio
|
|
|
291
293
|
end
|
|
292
294
|
|
|
293
295
|
def cleanup_terminal
|
|
294
|
-
#
|
|
296
|
+
# マウスレポートを先に無効化して新しいイベントの流入を止める
|
|
297
|
+
if windows?
|
|
298
|
+
print "\e[?1000l\e[?1006l"
|
|
299
|
+
else
|
|
300
|
+
print "\e[?1003l\e[?1006l"
|
|
301
|
+
end
|
|
302
|
+
STDOUT.flush
|
|
303
|
+
|
|
304
|
+
# Windows 入力スレッドを停止
|
|
295
305
|
if windows? && @input_thread
|
|
306
|
+
@stop_input_thread = true
|
|
296
307
|
@input_thread.kill rescue nil
|
|
297
308
|
@input_thread.join(0.5) rescue nil
|
|
298
309
|
@input_thread = nil
|
|
310
|
+
# コンソール入力バッファをフラッシュして残留イベントによる不正出力を防ぐ
|
|
311
|
+
windows_flush_console_input_buffer
|
|
299
312
|
end
|
|
300
313
|
|
|
301
314
|
# rawモードを解除
|
|
@@ -303,20 +316,31 @@ module Rufio
|
|
|
303
316
|
STDIN.cooked!
|
|
304
317
|
end
|
|
305
318
|
|
|
306
|
-
# マウスレポートを無効化(setup_terminal と対称)
|
|
307
|
-
if windows?
|
|
308
|
-
print "\e[?1000l\e[?1006l"
|
|
309
|
-
else
|
|
310
|
-
print "\e[?1003l\e[?1006l"
|
|
311
|
-
end
|
|
312
|
-
STDOUT.flush
|
|
313
|
-
|
|
314
319
|
print "\e[?25h" # cursor visible
|
|
315
320
|
print "\e[?1049l" # restore normal screen buffer
|
|
316
321
|
STDOUT.flush
|
|
317
322
|
puts ConfigLoader.message('app.terminated')
|
|
318
323
|
end
|
|
319
324
|
|
|
325
|
+
def windows_flush_console_input_buffer
|
|
326
|
+
require 'fiddle'
|
|
327
|
+
kernel32 = Fiddle.dlopen('kernel32')
|
|
328
|
+
get_std_handle = Fiddle::Function.new(
|
|
329
|
+
kernel32['GetStdHandle'],
|
|
330
|
+
[Fiddle::TYPE_LONG],
|
|
331
|
+
Fiddle::TYPE_VOIDP
|
|
332
|
+
)
|
|
333
|
+
flush = Fiddle::Function.new(
|
|
334
|
+
kernel32['FlushConsoleInputBuffer'],
|
|
335
|
+
[Fiddle::TYPE_VOIDP],
|
|
336
|
+
Fiddle::TYPE_INT
|
|
337
|
+
)
|
|
338
|
+
handle = get_std_handle.call(-10) # STD_INPUT_HANDLE = -10
|
|
339
|
+
flush.call(handle)
|
|
340
|
+
rescue
|
|
341
|
+
# Windows API が使えない場合は無視して続行
|
|
342
|
+
end
|
|
343
|
+
|
|
320
344
|
# ゲームループパターンのmain_loop(CPU最適化版:フレームスキップ対応)
|
|
321
345
|
# UPDATE → DRAW → RENDER → SLEEP のサイクル
|
|
322
346
|
# 変更がない場合は描画をスキップしてCPU使用率を削減
|
data/lib/rufio/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rufio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- masisz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: io-console
|