Example #1
0
    public void SetData(StateControllerData data)
    {
        if (data == null)
        {
            return;
        }

        currentState = GameObject.Instantiate(ResourceManager.GetAiState(data.currentState));
        defaultState = GameObject.Instantiate(ResourceManager.GetAiState(data.defaultState));

        string currentStateName = currentState.name;
        string defaultStateName = defaultState.name;

        currentState.name = currentStateName.Contains("(") ? currentStateName.Substring(0, currentStateName.IndexOf("(")).Trim() : currentStateName;
        defaultState.name = defaultStateName.Contains("(") ? defaultStateName.Substring(0, defaultStateName.IndexOf("(")).Trim() : defaultStateName;

        chaseTarget = data.chaseTargetId != -1
            ? Player.GetObjectById(data.chaseTargetId)
            : null;
        controlledObject = data.controlledObjectId != -1
           ? Player.GetObjectById(data.controlledObjectId)
           : null;
        attacking = data.attacking;
        aiActive  = data.aiActive;
    }
Example #2
0
 public void TransitionToState(AI.State nextState)
 {
     if (nextState != remainState)
     {
         currentState = nextState;
         // OnExitState();
     }
 }
Example #3
0
 public void TransitionToNextState(AI.State next)
 {
     if (next != _noState)
     {
         Debug.Log($"<color=purple>FSM:</color>Monster {_monsterData.DisplayName} at {Coords} changes State from {_currentState.name} to {next.name}");
         _currentState = next;
         OnExitState();
     }
 }
Example #4
0
    private void Start()
    {
        AwakeObj();

        controlledObject = GetComponent <WorldObject>();
        targetManager    = transform.root.GetComponentInChildren <TargetManager>();

        // for now the default state is the one that a indicatedObject/building has on Awake(),
        // later defaultState can be made a separate public variable to be set in the Inspector
        defaultState = currentState;

        // nearbyEnemies = new List<WorldObject>();
        // nearbyAllies = new List<WorldObject>();
        attacking = false;

        InvokeRepeating("DoExpensiveStateUpdate", 0.5f, 0.2f);
    }
Example #5
0
    protected override void DoInit(BaseEntityDependencies deps)
    {
        _monsterData = ((MonsterData)_entityData);
        name         = _monsterData.name;
        _hpTrait     = new HPTrait();
        _hpTrait.Init(this, _monsterData.HPData, deps.GameEvents.Health);

        _decisionDelay     = _monsterData.ThinkingDelay;
        _elapsedNextAction = 0.0f;
        _elapsedPathUpdate = 0.0f;

        _movingTrait = _monsterData.MovingTraitData.CreateRuntimeTrait();

        _monsterEvents = deps.GameEvents.Monsters;

        _currentState = _monsterData.InitialState;
        _currentStateTimeUnitsElapsed = 0.0f;

        _battleTrait = new BattleTrait();
        _battleTrait.Init(_entityController, _mapController, _monsterData.BattleData, this, deps.GameEvents);
    }