public void ProcessMultiplayerDamage(BatchedClick damage) { int totalDamageToProcess = damage.GetDamage(); if (CurrentMonster.GetHealth() >= totalDamageToProcess) { MonsterClickProcessor(totalDamageToProcess); } else { while (totalDamageToProcess > 0) { int damageForCurrentMonster = CurrentMonster.GetHealth(); int damageToDo = totalDamageToProcess - damageForCurrentMonster; if (damageToDo <= 0) { MonsterClickProcessor(damageToDo); break; } totalDamageToProcess -= damageToDo; MonsterClickProcessor(damageToDo); } } }
/// <summary> /// Most important function that handles all the game clicks /// </summary> public void MonsterClicked() { //check if there is a monster to click on: if (CurrentMonster != null) { //execute pending abilities AbilityMultiplier = 1; OnClickAbilityProcess?.Invoke(CurrentLevel, Clicks); int damage = 100 * CurrentPlayer.GetDamageFactor() * AbilityMultiplier; if (CurrentMonster.GetHealth() >= damage) { Clicks.AddDamage(damage); MonsterClickProcessor(damage); } else { while (damage > 0) { int CurrentMonsterHealth = CurrentMonster.GetHealth(); int damageToDo = damage - CurrentMonsterHealth; if (damageToDo <= 0) { //to process the last bits of damage without the loop Clicks.AddDamage(damage); MonsterClickProcessor(damage); break; } damage -= damageToDo; Clicks.AddDamage(damageToDo); MonsterClickProcessor(damageToDo); } } } }