Пример #1
0
    private void InitializeBehaviourTree()
    {
        _behaviourTree = new Script_BehaviourTree();
        SetupTreeFlags();

        Script_Selector startSelector = new Script_Selector(_behaviourTree);

        Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree);

        SetupWalkingSequence(walkingSequence);

        Script_Sequence pursuitSequence = new Script_Sequence(_behaviourTree);

        SetupPursuitSequence(pursuitSequence);

        Script_Sequence attackSequence = new Script_Sequence(_behaviourTree);

        SetupAttackSequence(attackSequence);

        Script_Sequence GetHighestThreatOrNearestSequence = new Script_Sequence(_behaviourTree);

        SetupGetHighestThreatOrNearestFriendlySequence(GetHighestThreatOrNearestSequence);

        Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree);

        SetupGetFreeSpaceSequence(GetFreeSpaceSequence);

        startSelector.AddTask(GetFreeSpaceSequence);
        startSelector.AddTask(GetHighestThreatOrNearestSequence);
        startSelector.AddTask(pursuitSequence);
        startSelector.AddTask(attackSequence);
        startSelector.AddTask(walkingSequence);

        _behaviourTree.AddChild(startSelector);
    }
    public Script_Action_SetEntityWithLowestHealth(Script_BehaviourTree p_tree, blackboard_flags p_entityListFlag, blackboard_flags p_entityWithLowestHealthFlag)
    {
        _tree = p_tree;

        _entityListFlag             = p_entityListFlag;
        _entityWithLowestHealthFlag = p_entityWithLowestHealthFlag;
    }
Пример #3
0
    public Script_Selector(Script_BehaviourTree p_tree)
    {
        _leafList        = new List <Script_TreeNode> ();
        _currentLeafList = new List <Script_TreeNode> ();

        _tree = p_tree;
    }
Пример #4
0
 public Script_Action_SetEnemyAttackingTarget(Script_BehaviourTree p_tree, blackboard_flags p_enemyListFlag, Script_IEntity p_targetEntity, blackboard_flags p_targetToAttackFlag)
 {
     _tree               = p_tree;
     _enemyListFlag      = p_enemyListFlag;
     _targetEntity       = p_targetEntity;
     _targetToAttackFlag = p_targetToAttackFlag;
 }
    public Script_Action_SetTargetToAttack(Script_BehaviourTree p_tree, blackboard_flags p_targetToAttackFlag, Script_IEntity p_enemyToSet)
    {
        _tree = p_tree;

        _targetToAttackFlag = p_targetToAttackFlag;
        _enemyToSet         = p_enemyToSet;
    }
Пример #6
0
 public Script_Condition_IsThreatOverThreshold(Script_BehaviourTree p_tree, blackboard_flags p_entityListFlag, Script_IEnemy p_threatReceiver, int p_threshold)
 {
     _tree            = p_tree;
     _entityListFlag  = p_entityListFlag;
     _threatReceiver  = p_threatReceiver;
     _threatThreshold = p_threshold;
 }
 public Script_Action_SetHighestThreatTargetFromList(Script_BehaviourTree p_tree, blackboard_flags p_entityListFlag, Script_IEnemy p_threatReceiver, blackboard_flags p_entityWithHighestThreatFlag)
 {
     _tree           = p_tree;
     _entityListFlag = p_entityListFlag;
     _threatReceiver = p_threatReceiver;
     _entityWithHighestThreatFlag = p_entityWithHighestThreatFlag;
 }
Пример #8
0
 public Script_Action_MoveTowardsEntity(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_entityFlag, Script_IEntity p_entityToMove)
 {
     _tree         = p_tree;
     _grid         = p_grid;
     _entityFlag   = p_entityFlag;
     _entityToMove = p_entityToMove;
 }
Пример #9
0
 public Script_Action_MoveToLocation(Script_BehaviourTree p_tree, Script_IEntity p_entity, blackboard_flags p_locationFlag)
 {
     _locationFlag = p_locationFlag;
     _location     = Vector3.zero;
     _entity       = p_entity;
     _tree         = p_tree;
 }
 public Script_Action_SetNearestLocationSurroundingEntity(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_entityToGetLocationAround, Script_IEntity p_fromEntity, blackboard_flags p_locationToMoveTowardsFlag)
 {
     _tree       = p_tree;
     _grid       = p_grid;
     _fromEntity = p_fromEntity;
     _locationToMoveTowardsFlag = p_locationToMoveTowardsFlag;
     _entityToGetLocationAround = p_entityToGetLocationAround;
 }
