Beispiel #1
0
    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();
 }
Beispiel #3
0
    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;
    }