private void AnswerToActionListener(ActionResponseEvent actionResponseEvent)
        {
            if (!actionResponseEvent.ActionEvent.Action.Definition.Name.Equals("RecruitmentAction"))
            {
                return;
            }
            if (actionResponseEvent.SelectedAnswer.Name.Equals("Cancel"))
            {
                return;
            }

            Habitat habitat = actionResponseEvent.ActionEvent.Action.Params["habitat"] as Habitat;

            Entity   owner    = actionResponseEvent.ActionEvent.Target;
            Army     army     = owner.GetComponent <Army>();
            Fraction fraction = army.Fraction;
            int      maxHire  = (int)actionResponseEvent.ActionEvent.Action.Params["population"];
            int      amount   = maxHire * 17;
            Resource resource = new Resource(new ResourceDefinition("Gold"), amount);

            RemoveResourceFromFractionEvent removeResource = new RemoveResourceFromFractionEvent(resource, fraction);

            _eventBus.Post(removeResource);
            if (!removeResource.Success && removeResource.CountOfDividend == 0)
            {
                return;
            }

            int hireAmount = removeResource.Success ? maxHire : removeResource.CountOfDividend;

            army.Creatures[0].Count += hireAmount;
            habitat.Current         -= hireAmount;
        }
        public void AddActionToHandleListener(DynamicActionEvent dynamicActionEvent)
        {
            //TODO add more complex way to take actions
            ActionAnswer        actionAnswer        = dynamicActionEvent.ActionAnswers[0];
            ActionResponseEvent actionResponseEvent = new ActionResponseEvent(dynamicActionEvent, actionAnswer);

            _eventBus.Post(actionResponseEvent);
        }
        private void AnswerToActionListener(ActionResponseEvent actionResponseEvent)
        {
            if (!actionResponseEvent.ActionEvent.Action.Definition.Name.Equals("ChestAction"))
            {
                return;
            }

            Entity   owner    = actionResponseEvent.ActionEvent.Target;
            Fraction fraction = owner.GetComponent <Army>().Fraction;
            int      amount   = (int)actionResponseEvent.ActionEvent.Action.Params["gold"];
            Resource resource = new Resource(new ResourceDefinition("Gold"), amount);
            AddResourceToFractionEvent addResourceToFractionEvent = new AddResourceToFractionEvent(resource, fraction);

            _eventBus.Post(addResourceToFractionEvent);
        }
 private void AnswerToActionListener(ActionResponseEvent actionResponseEvent)
 {
     _onGoingActions.Remove(actionResponseEvent.ActionEvent.Id);
 }