void ProcessTurnResults(ActionResult results) { foreach (var message in results.GetMessages()) { _log.AddMessage(message); } var deadEntities = results.GetEntityEvent("dead"); if (deadEntities.Count() > 0) { var actionResult = new ActionResult(); foreach (var dead in deadEntities) { if (dead == _player) { actionResult.Append(dead.ConvertToDeadPlayer()); _gameState = GameState.Global_PlayerDead; } else { actionResult.Append(dead.ConvertToDeadMonster()); } _entityMap.SwapEntityToMap(dead, _entityMapBackground); _actors.Remove(dead.actor); } foreach (var message in actionResult.GetMessages()) { _log.AddMessage(message); } } }
public ActionResult Attack(Entity target) { var actionResult = new ActionResult(); var fighterComponent = target?.gameObject.GetComponent <Fighter>(); if (fighterComponent == null) { return(actionResult); } var damage = offensePower - fighterComponent.defensePower; if (damage > 0) { actionResult.AppendMessage(new Message($"{owner.GetColoredName()} attacks {target.GetColoredName()} for {damage} hit points!", null)); actionResult.Append(fighterComponent.TakeDamage(damage)); } else { actionResult.AppendMessage(new Message($"{owner.GetColoredName()} attacks {target.GetColoredName()} for no damage.", null)); } return(actionResult); }