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); }
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); }