//builds the characters behaviour tree private void constructBehaviourTree() { //health node checks if health is below threshold HealthNode healthNode = new HealthNode(this, m_lowHealthThreshold); //inverted health checks if health is above threshhold Inverter invertHealth = new Inverter(healthNode); //Cover GetCoverNode getCoverNode = new GetCoverNode(target.transform, this); GoToCoverNode goToCoverNode = new GoToCoverNode(this, m_speed); HealNode Heal = new HealNode(20, this, m_healthRegenRate); Sequence CoverSequence = new Sequence(new List <BNode> { healthNode, getCoverNode, goToCoverNode, Heal }); //chase Range = new RangeNode(m_detectionRange, target.transform, gameObject.transform, this); Chase = new ChaseNode(target.transform, this, m_speed); Sequence ChaseSequence = new Sequence(new List <BNode> { invertHealth, Range, Chase }); //wander RangeNode wanderRange = new RangeNode(m_detectionRange, target.transform, gameObject.transform, this); Inverter invertWanderRange = new Inverter(wanderRange); WanderNode wander = new WanderNode(this, m_speed); Sequence WanderSequence = new Sequence(new List <BNode> { invertWanderRange, wander }); //attack attackRange = new RangeNode(m_attackRange, target.transform, gameObject.transform, this); attack = new AttackNode(target.transform, this); Sequence AttackSequence = new Sequence(new List <BNode> { attackRange, attack }); //root node topNode = new Selector(new List <BNode> { CoverSequence, AttackSequence, ChaseSequence, WanderSequence }); }
//builds the characters behaviour tree private void constructBehaviourTree() { ////Cover GetCoverNode getCoverNode = new GetCoverNode(m_target.transform, this); GoToCoverNode goToCoverNode = new GoToCoverNode(this, m_speed); HealNode Heal = new HealNode(20, this, m_healthRegenRate); Sequence CoverSequence = new Sequence(new List <BNode> { getCoverNode, goToCoverNode, Heal }); coverTopNode = new Selector(new List <BNode> { CoverSequence }); ////chase m_chase = new ChaseNode(m_target.transform, this, m_speed); Sequence ChaseSequence = new Sequence(new List <BNode> { m_chase }); chaseTopNode = new Selector(new List <BNode> { ChaseSequence }); ////wander WanderNode wander = new WanderNode(this, m_speed); Sequence WanderSequence = new Sequence(new List <BNode> { wander }); WanderTopNode = new Selector(new List <BNode> { WanderSequence }); ////attack m_attack = new AttackNode(m_target.transform, this); Sequence AttackSequence = new Sequence(new List <BNode> { m_attack }); attackTopNode = new Selector(new List <BNode> { AttackSequence }); }
public static void buildMoveToHealthTrigger(DecisionTree p_decisionTree, Entity p_sourceEntity) { if (EntityComponentContainer.Components.ContainsKey(typeof(HealthRecoveryTrigger))) { var l_healthRecoveryTriggers = EntityComponentContainer.Components[typeof(HealthRecoveryTrigger)]; for (int i = 0; i < l_healthRecoveryTriggers.Count; i++) { HealthRecoveryTrigger l_healthRecoveryTrigger = l_healthRecoveryTriggers[i] as HealthRecoveryTrigger; MoveToNavigationNodeNode l_moveToNavigationNodeNode = MoveToNavigationNodeNode.alloc(p_sourceEntity.CurrentNavigationNode, l_healthRecoveryTrigger.AssociatedEntity.CurrentNavigationNode); DecisionTree.linkDecisionNodes(p_decisionTree, p_decisionTree.RootNode, l_moveToNavigationNodeNode); HealNode l_healNode = HealNode.alloc(p_sourceEntity, l_healthRecoveryTrigger); DecisionTree.linkDecisionNodes(p_decisionTree, l_moveToNavigationNodeNode, l_healNode); } } }
public override void Setup(IBattleActionElement element) { HealNode healNode = element as HealNode; amountText.text = healNode.Amount.ToString(); }