public void UpdateState(ref IState nextState) { timer += Time.deltaTime; if (timer > mineRate) { int extracted = currentMine.ExtractResources(mineAmount); miner.AddResources(extracted); if (extracted != 0) { timer = 0f; } else { miner.moving.nextState = miner.depositing; miner.moving.destination = miner.deposit.transform.position; nextState = miner.moving; } } }