Example #1
0
    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);
            }
        }
    }
Example #2
0
    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);
    }