3

ゲームの入力を管理したい方法は、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 には高すぎるのかもしれません。その場合、どの方向に進むのがより良いですか?

4

1 に答える 1