Пример #11
0
 public Script_Action_SetRandomLocationWithinRange(Script_BehaviourTree p_tree, blackboard_flags p_locationFlag, Script_IEntity p_entityToCalculateFrom, Script_Grid p_grid, int p_range)
 {
     _tree         = p_tree;
     _entity       = p_entityToCalculateFrom;
     _locationFlag = p_locationFlag;
     _grid         = p_grid;
     _range        = p_range;
 }
 public Script_Action_SetNearestEntityFromEntityWithinRange(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_entityListFlag, int p_range, Script_IEntity p_fromEntity, blackboard_flags p_returnedEntityFlag)
 {
     _grid                      = p_grid;
     _tree                      = p_tree;
     _entityListFlag            = p_entityListFlag;
     _range                     = p_range;
     _fromEntity                = p_fromEntity;
     _returnedNearestEntityFlag = p_returnedEntityFlag;
 }
 public Script_Action_Heal(Script_BehaviourTree p_tree, Script_GameManager p_manager, blackboard_flags p_targetEnemyFlag, blackboard_flags p_locationAnchorPointFlag, Script_IEntity p_entityToAttack, blackboard_flags p_isForwardSwingFlag)
 {
     _manager            = p_manager;
     _tree               = p_tree;
     _targetEnemyFlag    = p_targetEnemyFlag;
     _entityToAttack     = p_entityToAttack;
     _isForwardSwingFlag = p_isForwardSwingFlag;
     _swingDistance      = _manager.GetTileSize() * 0.4f;
 }
    public Script_Condition_IsEntityTypeNearby(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_entityListFlag, Script_IEntity p_targetEntity, int p_range)
    {
        _tree           = p_tree;
        _entityListFlag = p_entityListFlag;
        _grid           = p_grid;

        _targetEntity = p_targetEntity;

        _range = p_range;
    }
Пример #15
0
    public Script_Condition_IsEntityNearby(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_entityFlag, Script_IEntity p_measuredFromEntity, int p_range)
    {
        _tree       = p_tree;
        _entityFlag = p_entityFlag;
        _grid       = p_grid;

        _measuredFromEntity = p_measuredFromEntity;

        _range = p_range;
    }
 public Script_Action_SetEntitiesWithinRange(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_listOfEntitiesFlag,
                                             blackboard_flags p_listOfEntitiesWithinRangeFlag, Script_IEntity p_entityToCalculateRangeFrom, int p_range)
 {
     _tree  = p_tree;
     _range = p_range;
     _entityToCalculateRangeFrom    = p_entityToCalculateRangeFrom;
     _listOfEntitiesFlag            = p_listOfEntitiesFlag;
     _listOfEntitiesWithinRangeFlag = p_listOfEntitiesWithinRangeFlag;
     _grid = p_grid;
 }
Пример #17
0
    public void InitializeBehaviourTree()
    {
        _behaviourTree = new Script_BehaviourTree();
        SetupTreeFlags();

        Script_Selector startSelector = new Script_Selector(_behaviourTree);

        Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree);

        SetupWalkingSequence(walkingSequence);

        Script_Sequence moveNearDpsSequence = new Script_Sequence(_behaviourTree);

        SetupFollowingSequence(moveNearDpsSequence, GetDps() as Script_IEntity);

        Script_Sequence moveNearTankSequence = new Script_Sequence(_behaviourTree);

        SetupFollowingSequence(moveNearTankSequence, GetTank() as Script_IEntity);

        Script_Sequence healSequence = new Script_Sequence(_behaviourTree);

        SetupHealSequence(healSequence);

        Script_Sequence ChooseAttackingTargetSequence = new Script_Sequence(_behaviourTree);

        SetupChooseTargetToAttack(ChooseAttackingTargetSequence);

        Script_Sequence attackSequence = new Script_Sequence(_behaviourTree);

        SetupAttackSequence(attackSequence);

        Script_Sequence ChooseHealingTargetSequence = new Script_Sequence(_behaviourTree);

        SetupChooseTargetToHeal(ChooseHealingTargetSequence);

        Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree);

        SetupGetFreeSpaceSequence(GetFreeSpaceSequence);


        startSelector.AddTask(GetFreeSpaceSequence);
        startSelector.AddTask(ChooseHealingTargetSequence);
        startSelector.AddTask(healSequence);
        startSelector.AddTask(ChooseAttackingTargetSequence);
        startSelector.AddTask(attackSequence);
        startSelector.AddTask(moveNearTankSequence);
        startSelector.AddTask(moveNearDpsSequence);
        startSelector.AddTask(walkingSequence);



        _behaviourTree.AddChild(startSelector);
    }
Пример #18
0
    public override void DetermineIfDead()
    {
        if (_health <= 0)
        {
            _manager.DestroyMaterial(_objectMaterial);
            _manager.DestroyGameObject(_gameObject);
            _manager.RemoveEnemy(this);

            Vector3Int pos = _behaviourTree.GetBlackBoardElement <Vector3Int> (_locationFlag);
            _grid.AccessGridTile(pos.x, pos.z).SetOccupied(false);

            _behaviourTree.RemoveBlackboardElement(_locationFlag);
            _behaviourTree.RemoveBlackboardElement(_targetEntityFlag);
            _behaviourTree.RemoveBlackboardElement(_entityListFlag);
            _behaviourTree.RemoveBlackboardElement(_forwardSwingFlag);
            _behaviourTree.RemoveBlackboardElement(_getSpaceEntityListFlag);

            _behaviourTree = null;
        }
    }
