0

I want to wait until one of the three buttons have been pressed successfully before running the next five statements. How can I do this?

playerTurn: (opponent) ->
    $attackButton.click -> buttonClick.attackButtonClick(opponent)

    $defendButton.click -> buttonClick.defendButtonClick(opponent)

    $useItemButton.click -> buttonClick.useItemButtonClick(opponent)

    status.Poison("opponent", opponent) if opponent.Poisoned
    status.Burn("opponent", opponent) if opponent.Burned
    status.Freeze("opponent", opponent) if opponent.Frozen
    opponent.undefend() if opponent.defenseDoubled or opponent.defenseTripled
    refresh(opponent)
LukeK
  • 125
  • 1
  • 2
  • 8

1 Answers1

1

Does it work for you to just wrap the statements in their own function and call it for each click?

playerTurn: (opponent) ->
  opponentAction = ->
    status.Poison "opponent", opponent  if opponent.Poisoned
    status.Burn "opponent", opponent  if opponent.Burned
    status.Freeze "opponent", opponent  if opponent.Frozen
    opponent.undefend()  if opponent.defenseDoubled or opponent.defenseTripled
    refresh opponent

  $attackButton.click ->
    opponentAction()
    buttonClick.attackButtonClick opponent

  $defendButton.click ->
    opponentAction()
    buttonClick.defendButtonClick opponent

  $useItemButton.click ->
    opponentAction()
    buttonClick.useItemButtonClick opponent
nwalton
  • 2,033
  • 21
  • 22