public void ListenToState()
 {
     if (Time.time - timeStarted > buildData.BuildTime)
     {
         ExtractEssence();
         stateData.ChangeState(PlayerStates.WEAVE_ESSENCE);
     }
 }
        private void PlayerInputOnPrimaryKeyPressed()
        {
            var topBlockPosition = buildBlocks.Last().transform.position;
            var peak             = GameObject.Instantiate(buildData.ObeliskAttractionPrefab, topBlockPosition + placePointBuildDirection * buildData.BuildDistanceOffset, Quaternion.LookRotation(placePointBuildDirection), parent);

            GameObject.Instantiate(buildData.EssenceAttractionPointPrefab, peak.transform.position + placePointBuildDirection * 2, Quaternion.LookRotation(placePointBuildDirection), parent);
            buildBlocks.Clear();
            parent = null;
            stateData.ChangeState(PlayerStates.AWAIT_BUILD);
        }
Exemplo n.º 3
0
        private void PlayerInputOnPrimaryKeyPressed()
        {
            var handPos    = buildData.ConstructorObject.position;
            var buildSpots = buildData.AttractionSpots.Items.ToArray();
            var buildRange = buildData.BuildSpotDetectionRange;

            var openSpots = RangeTargetScanner.GetTargets(handPos, buildSpots, buildRange).Where(t => !t.GetComponent <AttractionSpot>().IsOccupied).ToArray();

            if (openSpots.Length <= 0)
            {
                return;
            }
            buildData.TargetAttraction = ClosestEntityFinder.GetClosestTransform(openSpots, handPos).GetComponent <AttractionSpot>();

            stateData.ChangeState(PlayerStates.FORGING);
        }
        public void Awake()
        {
            stateMachine = new StateMachine <PlayerStates>(stateData);

            var awaitBuild   = new AwaitBuildPlayerState(playerInput, buildData, stateData);
            var forging      = new ForgingPlayerState(playerInput, buildData, stateData);
            var extracting   = new ExtractingPlayerState(playerInput, buildData, stateData);
            var placeObelisk = new PlaceObeliskPlayerState(playerInput, buildData, stateData);
            var weaveEssence = new WeaveEssencePlayerState(playerInput, buildData, stateData, recipeData);

            stateMachine.RegisterState(PlayerStates.AWAIT_BUILD, awaitBuild);
            stateMachine.RegisterState(PlayerStates.FORGING, forging);
            stateMachine.RegisterState(PlayerStates.EXTRACTING, extracting);
            stateMachine.RegisterState(PlayerStates.WEAVE_ESSENCE, weaveEssence);
            stateMachine.RegisterState(PlayerStates.PLACE_OBELISK, placeObelisk);

            stateData.ChangeState(PlayerStates.AWAIT_BUILD);

            playerInput.OnFirePressed  += PlayerInputOnFirePressed;
            playerInput.OnAirPressed   += PlayerInputOnAirPressed;
            playerInput.OnWaterPressed += PlayerInputOnWaterPressed;
            playerInput.OnEarthPressed += PlayerInputOnEarthPressed;
            playerInput.OnStartPlacingObeliskPressed += PlayerInputOnPlaceObeliskPressed;
            playerInput.OnWeaveEssencePressed        += PlayerInputOnWeaveEssencePressed;
        }
 private void PlayerInputOnPrimaryKeyReleased()
 {
     stateData.ChangeState(PlayerStates.AWAIT_BUILD);
 }