Пример #19
0
    public void InitializeBehaviourTree()
    {
        _behaviourTree = new Script_BehaviourTree();

        SetupTreeFlags();



        Script_Selector startSelector = new Script_Selector(_behaviourTree);

        Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree);

        SetupWalkingSequence(walkingSequence);

        Script_Sequence pursuitSequence = new Script_Sequence(_behaviourTree);

        SetupPursuitSequence(pursuitSequence);

        Script_Sequence attackSequence = new Script_Sequence(_behaviourTree);

        SetupAttackSequence(attackSequence);


        Script_Sequence ChooseTargetSequence = new Script_Sequence(_behaviourTree);

        SetupChooseTargetSequence(ChooseTargetSequence);
        Script_Decorator_AlwaysFail alwaysFailWhileChoosingTarget = new Script_Decorator_AlwaysFail(_behaviourTree, ChooseTargetSequence);

        Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree);

        SetupGetFreeSpaceSequence(GetFreeSpaceSequence);


        startSelector.AddTask(GetFreeSpaceSequence);
        startSelector.AddTask(alwaysFailWhileChoosingTarget);
        startSelector.AddTask(pursuitSequence);
        startSelector.AddTask(attackSequence);
        startSelector.AddTask(walkingSequence);

        _behaviourTree.AddChild(startSelector);
    }
Пример #20
0
    public void InitializeBehaviourTree()
    {
        _behaviourTree = new Script_BehaviourTree();
        SetupTreeFlags();

        Script_Selector startSelector = new Script_Selector(_behaviourTree);

        Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree);

        SetupWalkingSequence(walkingSequence);

        Script_Sequence moveNearTankSequence = new Script_Sequence(_behaviourTree);

        SetupMoveToTankSequence(moveNearTankSequence);

        Script_Sequence attackSequence = new Script_Sequence(_behaviourTree);

        SetupAttackSequence(attackSequence);

        Script_Sequence ChooseTargetSequence = new Script_Sequence(_behaviourTree);

        SetupChooseTargetToAttackSequence(ChooseTargetSequence);

        Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree);

        SetupGetFreeSpaceSequence(GetFreeSpaceSequence);


        startSelector.AddTask(GetFreeSpaceSequence);
        startSelector.AddTask(ChooseTargetSequence);
        startSelector.AddTask(attackSequence);
        startSelector.AddTask(moveNearTankSequence);
        startSelector.AddTask(walkingSequence);

        _behaviourTree.AddChild(startSelector);
    }
 public Script_Condition_AreAnyEntitiesAtEntityLocation(Script_BehaviourTree p_tree, blackboard_flags p_EntityListFlag, Script_IEntity p_entityToCalculateFrom)
 {
     _tree = p_tree;
     _entityToCalculateFrom = p_entityToCalculateFrom;
     _entityListFlag        = p_EntityListFlag;
 }
Пример #22
0
 public Script_Decorator_Inverter(Script_BehaviourTree p_tree, Script_TreeNode p_child)
 {
     _tree      = p_tree;
     _childNode = p_child;
 }
Пример #23
0
 public Script_Action_OccupyTile(Script_BehaviourTree p_tree, Script_Grid p_grid, blackboard_flags p_flag)
 {
     _tree = p_tree;
     _grid = p_grid;
     _flag = p_flag;
 }
Пример #24
0
 public Script_Decorator_AlwaysFail(Script_BehaviourTree p_tree, Script_TreeNode p_child)
 {
     _tree      = p_tree;
     _childNode = p_child;
 }
 public Script_Condition_IsEntityNull(Script_BehaviourTree p_tree, blackboard_flags p_entityFlag)
 {
     _tree       = p_tree;
     _entityFlag = p_entityFlag;
 }
 public Script_Decorator_NeverSucceed(Script_BehaviourTree p_tree, Script_TreeNode p_child)
 {
     _tree      = p_tree;
     _childNode = p_child;
 }
 public Script_Condition_IsEntityHealthUnderThreshold(Script_BehaviourTree p_tree, blackboard_flags p_entityToCheckFlag, int p_healthThreshold)
 {
     _tree = p_tree;
     _entityToCheckFlag = p_entityToCheckFlag;
     _healthThreshold   = p_healthThreshold;
 }
 public Script_Action_SetFlag(Script_BehaviourTree p_tree, object p_valueToSet, blackboard_flags p_flag)
 {
     _object = p_valueToSet;
     _flag   = p_flag;
     _tree   = p_tree;
 }
 public Script_Condition_IsEntityAtLocation(Script_BehaviourTree p_tree, blackboard_flags p_locationFlag, Script_IEntity p_entity)
 {
     _entity       = p_entity;
     _tree         = p_tree;
     _locationFlag = p_locationFlag;
 }