Beispiel #1
0
    void setFSM()
    {
        _fsm          = new FSMSquirrel();
        _fsm.squirrel = this;

        var onFloor = new StateOnFloor(_fsm);
        var jumping = new StateJumping(_fsm);

        _climbing = new StateClimbing(_fsm);
        var falling = new StateFalling(_fsm);

        _hiding = new StateHiding(_fsm);


        //onFloorTo
        onFloor.transitions[InputSquirrel.jumpPressed]             = jumping;
        onFloor.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing;
        onFloor.transitions[InputSquirrel.leavePlatform]           = falling;
        //onFloor.transitions[InputSquirrel.ReachedDestination] = shootingCurve;
        onFloor.transitions[InputSquirrel.onHideSpotAndPressedHideKey] = _hiding;

        //jumpingTo
        jumping.transitions[InputSquirrel.timeOfJumpEnded]         = falling;
        jumping.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing;
        //jumping.transitions[InputSquirrel.TargetSeen] = planning;

        //climbingTo
        _climbing.transitions[InputSquirrel.jumpPressed]    = jumping;
        _climbing.transitions[InputSquirrel.unpressedClimb] = falling;

        //fallingTo
        falling.transitions[InputSquirrel.floorCollision]          = onFloor;
        falling.transitions[InputSquirrel.wallNearAndClimbPressed] = _climbing;

        //hidingTo
        _hiding.transitions[InputSquirrel.onHideSpotAndPressedHideKey] = onFloor;

        _fsm.SetInitial(falling);
    }
Beispiel #2
0
    void MakeFSM()
    {
        StateHidden hidden = new StateHidden(this, _playerRevealDistance, _bulletInstantRevealDistance);

        hidden.AddTransition(Transition.SawByPlayer, StateID.Revealing);
        hidden.AddTransition(Transition.Revealed, StateID.Hiding);

        StateRevealing revealing = new StateRevealing(this);

        revealing.AddTransition(Transition.Revealed, StateID.Hiding);

        StateHiding hiding = new StateHiding(this, _moveSpeed, _speedLostOnShot, _speedRecoverPerSecond, _animator, _spriteRenderer);

        hiding.AddTransition(Transition.FoundHideout, StateID.Hidden);
        hiding.AddTransition(Transition.Caught, StateID.Caught);

        StateCaught caught = new StateCaught(this);

        caught.AddTransition(Transition.MiniGameLost, StateID.Hiding);
        caught.AddTransition(Transition.Repaired, StateID.Repaired);

        _fsm = new FSMSystem(hidden, revealing, hiding, caught);
    }
    public void Start()
    {
        // Creates Transitions
        Transition startMining  = new TransitionStartMining(gameObject);
        Transition stopMining   = new TransitionStopMining();
        Transition startWait    = new TransitionStartWait(gameObject);
        Transition stopWait     = new TransitionStopWait(gameObject);
        Transition alerted      = new TransitionAlerted(gameObject);
        Transition wakeUp       = new TransitionWakeUp(gameObject);
        Transition sleep        = new TransitionSleep(gameObject);
        Transition goToSleep    = new TransitionGoToSleep(gameObject);
        Transition backToMining = new TransitionBackToMining(gameObject);


        walkToMineTrans.Add(startMining);
        walkToMineTrans.Add(alerted);

        miningTrans.Add(stopMining);
        miningTrans.Add(alerted);

        walkToChestTrans.Add(startWait);
        walkToChestTrans.Add(alerted);

        waitingTrans.Add(stopWait);
        waitingTrans.Add(alerted);

        hidingTrans.Add(backToMining);

        sleepingTrans.Add(wakeUp);

        walkingTrans.Add(sleep);

        wanderTrans.Add(goToSleep);


        // Creates States
        StateWalkToChest walkToChest = new StateWalkToChest(gameObject, walkToChestTrans);
        StateMining      mining      = new StateMining(gameObject, miningTrans, "Mining");
        StateWaiting     waiting     = new StateWaiting(gameObject, waitingTrans, "Waiting");
        StateHiding      hiding      = new StateHiding(gameObject, hidingTrans);

        StateWaiting sleeping = new StateWaiting(gameObject, sleepingTrans, "Sleeping");
        StateWander  wander   = new StateWander(gameObject, wanderTrans);
        StateWaiting walking  = new StateWaiting(gameObject, walkingTrans, "Walking");


        if (Object.Equals(gameObject.name, "Miner (iron)"))
        {
            StateWalkToMine ironMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreIron", walkToMineTrans);
            initialState = ironMiner;
            states.Add(ironMiner);
            states.Add(walkToChest);
            states.Add(mining);
            states.Add(waiting);
            states.Add(hiding);
        }
        else if (Object.Equals(gameObject.name, "Miner (gold)"))
        {
            StateWalkToMine goldMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreGold", walkToMineTrans);
            initialState = goldMiner;
            states.Add(goldMiner);
            states.Add(walkToChest);
            states.Add(mining);
            states.Add(waiting);
            states.Add(hiding);
        }
        else if (Object.Equals(gameObject.name, "Miner (diamond)"))
        {
            StateWalkToMine diamondMiner = new StateWalkToMine(gameObject, gameObject.GetComponent <pathFind>().graph, "OreDiamond", walkToMineTrans);
            initialState = diamondMiner;
            states.Add(diamondMiner);
            states.Add(walkToChest);
            states.Add(mining);
            states.Add(waiting);
            states.Add(hiding);
        }
        else if (Object.Equals(gameObject.name, "Monster"))
        {
            initialState = sleeping;
            states.Add(sleeping);
            states.Add(wander);
            states.Add(walking);
        }

        currentState = initialState;
    }