From ae5f073996625779d191002c94d6e2e608afe35a Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 18 Jan 2015 19:20:29 +0000 Subject: [PATCH] Major refactoring work to minimize tables in BridgeCompute class. --- app/src/main/java/net/jacekk/bridge/android/MainActivity.java | 85 ++++++++++++++++++------------------------ 1 files changed, 37 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/net/jacekk/bridge/android/MainActivity.java b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java index 9c60f4e..eb1677f 100644 --- a/app/src/main/java/net/jacekk/bridge/android/MainActivity.java +++ b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java @@ -10,9 +10,11 @@ import android.widget.TextView; import android.widget.ToggleButton; -import net.jacekk.bridge.R; import net.jacekk.bridge.BridgeCompute; +import net.jacekk.bridge.BridgeInput; +import net.jacekk.bridge.BridgeInputException; import net.jacekk.bridge.BridgeResult; +import net.jacekk.bridge.R; public class MainActivity extends Activity { private SeekBar BidSlider; @@ -34,7 +36,7 @@ private EditText PCInput; private EditText TricksInput; - private TextView resultText; + private TextView ResultsText; public BridgeCompute bridgeCompute; @@ -49,15 +51,14 @@ InitializeApp(); } - @Override - public void onBackPressed() { - // Reset + private void resetInputs() { BidSlider.setProgress(0); MinorSuitsToggle.setChecked(true); ContractToggle.setChecked(true); NNToggle.setChecked(true); PCInput.setText(""); TricksInput.setText(""); + ResultsText.setText(getString(R.string.enter_data)); } private void InitializeApp() { @@ -82,7 +83,7 @@ PCInput = (EditText) findViewById(R.id.PCInput); TricksInput = (EditText) findViewById(R.id.TricksInput); - resultText = (TextView) findViewById(R.id.ResultsText); + ResultsText = (TextView) findViewById(R.id.ResultsText); CompoundButton.OnCheckedChangeListener changeListener; @@ -203,6 +204,27 @@ } public void updateResults() { + BridgeInput input = getBridgeInput(); + + BridgeResult result; + try { + result = bridgeCompute.getResultForInput(input); + } catch (BridgeInputException e) { + int errorStringId = BridgeInputExceptionMapper.map(e); + ResultsText.setText(getString(errorStringId)); + return; + } + + ResultsText.setText( + (result.winners == BridgeResult.Side.We ? getString(R.string.result_for_us) + : getString(R.string.result_for_them)) + + "\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore + + "\n" + getString(R.string.result_pts) + " " + result.points + + "\n" + getString(R.string.result_imps) + " " + result.IMPs + + "\n" + getString(R.string.result_percent) + " " + result.percent); + } + + private BridgeInput getBridgeInput() { int bid = BidSlider.getProgress(); int color = 0; @@ -237,47 +259,14 @@ } catch (NumberFormatException ignored) { } - if (bid < 0 || bid > 7) { - resultText.setText(getString(R.string.invalid_bid)); - return; - } - - if (color != 0 && color != 1 && color != 2) { - resultText.setText(getString(R.string.invalid_color)); - return; - } - - if (dbl < 0 || dbl > 2) { - resultText.setText(getString(R.string.invalid_dbl)); - return; - } - - if (vulnerability < 0 || vulnerability > 3) { - resultText.setText(getString(R.string.invalid_baba)); - return; - } - - if (PC < 0 || PC > 40) { - resultText.setText(getString(R.string.invalid_pc)); - return; - } - - if (tricks < 0 || tricks > 13) { - resultText.setText(getString(R.string.invalid_tricks)); - return; - } - - if (bid == 0 && PC < 20) { - resultText.setText(getString(R.string.invalid_pass)); - return; - } - - BridgeResult result = bridgeCompute.compute(bid, color, dbl, vulnerability, PC, tricks); - resultText.setText( - (result.pointsFor == BridgeResult.PointsFor.Us ? getString(R.string.result_for_us) : getString(R.string.result_for_them)) + - "\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore + - "\n" + getString(R.string.result_pts) + " " + result.points + - "\n" + getString(R.string.result_imps) + " " + result.IMPs + - "\n" + getString(R.string.result_percent) + " " + result.percent); + BridgeInput input = new BridgeInput(); + input.bid = bid; + input.suit = BridgeInput.Suit.values()[color]; + input.contract = BridgeInput.Contract.values()[dbl]; + input.weVulnerable = vulnerability / 2 >= 1; + input.theyVulnerable = vulnerability % 2 >= 1; + input.PC = PC; + input.tricks = tricks; + return input; } } -- Gitblit v1.9.1