rendered paste bodyMain Thread:
Lock PlayerList
Lock MonsterList
Player targets Monster
If not BattleThread exists
Monster->ChallengerList->Add(Player);
Create BattleThread with Player->MeleeAttack(Monster);
Unlock PlayerList
Unlock MonsterList
EndIf
BattleThread:
Do
Lock MonsterList
Lock PlayerList
If Monster->HP <= 0
Calculate rewards
If sizeof(Monster->ChallengerList) / sizeof(Challenger) == 1
MonsterList->Delete(Monster);
Else
Monster->ChallengerList->Delete(Player);
EndIf
End BattleThread
Else
If NextHitTime < CurrentTime && Player->isAttacking
Player attacks Monster by Damage
Monster->HP -= Damage;
NextHitTime = CurrentTime + TimeDelay;
EndIf
EndIf
Unlock MonsterList
Unlock PlayerList
While(1)