Ejemplo n.º 1
0
 public void AddBlockable(BarrierBlockable blocked)
 {
     blocked.HandleBlocked();
     blocked.OnBreakdown += HandleBreakDown;
     blocked.OnCancel    += HandleBlockableCancel;
     this.blockables.Add(blocked);
 }
Ejemplo n.º 2
0
 private void HandleUnblock(BarrierBlockable blockable)
 {
     if (traverseDestination == INVALID_DESTINATION)
     {
         return;
     }
     motorAnimator.Resume();
     ResumeTraversal();
 }
Ejemplo n.º 3
0
    public void Init(
        KinimaticMotorController motorController,
        NodePathController nodePath,
        HauntController hauntController,
        HouseController house,
        FearController fearController,
        BarrierController barrierController,
        ActionLockController actionLockController,
        CameraController cameraController
        )
    {
        this.cameraController        = cameraController;
        this.actionLockController    = actionLockController;
        actionLockController.OnLock += HandleActionLock;
        var body = GetComponent <Rigidbody>();

        pather        = new PathDirectionController(transform, nodePath.GetRoute, finalOffset);
        motor         = motorController.GetMotor(motorConfig, body, pather);
        animator      = modelRoot.GetComponentInChildren <Animator>();
        motorAnimator = new MotorAnimator(pather, animator, walkStateName, idleStateName);
        var hauntResponder = new HauntResponder()
        {
            root = transform
        };

        hauntResponder.onRespond += HandleHaunt;
        hauntController?.AddResponder(hauntResponder);
        this.house = house;
        foreach (var reaction in reactions)
        {
            reactionMap[reaction.haunt] = reaction;
        }

        fearActor = new FearActor()
        {
            house = house, root = transform, maxFear = maxFear
        };
        fearActor.OnScared   += HandleScared;
        fearActor.OnPanic    += HandlePanic;
        fearActor.OnCuriouse += HandleCuriouse;
        fearController?.AddActor(fearActor);

        blockable = new BarrierBlockable()
        {
            root = transform
        };
        blockable.OnBlock   += HandleBlock;
        blockable.OnUnblock += HandleUnblock;
        barrierController?.AddBlockable(blockable);
        currentBlockAnim = breakDownAnim;

        ui.Init(reactions, fearActor, hauntController);
        entrance = house.GetEntrance();
    }
Ejemplo n.º 4
0
    private void HandleBreakDown(BarrierBlockable _)
    {
        if (blockCount == 0)
        {
            return;
        }
        blockCount--;
        var removed = blockers[blockers.Count - 1];

        blockers.RemoveAt(blockers.Count - 1);
        parent.StartCoroutine(SpawnOut(removed));
        if (blockCount > 0)
        {
            return;
        }
        foreach (var blockable in blockables)
        {
            blockable.OnBreakdown -= HandleBreakDown;
            blockable.OnCancel    -= HandleBlockableCancel;
            blockable.HandleReleased();
        }
        blockables.Clear();
    }
Ejemplo n.º 5
0
 private void HandleBlock(BarrierBlockable blockable)
 {
     CancelTraversal();
     motorAnimator.Pause();
     animator.Play(currentBlockAnim);
 }
Ejemplo n.º 6
0
 private void HandleBlockableCancel(BarrierBlockable blockable)
 {
     blockables.Remove(blockable);
 }
Ejemplo n.º 7
0
 public void RemoveBlockable(BarrierBlockable blocked)
 {
     this.blockables.Remove(blocked);
 }
Ejemplo n.º 8
0
 public void AddBlockable(BarrierBlockable blockable)
 {
     blockables.Add(blockable);
 }