Example #1
0
    public void Init(
        KinimaticMotorController motorController,
        CameraController cameraController,
        HauntController hauntController,
        KeyBindingsController keyBindings,
        BarrierController barrierController,
        ActionLockController actionLockController
        )
    {
        var body = GetComponentInChildren <Rigidbody>();

        this.actionLockController = actionLockController;
        directionInput            = new InputDirectionController(keyBindings);
        motor         = motorController.GetMotor(motorConfig, body, directionInput);
        motorAnimator = new MotorAnimator(directionInput, GetComponentInChildren <Animator>(), walkStateName, idleStateName);
        cameraController.Follow(transform);
        haunter = new Haunter()
        {
            root = transform
        };
        hauntController?.AddHaunter(haunter);
        interactKey = keyBindings.GetKey(KeyAction.Interact);
        dimmer      = new ProximityDimmer()
        {
            root = transform, radius = dimRadius
        };
        builder = new BarrierBuilder()
        {
            root = transform
        };
        barrierController?.SetBuilder(builder);
    }
Example #2
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();
    }