/src/main/java/edu/uci/wmp/lineup/fragments/GetReady.java

https://gitlab.com/14cpark/wmp-lab-lineup · Java · 120 lines · 95 code · 18 blank · 7 comment · 7 complexity · 2d091d5ca4adb66d8c8a128dd52987bf MD5 · raw file

  1. package edu.uci.wmp.lineup.fragments;
  2. import android.content.Context;
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.os.Handler;
  7. import android.os.SystemClock;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.util.Log;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.ImageView;
  14. import android.widget.TextView;
  15. import edu.uci.wmp.lineup.LevelManager;
  16. import edu.uci.wmp.lineup.R;
  17. import edu.uci.wmp.lineup.Util;
  18. public class GetReady extends Fragment implements View.OnClickListener {
  19. TextView tvGetReady;
  20. TextView tvLevelRoundDebug;
  21. ImageView ivReadyNext;
  22. final int READY_SHOW_BUTTON_TIME = 1; // when to show next button in seconds
  23. final long BLANK_SCREEN = 500; // showing blank screen in milliseconds
  24. long readyStartTime;
  25. long startBlankScreenTime;
  26. private Handler handler = new Handler();
  27. private Runnable showButton = new Runnable() {
  28. @Override
  29. public void run() {
  30. long timeInMills = SystemClock.uptimeMillis() - readyStartTime;
  31. int seconds = (int) timeInMills / 1000;
  32. if (seconds >= READY_SHOW_BUTTON_TIME) {
  33. ivReadyNext.setVisibility(View.VISIBLE);
  34. } else {
  35. handler.postDelayed(this, 0); // loop until button is visible
  36. }
  37. }
  38. };
  39. /**
  40. * Once player clicks Next, display a blank screen for BLANK_SCREEN milliseconds
  41. */
  42. private Runnable blankScreen = new Runnable() {
  43. @Override
  44. public void run() {
  45. long timeInMills = SystemClock.uptimeMillis() - startBlankScreenTime;
  46. if (timeInMills >= BLANK_SCREEN)
  47. Util.loadFragment((AppCompatActivity) getActivity(), new Stage1());
  48. else {
  49. tvGetReady.setVisibility(View.INVISIBLE);
  50. ivReadyNext.setVisibility(View.INVISIBLE);
  51. handler.postDelayed(this, 0);
  52. }
  53. }
  54. };
  55. public GetReady() {
  56. // Required empty public constructor
  57. }
  58. @Override
  59. public void onCreate(Bundle savedInstanceState) {
  60. super.onCreate(savedInstanceState);
  61. LevelManager.getInstance().part = LevelManager.GETREADY;
  62. Util.setActivityBackground(getContext()); // set to theme background
  63. if (LevelManager.getInstance() != null) {
  64. LevelManager.getInstance().startLevel();
  65. LevelManager.getInstance().logVariables();
  66. }
  67. else
  68. Log.e("Stage 1 lm", "level manager is null!");
  69. readyStartTime = SystemClock.uptimeMillis();
  70. }
  71. @Override
  72. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  73. View view = inflater.inflate(R.layout.fragment_get_ready, container, false);
  74. tvGetReady = (TextView) view.findViewById(R.id.tvGetReady);
  75. tvLevelRoundDebug = (TextView) view.findViewById(R.id.tvLevelRoundDebug);
  76. ivReadyNext = (ImageView) view.findViewById(R.id.ivReadyGo);
  77. String readyPrompt = String.format("Get ready for level %d!", LevelManager.getInstance().level);
  78. tvGetReady.setText(readyPrompt);
  79. ivReadyNext.setVisibility(View.GONE); // hide button for 1 second
  80. ivReadyNext.setOnClickListener(this);
  81. toggleDebug(LevelManager.getInstance().debug);
  82. handler.postDelayed(showButton, 0);
  83. return view;
  84. }
  85. private void toggleDebug(boolean onOff) {
  86. if (!onOff)
  87. return;
  88. String msg = "sessionLevels: " + LevelManager.getInstance().sessionLevels +
  89. "\nrepetitions: " + LevelManager.getInstance().repetitions +
  90. "\ncurrent trial: " + LevelManager.getInstance().round +
  91. "\ntrials left: " + (LevelManager.getInstance().repetitions - LevelManager.getInstance().round);
  92. tvLevelRoundDebug.setText(msg);
  93. // Log.d("sessionLevels", "" + LevelManager.getInstance().sessionLevels);
  94. // Log.d("repetitions", "" + LevelManager.getInstance().repetitions);
  95. // Log.d("current round", "" + LevelManager.getInstance().round);
  96. }
  97. @Override
  98. public void onClick(View v) {
  99. startBlankScreenTime = SystemClock.uptimeMillis();
  100. handler.postDelayed(blankScreen, 0);
  101. }
  102. }