diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3ed4760..d529d7c 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -4,7 +4,7 @@ plugins {
android {
namespace = "com.example.myapplication"
- compileSdk = 35
+ compileSdk = 36
signingConfigs {
getByName("debug") {
diff --git a/app/src/main/java/com/example/myapplication/EndGame.java b/app/src/main/java/com/example/myapplication/EndGame.java
index 6187085..af1b274 100644
--- a/app/src/main/java/com/example/myapplication/EndGame.java
+++ b/app/src/main/java/com/example/myapplication/EndGame.java
@@ -12,10 +12,11 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
-import android.widget.TextView;
+import android.widget.RadioButton;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
+import androidx.navigation.fragment.NavHostFragment;
import com.example.myapplication.databinding.EndGameBinding;
@@ -24,10 +25,7 @@ public class EndGame extends Fragment {
private EndGameBinding binding;
ViewGroup v = null;
- // Climb level selection
-
- // Star rating
- private int currentRating = 4; // Default 4 stars
+ private int currentRating = 0;
private ImageView[] stars;
@SuppressLint("SetTextI18n")
@@ -40,7 +38,6 @@ public View onCreateView(
binding = EndGameBinding.inflate(inflater, container, false);
v = container;
- // Initialize star array
stars = new ImageView[]{
binding.star1,
binding.star2,
@@ -49,6 +46,12 @@ public View onCreateView(
binding.star5
};
+ binding.rbNone.setButtonDrawable(null);
+ binding.rbFail.setButtonDrawable(null);
+ binding.rbL1.setButtonDrawable(null);
+ binding.rbL2.setButtonDrawable(null);
+ binding.rbL3.setButtonDrawable(null);
+
return binding.getRoot();
}
@@ -56,19 +59,34 @@ public View onCreateView(
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- // Setup climb level toggle buttons
+
+ binding.ivLogo.setOnClickListener(view12 -> NavHostFragment.findNavController(EndGame.this)
+ .navigate(R.id.action_SecondFragment2_to_SecondFragment));
+
+ MatchData data = UserModel.getMatchData();
+
setupClimbLevelButtons();
- // Setup sliders
setupSliders();
- // Setup star rating
setupStarRating();
- // Reset button
- binding.tvReset.setOnClickListener(v -> resetAllFields());
+ ((RadioButton) binding.radioGroupClimbLevel.getChildAt(data.getTeleOpClimb())).setChecked(true);
+ binding.sliderDefense.setValue(data.getDefDuration());
+ binding.sliderUnderDefense.setValue(data.getunderDefDuration());
+ binding.sliderBroke.setValue(data.getBrokeDuration());
+ currentRating = data.getDefEffectiveness();
+ updateStars(currentRating);
+ updateQualityBadge(currentRating);
+ binding.tvDefenseValue.setText(String.valueOf(data.getDefDuration()));
+ binding.tvUnderDefenseValue.setText(String.valueOf(data.getunderDefDuration()));
+ binding.tvBrokeValue.setText(String.valueOf(data.getBrokeDuration()));
+ binding.etMatchNotes.setText(data.getNotes());
+
+ binding.tvTitle.setText("Endgame Team " + data.getTeamNumber());
+
+ binding.tvReset.setOnClickListener(v -> UIHelpers.makeConfirmationAlert("Reset Data", "Do you want to reset all Endgame fields?", this::resetAllFields, () -> {}, getContext()));
- // Match notes input
binding.etMatchNotes.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@@ -79,92 +97,78 @@ public void onTextChanged(CharSequence s, int start, int before, int count) {}
@SuppressLint("SetTextI18n")
@Override
public void afterTextChanged(Editable s) {
- // Save notes to your data model
- // UserModel.getMatchData().setNotes(s.toString());
+ data.setNotes(s.toString());
}
});
- // Submit button
binding.btnSubmit.setOnClickListener(view1 -> UIHelpers.makeConfirmationAlert("Submit Match Data",
"Do you want to submit your match data?", () -> {
+ try {
+ data.toJson();
+ } catch (Exception e) {
+ UIHelpers.makeHelpAlert("Unknown Data Transfer Error!", e.getMessage(), getContext());
+ }
+ NavHostFragment.findNavController(EndGame.this).navigate(R.id.action_SecondFragment2_to_FirstFragment);
}, () -> {}, getContext()));
+
}
private void setupClimbLevelButtons() {
- TextView[] buttons = {
- binding.btnNone,
- binding.btnFail,
- binding.btnL1,
- binding.btnL2,
- binding.btnL3
- };
+ MatchData data = UserModel.getMatchData();
+ ((RadioButton) binding.radioGroupClimbLevel.getChildAt(data.getTeleOpClimb())).setChecked(true);
- for (int i = 0; i < buttons.length; i++) {
- final int index = i;
- buttons[i].setOnClickListener(v -> updateClimbButtons(buttons, index));
- }
-
- // Set initial selection (L3 is selected by default)
- updateClimbButtons(buttons, 4);
+ binding.radioGroupClimbLevel.setOnCheckedChangeListener((r, i) -> {
+ int selectedIndex = binding.radioGroupClimbLevel.indexOfChild(binding.radioGroupClimbLevel.findViewById(i));
+ data.setTeleOpClimb(selectedIndex);
+ });
}
- private void updateClimbButtons(TextView[] buttons, int selectedIndex) {
- for (int i = 0; i < buttons.length; i++) {
- if (i == selectedIndex) {
- // Selected state
- buttons[i].setBackgroundResource(R.drawable.cr6b0d59f2);
- buttons[i].setTextColor(Color.WHITE);
- buttons[i].setTypeface(null, android.graphics.Typeface.BOLD);
- buttons[i].setElevation(4f);
- } else {
- // Unselected state
- buttons[i].setBackground(null);
- buttons[i].setTextColor(Color.parseColor("#94A3B8"));
- buttons[i].setTypeface(null, android.graphics.Typeface.NORMAL);
- buttons[i].setElevation(0f);
- }
- }
- }
private void setupSliders() {
- // Defense Duration Slider
- binding.sliderDefense.addOnChangeListener((slider, value, fromUser) -> binding.tvDefenseValue.setText(String.valueOf((int) value)));
+ MatchData data = UserModel.getMatchData();
- // Under Defense Slider
- binding.sliderUnderDefense.addOnChangeListener((slider, value, fromUser) -> binding.tvUnderDefenseValue.setText(String.valueOf((int) value)));
+ binding.sliderDefense.addOnChangeListener((slider, value, fromUser) -> {
+ binding.tvDefenseValue.setText(String.valueOf((int) value));
+ data.setDefDuration((int) value);
+ });
+
+ binding.sliderUnderDefense.addOnChangeListener((slider, value, fromUser) -> {
+ binding.tvUnderDefenseValue.setText(String.valueOf((int) value));
+ data.setunderDefDuration((int) value);
+ });
- // Broke Duration Slider
- binding.sliderBroke.addOnChangeListener((slider, value, fromUser) -> binding.tvBrokeValue.setText(String.valueOf((int) value)));
+ binding.sliderBroke.addOnChangeListener((slider, value, fromUser) -> {
+ binding.tvBrokeValue.setText(String.valueOf((int) value));
+ data.setBrokeDuration((int) value);
+ });
}
private void setupStarRating() {
- // Set initial rating
+ MatchData data = UserModel.getMatchData();
+
updateStars(currentRating);
- // Add click listeners to stars
for (int i = 0; i < stars.length; i++) {
final int rating = i + 1;
stars[i].setOnClickListener(v -> {
currentRating = rating;
updateStars(rating);
updateQualityBadge(rating);
+ data.setDefEffectiveness(rating);
});
}
- // Set initial badge
updateQualityBadge(currentRating);
}
private void updateStars(int rating) {
for (int i = 0; i < stars.length; i++) {
if (i < rating) {
- // Filled star
stars[i].setImageResource(android.R.drawable.btn_star_big_on);
stars[i].setColorFilter(Color.parseColor("#0D59F2"), PorterDuff.Mode.SRC_IN);
} else {
- // Empty star
stars[i].setImageResource(android.R.drawable.btn_star_big_off);
stars[i].setColorFilter(Color.parseColor("#4A5568"), PorterDuff.Mode.SRC_IN);
}
@@ -197,28 +201,27 @@ private void updateQualityBadge(int rating) {
}
private void resetAllFields() {
- // Reset climb level to default
- TextView[] buttons = {
- binding.btnNone,
- binding.btnFail,
- binding.btnL1,
- binding.btnL2,
- binding.btnL3
- };
- updateClimbButtons(buttons, 4);
+ MatchData data = UserModel.getMatchData();
+
+ ((RadioButton) binding.radioGroupClimbLevel.getChildAt(0)).setChecked(true);
+ data.setTeleOpClimb(0);
+
+ binding.sliderDefense.setValue(0);
+ data.setDefDuration(0);
- // Reset sliders
- binding.sliderDefense.setValue(30);
binding.sliderUnderDefense.setValue(0);
+ data.setunderDefDuration(0);
+
binding.sliderBroke.setValue(0);
+ data.setBrokeDuration(0);
- // Reset star rating
- currentRating = 4;
+ currentRating = 0;
updateStars(currentRating);
updateQualityBadge(currentRating);
+ data.setDefEffectiveness(0);
- // Clear notes
binding.etMatchNotes.setText("");
+ data.setNotes("");
}
diff --git a/app/src/main/java/com/example/myapplication/MatchData.java b/app/src/main/java/com/example/myapplication/MatchData.java
index 3ea687f..21b3590 100644
--- a/app/src/main/java/com/example/myapplication/MatchData.java
+++ b/app/src/main/java/com/example/myapplication/MatchData.java
@@ -21,7 +21,7 @@ public class MatchData {
private int teleOpHub, teleOpHubMissed, teleOpPassed, teleOpClimb = 0;
- private double defEffectiveness = 0.0;
+ private int defEffectiveness = 0;
private int defDuration, brokeDuration, underDefDuration = 0;
@@ -80,11 +80,11 @@ public void setDefDuration(int defDuration) {
public void setunderDefDuration(int underDefDuration){this.underDefDuration = underDefDuration;}
- public double getDefEffectiveness() {
+ public int getDefEffectiveness() {
return defEffectiveness;
}
- public void setDefEffectiveness(double defEffectiveness) {this.defEffectiveness = defEffectiveness; }
+ public void setDefEffectiveness(int defEffectiveness) {this.defEffectiveness = defEffectiveness; }
public int getBrokeDuration() {
return brokeDuration;
diff --git a/app/src/main/res/layout/end_game.xml b/app/src/main/res/layout/end_game.xml
index 1e4a798..25118b9 100644
--- a/app/src/main/res/layout/end_game.xml
+++ b/app/src/main/res/layout/end_game.xml
@@ -7,12 +7,62 @@
android:layout_height="match_parent"
android:background="#FFFFFF">
-
+
+
+
+
+
+
+
+
+
@@ -20,45 +70,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#101622"
- android:paddingBottom="16dp">
-
-
-
-
-
-
-
+ android:paddingBottom="24dp">
+ app:layout_constraintTop_toTopOf="parent" />
@@ -139,16 +154,17 @@
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="How high it climbed."
+ android:fontFamily="@font/interbold"
android:textColor="#94A3B8"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/ivClimbIcon"
app:layout_constraintTop_toBottomOf="@id/tvClimbLevelTitle" />
-
-
+ android:button="@null"
+ android:background="@drawable/radio_button_bg" />
-
+ android:button="@null"
+ android:background="@drawable/radio_button_bg" />
-
+ android:button="@null"
+ android:textStyle="bold"
+ android:fontFamily="@font/interbold"
+ android:textColor="#FFFFFF"
+ android:background="@drawable/radio_button_bg" />
-
+ android:textStyle="bold"
+ android:fontFamily="@font/interbold"
+ android:textColor="#FFFFFF" android:textSize="14sp"
+ android:button="@null"
+ android:background="@drawable/radio_button_bg" />
-
-
+
@@ -244,6 +268,7 @@
android:textColor="#94A3B8"
android:textSize="12sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
android:textAllCaps="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardClimbLevel" />
@@ -287,6 +312,7 @@
android:textColor="#FFFFFF"
android:textSize="18sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toEndOf="@id/ivDefenseIcon"
app:layout_constraintTop_toTopOf="@id/ivDefenseIcon" />
@@ -297,6 +323,7 @@
android:layout_marginStart="8dp"
android:text="Duration in seconds"
android:textColor="#94A3B8"
+ android:fontFamily="@font/interbold"
android:textSize="14sp"
app:layout_constraintStart_toEndOf="@id/tvDefenseTitle"
app:layout_constraintBottom_toBottomOf="@id/tvDefenseTitle" />
@@ -332,6 +359,7 @@
android:textColor="#FFFFFF"
android:textSize="20sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -369,6 +397,7 @@
android:textColor="#94A3B8"
android:textSize="12sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
android:textAllCaps="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardDefenseDuration" />
@@ -412,6 +441,7 @@
android:textColor="#FFFFFF"
android:textSize="16sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toEndOf="@id/ivQualityIcon"
app:layout_constraintTop_toTopOf="@id/ivQualityIcon"
app:layout_constraintBottom_toBottomOf="@id/ivQualityIcon" />
@@ -427,6 +457,7 @@
android:textColor="#0D59F2"
android:textSize="10sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/ivQualityIcon"
app:layout_constraintBottom_toBottomOf="@id/ivQualityIcon" />
@@ -514,6 +545,7 @@
android:textColor="#94A3B8"
android:textSize="12sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
android:textAllCaps="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardQualitative" />
@@ -557,6 +589,7 @@
android:textColor="#FFFFFF"
android:textSize="18sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toEndOf="@id/ivUnderDefenseIcon"
app:layout_constraintTop_toTopOf="@id/ivUnderDefenseIcon" />
@@ -566,6 +599,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Duration in seconds"
+ android:fontFamily="@font/interbold"
android:textColor="#94A3B8"
android:textSize="14sp"
app:layout_constraintStart_toEndOf="@id/tvUnderDefenseTitle"
@@ -601,6 +635,7 @@
android:textColor="#FFFFFF"
android:textSize="20sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -638,6 +673,7 @@
android:textColor="#94A3B8"
android:textSize="12sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
android:textAllCaps="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardUnderDefense" />
@@ -681,6 +717,7 @@
android:textColor="#FFFFFF"
android:textSize="18sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toEndOf="@id/ivBrokeIcon"
app:layout_constraintTop_toTopOf="@id/ivBrokeIcon" />
@@ -690,6 +727,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Duration in seconds"
+ android:fontFamily="@font/interbold"
android:textColor="#94A3B8"
android:textSize="14sp"
app:layout_constraintStart_toEndOf="@id/tvBrokeTitle"
@@ -725,6 +763,7 @@
android:textColor="#FFFFFF"
android:textSize="20sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -762,6 +801,7 @@
android:textColor="#94A3B8"
android:textSize="12sp"
android:textStyle="bold"
+ android:fontFamily="@font/interbold"
android:textAllCaps="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardBrokeDuration" />
@@ -815,29 +855,39 @@
-
-
-
-
+
+
+
+
+
\ No newline at end of file