private void Update() { if (_prevInFocus != GameData.Instance.playerInFocus) { } if (Input.GetKeyUp(KeyCode.R)) { SeekRock(); } if (landedOnNewFloor) { landedOnNewFloor = false; if (AIManager.BuildElevator(playerID)) { Debug.Log("Player " + playerID + " updated their " + GameData.Instance.playerMineLocations[playerID].ToString() + " elevator location"); elevatorCreator.CreateElevator(playerID); } } if (!_breakingBlock) { //check if stuck //might need to rescan map, and set new target pos if (IsStandingStill(_previousPos, transform.position)) { _stuckTimer -= Time.deltaTime; } else { _stuckTimer = 3f; } if (_stuckTimer < 0) { if (_stuckNumber > 2) { StartCoroutine(BreakBlock()); Debug.Log("player " + playerID + " has been stuck for a long ass time"); } else { Debug.Log("Player " + playerID + "is stuck"); _stuckTimer = 3f; _isStuck = true; AStarMapController.RequestScan(); DetermineNewTarget(); _isStuck = false; _stuckNumber++; } } } _previousPos = transform.position; GameData.Instance.playerLocalLocations[playerID] = transform.localPosition; }
public void Break() { if (Random.Range(0, 10) < 1) { GameObject go = Instantiate(holePrefab, transform.position, Quaternion.identity); go.transform.parent = transform.parent; go.transform.position = transform.position; MineRecorder.UpdateTileType(floorNumber, index, mineType, TileType.Hole); } else { MineRecorder.UpdateTileType(floorNumber, index, mineType, TileType.Blank); } AStarMapController.RequestScan(); }
private IEnumerator RescanMap() { yield return(null); AStarMapController.RequestScan(); }
/// <summary> /// Handle Time-dependent actions not related to RB /// Handle building elevator, or determing if stuck /// </summary> private void Update() { if (_prevInFocus != GameData.Instance.playerInFocus) { if (GameData.Instance.playerInFocus == playerID) { OnMinerComeToFocus.Invoke(); } else if (_prevInFocus == playerID) { OnMinerLeaveFocus.Invoke(); } } _prevInFocus = GameData.Instance.playerInFocus; //Debug if (Input.GetKeyUp(KeyCode.R)) //TODO: remove input { SeekRock(); } if (GameData.Instance.playerFloors[playerID][GameData.Instance.playerMineLocations[playerID]] != _savedFloor) { _savedFloor = GameData.Instance.playerFloors[playerID][GameData.Instance.playerMineLocations[playerID]]; OnFloorChange.Invoke(); } //Is Stuck Check only occurs if player isnt breakinga block if (!_breakingBlock) { Debug.Log("Player " + playerID + " is not breaking a block"); if (IsStandingStill(_previousPos, transform.position)) { _stuckTimer -= Time.deltaTime; } else { _stuckTimer = 3f; } if (_stuckTimer < 0) { if (_stuckNumber > 5) { Debug.Log("Player " + playerID + " has been stuck a while"); SeekRock(); _stuckNumber = 0; } else { Debug.Log("Player " + playerID + " is stuck"); _stuckTimer = 3f; _isStuck = true; AStarMapController.RequestScan(); DetermineNewTarget(); _isStuck = false; _stuckNumber++; } } } _previousPos = transform.position; GameData.Instance.playerLocalLocations[playerID] = transform.localPosition; }