public void AddBlockable(BarrierBlockable blocked) { blocked.HandleBlocked(); blocked.OnBreakdown += HandleBreakDown; blocked.OnCancel += HandleBlockableCancel; this.blockables.Add(blocked); }
private void HandleUnblock(BarrierBlockable blockable) { if (traverseDestination == INVALID_DESTINATION) { return; } motorAnimator.Resume(); ResumeTraversal(); }
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(); }
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(); }
private void HandleBlock(BarrierBlockable blockable) { CancelTraversal(); motorAnimator.Pause(); animator.Play(currentBlockAnim); }
private void HandleBlockableCancel(BarrierBlockable blockable) { blockables.Remove(blockable); }
public void RemoveBlockable(BarrierBlockable blocked) { this.blockables.Remove(blocked); }
public void AddBlockable(BarrierBlockable blockable) { blockables.Add(blockable); }