ゲームの入力を管理したい方法は、TChan をポーリングし、eTick が発生したときにイベントを作成することです。しかし、私が試している方法は機能しますか?
data UAC = UAC (AID,PlayerCommand) deriving Show
makeNetworkDescription :: forall t . Frameworks t =>
TChan UAC ->
AddHandler () ->
TChan GameState ->
Moment t ()
makeNetworkDescription commandChannel tickHandler gsChannel = do
eTick <- fromAddHandler tickHandler
bCChannel <- fromPoll $ grabCommands commandChannel
let eCChannel = bCChannel <@ eTick
...
reactimate ...
grabCommands :: TChan UAC -> IO [UAC]
grabCommands unval = do
(atomically $ readTChan unval) `untilM` (atomically $ isEmptyTChan unval)
fromPoll
「入力、現在の時刻などの可変データを頻繁にポーリングして動作を取得します。結果の動作は、イベント ネットワークが入力イベントを処理するたびに更新されます。」のドキュメントから。
私はこれを正しく理解していますか?TChannel は他のコードから取り込まれており、それeTick
を空にして別のコードを取得するたびにEvent t [UAC]
?
私の理解が間違っているか、この計算は fromPoll には高すぎるのかもしれません。その場合、どの方向に進むのがより良いですか?