Created
October 7, 2018 00:07
-
-
Save WillWetzelCMS/15067df8b117cc9a8a0364aca5cbc19a to your computer and use it in GitHub Desktop.
ChipCount
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.ImageButton; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackChip extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_chip); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Setting saved values from setup page | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
//Sets up number of players specified in homepage | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
TextView fundsView = (TextView)findViewById(R.id.playerFundsVar); | |
double funds = playerArray[playerCount].getPlayerFunds(); | |
fundsView.setText(Double.toString(funds)); | |
TextView whiteView = (TextView)findViewById(R.id.bcWhiteBet); | |
whiteView.setText(Double.toString(blackjack.getWhiteValue())); | |
TextView blueView = (TextView)findViewById(R.id.bcBlueBet); | |
blueView.setText(Double.toString(blackjack.getBlueValue())); | |
TextView greenView = (TextView)findViewById(R.id.bcGreenBet); | |
greenView.setText(Double.toString(blackjack.getGreenValue())); | |
TextView redView = (TextView)findViewById(R.id.bcRedBet); | |
redView.setText(Double.toString(blackjack.getRedValue())); | |
String NumberOfPlayers = Integer.toString(blackjack.getMaxPlayers()); | |
final int maxPlayers = Integer.parseInt(NumberOfPlayers); | |
//Setting up Betting buttons so they add to total bet | |
ImageButton whiteBet = (ImageButton)findViewById(R.id.bjWhiteBet); | |
whiteBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getWhiteValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton blueBet = (ImageButton)findViewById(R.id.bjBlueBet); | |
blueBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getBlueValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton greenBet = (ImageButton)findViewById(R.id.bjGreenBet); | |
greenBet.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getGreenValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton redBet = (ImageButton)findViewById(R.id.bjRedBet); | |
redBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getRedValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
//Setting up Next/Prev player buttons | |
Button nextPlayer = (Button)findViewById(R.id.nextPlayer); | |
nextPlayer.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
//After clicking nextplayer, refresh pot, save player funds, update player_turn | |
//Updating Total Pot and Resetting Betting amount | |
TextView tempPot = (TextView)findViewById(R.id.pot); | |
String tempPotString = tempPot.getText().toString(); | |
if(tempPotString.isEmpty()){ | |
tempPotString = "0"; | |
} | |
double totalPot = Double.parseDouble((tempPotString)); | |
TextView edittotalBet = (TextView)findViewById(R.id.yourBetSize); | |
String totalBet = edittotalBet.getText().toString(); | |
if (totalBet.isEmpty()) { | |
totalBet = "0"; | |
} | |
double totalBetDouble = Double.parseDouble(totalBet); | |
totalPot += totalBetDouble; | |
String newPot = String.valueOf(totalPot); | |
tempPot.setText(newPot); | |
edittotalBet.setText("0"); | |
//Refresh Player Funds for their next turn | |
double newPlayerFunds = playerArray[playerCount].getPlayerFunds() - totalBetDouble; | |
playerArray[playerCount].setPlayerFunds(newPlayerFunds); | |
playerArray[playerCount].setPlayerBet(totalBetDouble); | |
//Updating Player Turn/funds viewtext | |
playerCount++; | |
if (!(playerCount < maxPlayers)) { | |
playerCount = 0; | |
//If playerCount is at max, goto results page | |
Intent blackResults = new Intent(v.getContext(), BlackJackResults.class); | |
blackResults.putExtra("playerList", playerArray); | |
blackResults.putExtra("blackjack", blackjack); | |
startActivity(blackResults); | |
} | |
TextView viewCurrentPlayer = (TextView)findViewById(R.id.playerTurn); | |
String playerTurnString; | |
switch (playerCount) { | |
case 0: playerTurnString = "Player One:"; | |
break; | |
case 1: playerTurnString = "Player Two:"; | |
break; | |
case 2: playerTurnString = "Player Three:"; | |
break; | |
case 3: playerTurnString = "Player Four:"; | |
break; | |
case 4: playerTurnString = "Player Five:"; | |
break; | |
case 5: playerTurnString = "Player Six:"; | |
break; | |
default: playerTurnString = "Error"; | |
break; | |
} | |
viewCurrentPlayer.setText(playerTurnString); | |
TextView viewTotalFunds = (TextView)findViewById(R.id.playerFundsVar); | |
double playerFunds = playerArray[playerCount].getPlayerFunds(); | |
viewTotalFunds.setText(String.valueOf(playerFunds)); | |
} | |
})); | |
Button endGame = (Button)findViewById(R.id.blackEndGame); | |
endGame.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
//Goto endgame screen | |
Intent blackEnd = new Intent(v.getContext(), BlackJackEndGame.class); | |
blackEnd.putExtra("playerList", playerArray); | |
blackEnd.putExtra("blackjack", blackjack); | |
startActivity(blackEnd); | |
} | |
})); | |
} | |
} | |
/* | |
EditText editMin = (EditText)findViewById(R.id.minNum); | |
String minBet = editMin.getText().toString(); | |
*/ | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackEndGame extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_end_game); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Retrieve player array from Game | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
for(playerCount = 0; playerCount < blackjack.getMaxPlayers(); playerCount ++) { | |
switch (playerCount) { | |
case 0: TextView viewOne = (TextView)findViewById(R.id.endOne); | |
String fundsOne = Double.toString(playerArray[0].getPlayerFunds()); | |
viewOne.setText(fundsOne); | |
break; | |
case 1: TextView viewTwo = (TextView)findViewById(R.id.endTwo); | |
String fundsTwo = Double.toString(playerArray[1].getPlayerFunds()); | |
viewTwo.setText(fundsTwo); | |
break; | |
case 2: TextView viewThree = (TextView)findViewById(R.id.endThree); | |
String fundsThree = Double.toString(playerArray[2].getPlayerFunds()); | |
viewThree.setText(fundsThree); | |
break; | |
case 3: TextView viewFour = (TextView)findViewById(R.id.endFour); | |
String fundsFour = Double.toString(playerArray[3].getPlayerFunds()); | |
viewFour.setText(fundsFour); | |
break; | |
case 4: TextView viewFive = (TextView)findViewById(R.id.endFive); | |
String fundsFive = Double.toString(playerArray[4].getPlayerFunds()); | |
viewFive.setText(fundsFive); | |
break; | |
case 5: TextView viewSix = (TextView)findViewById(R.id.endSix); | |
String fundsSix = Double.toString(playerArray[5].getPlayerFunds()); | |
viewSix.setText(fundsSix); | |
break; | |
} | |
} | |
Button home = (Button)findViewById(R.id.homeButton); | |
home.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v) { | |
Intent goHome = new Intent(v.getContext(), HomePage.class); | |
startActivity(goHome); | |
} | |
})); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackResults extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_results); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Set Pot to show total pot that's been passed from previous class. | |
//Setup Array and add money to player funds if they win or just leave. | |
//Retrieve player array from Game | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
final int maxPlayers = blackjack.getMaxPlayers(); | |
//Setup Button Listeners | |
Button jackpot = (Button)findViewById(R.id.jackButton); | |
jackpot.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
/* | |
* If jackpot is clicked, player wins double their bet | |
* E.g: Hit 21 with the cards. (If betting £2, the player would receive their £2 back and an extra £4). | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
bet += bet += bet; | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button win = (Button)findViewById(R.id.winButton); | |
win.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v) { | |
/* | |
* If player wins, player wins their bet back | |
* E.g: Beat the dealer. Win double the bet. (If betting £2, the player would receive their £2 and an extra £2). | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
bet += bet; | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button draw = (Button)findViewById(R.id.drawButton); | |
draw.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
/* | |
* If player draws with dealer, they don't lose or win any money | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button bust = (Button)findViewById(R.id.bustButton); | |
bust.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
/* | |
* Dealer beat player so player loses bet. | |
*/ | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
} | |
public void refreshPlayerCount(Game blackjack, Player[] players, View v) { | |
//Set new Player turn | |
playerCount++; | |
if (!(playerCount < blackjack.getMaxPlayers())) { | |
playerCount = 0; | |
//If playerCount is at max, goto results page | |
Intent blackContinue = new Intent(v.getContext(), BlackJackChip.class); | |
blackContinue.putExtra("playerList", players); | |
blackContinue.putExtra("blackjack", blackjack); | |
startActivity(blackContinue); | |
} | |
TextView viewCurrentPlayer = (TextView)findViewById(R.id.playerTurn); | |
String playerTurnString; | |
switch (playerCount) { | |
case 0: playerTurnString = "Player One:"; | |
break; | |
case 1: playerTurnString = "Player Two:"; | |
break; | |
case 2: playerTurnString = "Player Three:"; | |
break; | |
case 3: playerTurnString = "Player Four:"; | |
break; | |
case 4: playerTurnString = "Player Five:"; | |
break; | |
case 5: playerTurnString = "Player Six:"; | |
break; | |
default: playerTurnString = "Error"; | |
break; | |
} | |
viewCurrentPlayer.setText(playerTurnString); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
public class BlackJackSetup extends AppCompatActivity { | |
Player[] playerArray; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_setup); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Storing BlackJack Setup fields | |
Button blackStart = (Button) findViewById(R.id.blackjack_start); | |
blackStart.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View view) { | |
// Retrieve and save all user set values | |
EditText editFunds = (EditText)findViewById(R.id.fundsnum); | |
String funds = editFunds.getText().toString(); | |
Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
playerArray = setUpPlayers(blackjack.getMaxPlayers(), Double.parseDouble(funds)); | |
EditText editMin = (EditText)findViewById(R.id.minNum); | |
String minBet = editMin.getText().toString(); | |
EditText editwhite = (EditText)findViewById(R.id.white_chip_value_blackjack); | |
String whiteChip = editwhite.getText().toString(); | |
blackjack.setWhiteValue(Double.parseDouble(whiteChip)); | |
EditText editBlue = (EditText)findViewById(R.id.blue_chip_value_blackjack); | |
String blueChip = editBlue.getText().toString(); | |
blackjack.setBlueValue(Double.parseDouble(blueChip)); | |
EditText editGreen = (EditText)findViewById(R.id.green_chip_value_blackjack); | |
String greenChip = editGreen.getText().toString(); | |
blackjack.setGreenValue(Double.parseDouble(greenChip)); | |
EditText editRed = (EditText)findViewById(R.id.red_chip_value_blackjack); | |
String redChip = editRed.getText().toString(); | |
blackjack.setRedValue(Double.parseDouble(redChip)); | |
//Start new Intent and send values to new page. Start Activity. | |
Intent blackStart = new Intent(view.getContext(), BlackJackChip.class); | |
blackStart.putExtra("blackjack", blackjack); | |
blackStart.putExtra("playerList", playerArray); | |
blackStart.putExtra("minBet", minBet); | |
startActivity(blackStart); | |
} | |
})); | |
} | |
public Player[] setUpPlayers(int maxPlayers, double funds) { | |
playerArray = new Player[maxPlayers]; | |
for(int i = 0; i < maxPlayers; i++) { | |
playerArray[i] = new Player(i+1, funds); | |
} | |
return playerArray; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.os.Parcel; | |
import android.os.Parcelable; | |
/** | |
* Stores max players, and all chip values for duration of the Game. | |
*/ | |
public class Game implements Parcelable { | |
private int maxPlayers; | |
private double whiteValue; | |
private double blueValue; | |
private double greenValue; | |
private double redValue; | |
public Game(int maxPlayers) { | |
this.maxPlayers = maxPlayers; | |
this.whiteValue = 0.50; | |
this.blueValue = 1.00; | |
this.greenValue = 5.00; | |
this.redValue = 10.00; | |
} | |
public Game(int maxPlayers, double whiteValue, double blueValue, double greenValue, double redValue) { | |
this.maxPlayers = maxPlayers; | |
this.whiteValue = whiteValue; | |
this.blueValue = blueValue; | |
this.greenValue = greenValue; | |
this.redValue = redValue; | |
} | |
protected Game(Parcel in) { | |
maxPlayers = in.readInt(); | |
whiteValue = in.readDouble(); | |
blueValue = in.readDouble(); | |
greenValue = in.readDouble(); | |
redValue = in.readDouble(); | |
} | |
public static final Creator<Game> CREATOR = new Creator<Game>() { | |
@Override | |
public Game createFromParcel(Parcel in) { | |
return new Game(in); | |
} | |
@Override | |
public Game[] newArray(int size) { | |
return new Game[size]; | |
} | |
}; | |
public void setMaxPlayers(int maxPlayers) { | |
this.maxPlayers = maxPlayers; | |
} | |
public int getMaxPlayers(){ | |
return maxPlayers; | |
} | |
public void setWhiteValue(double val) { | |
this.whiteValue = val; | |
} | |
public double getWhiteValue() { | |
return whiteValue; | |
} | |
public void setBlueValue(double val) { | |
this.blueValue = val; | |
} | |
public double getBlueValue() { | |
return blueValue; | |
} | |
public void setGreenValue(double val) { | |
this.greenValue = val; | |
} | |
public double getGreenValue() { | |
return greenValue; | |
} | |
public void setRedValue(double val) { | |
this.redValue = val; | |
} | |
public double getRedValue() { | |
return redValue; | |
} | |
@Override | |
public int describeContents() { | |
return 0; | |
} | |
@Override | |
public void writeToParcel(Parcel dest, int flags) { | |
dest.writeInt(maxPlayers); | |
dest.writeDouble(whiteValue); | |
dest.writeDouble(blueValue); | |
dest.writeDouble(greenValue); | |
dest.writeDouble(redValue); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
public class BlackJackSetup extends AppCompatActivity { | |
Player[] playerArray; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_setup); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Storing BlackJack Setup fields | |
Button blackStart = (Button) findViewById(R.id.blackjack_start); | |
blackStart.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View view) { | |
// Retrieve and save all user set values | |
EditText editFunds = (EditText)findViewById(R.id.fundsnum); | |
String funds = editFunds.getText().toString(); | |
Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
playerArray = setUpPlayers(blackjack.getMaxPlayers(), Double.parseDouble(funds)); | |
EditText editMin = (EditText)findViewById(R.id.minNum); | |
String minBet = editMin.getText().toString(); | |
EditText editwhite = (EditText)findViewById(R.id.white_chip_value_blackjack); | |
String whiteChip = editwhite.getText().toString(); | |
blackjack.setWhiteValue(Double.parseDouble(whiteChip)); | |
EditText editBlue = (EditText)findViewById(R.id.blue_chip_value_blackjack); | |
String blueChip = editBlue.getText().toString(); | |
blackjack.setBlueValue(Double.parseDouble(blueChip)); | |
EditText editGreen = (EditText)findViewById(R.id.green_chip_value_blackjack); | |
String greenChip = editGreen.getText().toString(); | |
blackjack.setGreenValue(Double.parseDouble(greenChip)); | |
EditText editRed = (EditText)findViewById(R.id.red_chip_value_blackjack); | |
String redChip = editRed.getText().toString(); | |
blackjack.setRedValue(Double.parseDouble(redChip)); | |
//Start new Intent and send values to new page. Start Activity. | |
Intent blackStart = new Intent(view.getContext(), BlackJackChip.class); | |
blackStart.putExtra("blackjack", blackjack); | |
blackStart.putExtra("playerList", playerArray); | |
blackStart.putExtra("minBet", minBet); | |
startActivity(blackStart); | |
} | |
})); | |
} | |
public Player[] setUpPlayers(int maxPlayers, double funds) { | |
playerArray = new Player[maxPlayers]; | |
for(int i = 0; i < maxPlayers; i++) { | |
playerArray[i] = new Player(i+1, funds); | |
} | |
return playerArray; | |
} | |
} | |
package com.example.chipcount; | |
import android.os.Parcel; | |
import android.os.Parcelable; | |
/** | |
* Stores max players, and all chip values for duration of the Game. | |
*/ | |
public class Game implements Parcelable { | |
private int maxPlayers; | |
private double whiteValue; | |
private double blueValue; | |
private double greenValue; | |
private double redValue; | |
public Game(int maxPlayers) { | |
this.maxPlayers = maxPlayers; | |
this.whiteValue = 0.50; | |
this.blueValue = 1.00; | |
this.greenValue = 5.00; | |
this.redValue = 10.00; | |
} | |
public Game(int maxPlayers, double whiteValue, double blueValue, double greenValue, double redValue) { | |
this.maxPlayers = maxPlayers; | |
this.whiteValue = whiteValue; | |
this.blueValue = blueValue; | |
this.greenValue = greenValue; | |
this.redValue = redValue; | |
} | |
protected Game(Parcel in) { | |
maxPlayers = in.readInt(); | |
whiteValue = in.readDouble(); | |
blueValue = in.readDouble(); | |
greenValue = in.readDouble(); | |
redValue = in.readDouble(); | |
} | |
public static final Creator<Game> CREATOR = new Creator<Game>() { | |
@Override | |
public Game createFromParcel(Parcel in) { | |
return new Game(in); | |
} | |
@Override | |
public Game[] newArray(int size) { | |
return new Game[size]; | |
} | |
}; | |
public void setMaxPlayers(int maxPlayers) { | |
this.maxPlayers = maxPlayers; | |
} | |
public int getMaxPlayers(){ | |
return maxPlayers; | |
} | |
public void setWhiteValue(double val) { | |
this.whiteValue = val; | |
} | |
public double getWhiteValue() { | |
return whiteValue; | |
} | |
public void setBlueValue(double val) { | |
this.blueValue = val; | |
} | |
public double getBlueValue() { | |
return blueValue; | |
} | |
public void setGreenValue(double val) { | |
this.greenValue = val; | |
} | |
public double getGreenValue() { | |
return greenValue; | |
} | |
public void setRedValue(double val) { | |
this.redValue = val; | |
} | |
public double getRedValue() { | |
return redValue; | |
} | |
@Override | |
public int describeContents() { | |
return 0; | |
} | |
@Override | |
public void writeToParcel(Parcel dest, int flags) { | |
dest.writeInt(maxPlayers); | |
dest.writeDouble(whiteValue); | |
dest.writeDouble(blueValue); | |
dest.writeDouble(greenValue); | |
dest.writeDouble(redValue); | |
} | |
} | |
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
public class HomePage extends AppCompatActivity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_home_page); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Setup Button for going to Black Jack Setup Page | |
Button blackSetup = (Button) findViewById(R.id.buttonBlackJack); | |
blackSetup.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
//Passing param of number of Players to blackJack Setup | |
EditText editnumOfPlayers = (EditText)findViewById(R.id.numberOfPlayers); | |
String numOfPlayers = editnumOfPlayers.getText().toString(); | |
int maxPlayers = Integer.parseInt(numOfPlayers); | |
Game blackjack = new Game(maxPlayers); | |
Intent blackSetup = new Intent(HomePage.this, BlackJackSetup.class); | |
blackSetup.putExtra("blackjack", blackjack); | |
startActivity(blackSetup); | |
} | |
})); | |
} | |
} | |
package com.example.chipcount; | |
import android.os.Parcel; | |
import android.os.Parcelable; | |
public class Player implements Parcelable{ | |
private int PlayerNumber; | |
private double PlayerFunds; | |
private double PlayerBet; | |
public Player(int number, double funds) { | |
PlayerNumber = number; | |
PlayerFunds = funds; | |
PlayerBet = 0; | |
} | |
protected Player(Parcel in) { | |
PlayerNumber = in.readInt(); | |
PlayerFunds = in.readDouble(); | |
PlayerBet = in.readDouble(); | |
} | |
//Used to regenerate player objects from parcelable package. | |
public static final Creator<Player> CREATOR = new Creator<Player>() { | |
@Override | |
public Player createFromParcel(Parcel in) { | |
return new Player(in); | |
} | |
@Override | |
public Player[] newArray(int size) { | |
return new Player[size]; | |
} | |
}; | |
@Override | |
public int describeContents() { | |
return 0; | |
} | |
//Implementing Parceable for passing between classes | |
@Override | |
public void writeToParcel(Parcel out, int flags) { | |
out.writeInt(PlayerNumber); | |
out.writeDouble(PlayerFunds); | |
out.writeDouble(PlayerBet); | |
} | |
//Getters and Setters | |
public void setNumber(int number) { | |
this.PlayerNumber = number; | |
} | |
public int getNumber() { | |
return PlayerNumber; | |
} | |
public void setPlayerFunds(double funds) { | |
this.PlayerFunds = funds; | |
} | |
public double getPlayerFunds() { | |
return PlayerFunds; | |
} | |
public void setPlayerBet(double bet) { this.PlayerBet = bet; } | |
public double getPlayerBet() { return PlayerBet; } | |
} | |
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.ImageButton; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackChip extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_chip); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Setting saved values from setup page | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
//Sets up number of players specified in homepage | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
TextView fundsView = (TextView)findViewById(R.id.playerFundsVar); | |
double funds = playerArray[playerCount].getPlayerFunds(); | |
fundsView.setText(Double.toString(funds)); | |
TextView whiteView = (TextView)findViewById(R.id.bcWhiteBet); | |
whiteView.setText(Double.toString(blackjack.getWhiteValue())); | |
TextView blueView = (TextView)findViewById(R.id.bcBlueBet); | |
blueView.setText(Double.toString(blackjack.getBlueValue())); | |
TextView greenView = (TextView)findViewById(R.id.bcGreenBet); | |
greenView.setText(Double.toString(blackjack.getGreenValue())); | |
TextView redView = (TextView)findViewById(R.id.bcRedBet); | |
redView.setText(Double.toString(blackjack.getRedValue())); | |
String NumberOfPlayers = Integer.toString(blackjack.getMaxPlayers()); | |
final int maxPlayers = Integer.parseInt(NumberOfPlayers); | |
//Setting up Betting buttons so they add to total bet | |
ImageButton whiteBet = (ImageButton)findViewById(R.id.bjWhiteBet); | |
whiteBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getWhiteValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton blueBet = (ImageButton)findViewById(R.id.bjBlueBet); | |
blueBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getBlueValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton greenBet = (ImageButton)findViewById(R.id.bjGreenBet); | |
greenBet.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getGreenValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
ImageButton redBet = (ImageButton)findViewById(R.id.bjRedBet); | |
redBet.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
TextView temptotal = (TextView)findViewById(R.id.yourBetSize); | |
String tempTotalBet = temptotal.getText().toString(); | |
if(tempTotalBet.isEmpty()){ | |
tempTotalBet = "0"; | |
} | |
double totalBet = Double.parseDouble((tempTotalBet)); | |
double currentBet = blackjack.getRedValue(); | |
totalBet += currentBet; | |
String newTotal = String.valueOf(totalBet); | |
temptotal.setText(newTotal); | |
} | |
})); | |
//Setting up Next/Prev player buttons | |
Button nextPlayer = (Button)findViewById(R.id.nextPlayer); | |
nextPlayer.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
//After clicking nextplayer, refresh pot, save player funds, update player_turn | |
//Updating Total Pot and Resetting Betting amount | |
TextView tempPot = (TextView)findViewById(R.id.pot); | |
String tempPotString = tempPot.getText().toString(); | |
if(tempPotString.isEmpty()){ | |
tempPotString = "0"; | |
} | |
double totalPot = Double.parseDouble((tempPotString)); | |
TextView edittotalBet = (TextView)findViewById(R.id.yourBetSize); | |
String totalBet = edittotalBet.getText().toString(); | |
if (totalBet.isEmpty()) { | |
totalBet = "0"; | |
} | |
double totalBetDouble = Double.parseDouble(totalBet); | |
totalPot += totalBetDouble; | |
String newPot = String.valueOf(totalPot); | |
tempPot.setText(newPot); | |
edittotalBet.setText("0"); | |
//Refresh Player Funds for their next turn | |
double newPlayerFunds = playerArray[playerCount].getPlayerFunds() - totalBetDouble; | |
playerArray[playerCount].setPlayerFunds(newPlayerFunds); | |
playerArray[playerCount].setPlayerBet(totalBetDouble); | |
//Updating Player Turn/funds viewtext | |
playerCount++; | |
if (!(playerCount < maxPlayers)) { | |
playerCount = 0; | |
//If playerCount is at max, goto results page | |
Intent blackResults = new Intent(v.getContext(), BlackJackResults.class); | |
blackResults.putExtra("playerList", playerArray); | |
blackResults.putExtra("blackjack", blackjack); | |
startActivity(blackResults); | |
} | |
TextView viewCurrentPlayer = (TextView)findViewById(R.id.playerTurn); | |
String playerTurnString; | |
switch (playerCount) { | |
case 0: playerTurnString = "Player One:"; | |
break; | |
case 1: playerTurnString = "Player Two:"; | |
break; | |
case 2: playerTurnString = "Player Three:"; | |
break; | |
case 3: playerTurnString = "Player Four:"; | |
break; | |
case 4: playerTurnString = "Player Five:"; | |
break; | |
case 5: playerTurnString = "Player Six:"; | |
break; | |
default: playerTurnString = "Error"; | |
break; | |
} | |
viewCurrentPlayer.setText(playerTurnString); | |
TextView viewTotalFunds = (TextView)findViewById(R.id.playerFundsVar); | |
double playerFunds = playerArray[playerCount].getPlayerFunds(); | |
viewTotalFunds.setText(String.valueOf(playerFunds)); | |
} | |
})); | |
Button endGame = (Button)findViewById(R.id.blackEndGame); | |
endGame.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
//Goto endgame screen | |
Intent blackEnd = new Intent(v.getContext(), BlackJackEndGame.class); | |
blackEnd.putExtra("playerList", playerArray); | |
blackEnd.putExtra("blackjack", blackjack); | |
startActivity(blackEnd); | |
} | |
})); | |
} | |
} | |
/* | |
EditText editMin = (EditText)findViewById(R.id.minNum); | |
String minBet = editMin.getText().toString(); | |
*/ | |
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackEndGame extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_end_game); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Retrieve player array from Game | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
for(playerCount = 0; playerCount < blackjack.getMaxPlayers(); playerCount ++) { | |
switch (playerCount) { | |
case 0: TextView viewOne = (TextView)findViewById(R.id.endOne); | |
String fundsOne = Double.toString(playerArray[0].getPlayerFunds()); | |
viewOne.setText(fundsOne); | |
break; | |
case 1: TextView viewTwo = (TextView)findViewById(R.id.endTwo); | |
String fundsTwo = Double.toString(playerArray[1].getPlayerFunds()); | |
viewTwo.setText(fundsTwo); | |
break; | |
case 2: TextView viewThree = (TextView)findViewById(R.id.endThree); | |
String fundsThree = Double.toString(playerArray[2].getPlayerFunds()); | |
viewThree.setText(fundsThree); | |
break; | |
case 3: TextView viewFour = (TextView)findViewById(R.id.endFour); | |
String fundsFour = Double.toString(playerArray[3].getPlayerFunds()); | |
viewFour.setText(fundsFour); | |
break; | |
case 4: TextView viewFive = (TextView)findViewById(R.id.endFive); | |
String fundsFive = Double.toString(playerArray[4].getPlayerFunds()); | |
viewFive.setText(fundsFive); | |
break; | |
case 5: TextView viewSix = (TextView)findViewById(R.id.endSix); | |
String fundsSix = Double.toString(playerArray[5].getPlayerFunds()); | |
viewSix.setText(fundsSix); | |
break; | |
} | |
} | |
Button home = (Button)findViewById(R.id.homeButton); | |
home.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v) { | |
Intent goHome = new Intent(v.getContext(), HomePage.class); | |
startActivity(goHome); | |
} | |
})); | |
} | |
} | |
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.os.Parcelable; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.TextView; | |
import java.util.Arrays; | |
public class BlackJackResults extends AppCompatActivity { | |
int playerCount = 0; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_black_jack_results); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Set Pot to show total pot that's been passed from previous class. | |
//Setup Array and add money to player funds if they win or just leave. | |
//Retrieve player array from Game | |
Parcelable[] parcelableArray = getIntent().getParcelableArrayExtra("playerList"); | |
final Player[] playerArray = Arrays.copyOf(parcelableArray, parcelableArray.length, Player[].class); | |
final Game blackjack = (Game) getIntent().getParcelableExtra("blackjack"); | |
final int maxPlayers = blackjack.getMaxPlayers(); | |
//Setup Button Listeners | |
Button jackpot = (Button)findViewById(R.id.jackButton); | |
jackpot.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
/* | |
* If jackpot is clicked, player wins double their bet | |
* E.g: Hit 21 with the cards. (If betting £2, the player would receive their £2 back and an extra £4). | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
bet += bet += bet; | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button win = (Button)findViewById(R.id.winButton); | |
win.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v) { | |
/* | |
* If player wins, player wins their bet back | |
* E.g: Beat the dealer. Win double the bet. (If betting £2, the player would receive their £2 and an extra £2). | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
bet += bet; | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button draw = (Button)findViewById(R.id.drawButton); | |
draw.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
/* | |
* If player draws with dealer, they don't lose or win any money | |
*/ | |
double bet = playerArray[playerCount].getPlayerBet(); | |
playerArray[playerCount].setPlayerFunds(playerArray[playerCount].getPlayerFunds() + bet); | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
Button bust = (Button)findViewById(R.id.bustButton); | |
bust.setOnClickListener((new View.OnClickListener(){ | |
public void onClick(View v) { | |
/* | |
* Dealer beat player so player loses bet. | |
*/ | |
playerArray[playerCount].setPlayerBet(0); | |
refreshPlayerCount(blackjack, playerArray, v); | |
} | |
})); | |
} | |
public void refreshPlayerCount(Game blackjack, Player[] players, View v) { | |
//Set new Player turn | |
playerCount++; | |
if (!(playerCount < blackjack.getMaxPlayers())) { | |
playerCount = 0; | |
//If playerCount is at max, goto results page | |
Intent blackContinue = new Intent(v.getContext(), BlackJackChip.class); | |
blackContinue.putExtra("playerList", players); | |
blackContinue.putExtra("blackjack", blackjack); | |
startActivity(blackContinue); | |
} | |
TextView viewCurrentPlayer = (TextView)findViewById(R.id.playerTurn); | |
String playerTurnString; | |
switch (playerCount) { | |
case 0: playerTurnString = "Player One:"; | |
break; | |
case 1: playerTurnString = "Player Two:"; | |
break; | |
case 2: playerTurnString = "Player Three:"; | |
break; | |
case 3: playerTurnString = "Player Four:"; | |
break; | |
case 4: playerTurnString = "Player Five:"; | |
break; | |
case 5: playerTurnString = "Player Six:"; | |
break; | |
default: playerTurnString = "Error"; | |
break; | |
} | |
viewCurrentPlayer.setText(playerTurnString); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.content.Intent; | |
import android.content.pm.ActivityInfo; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.EditText; | |
public class HomePage extends AppCompatActivity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_home_page); | |
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | |
//Setup Button for going to Black Jack Setup Page | |
Button blackSetup = (Button) findViewById(R.id.buttonBlackJack); | |
blackSetup.setOnClickListener((new View.OnClickListener() { | |
public void onClick(View v){ | |
//Passing param of number of Players to blackJack Setup | |
EditText editnumOfPlayers = (EditText)findViewById(R.id.numberOfPlayers); | |
String numOfPlayers = editnumOfPlayers.getText().toString(); | |
int maxPlayers = Integer.parseInt(numOfPlayers); | |
Game blackjack = new Game(maxPlayers); | |
Intent blackSetup = new Intent(HomePage.this, BlackJackSetup.class); | |
blackSetup.putExtra("blackjack", blackjack); | |
startActivity(blackSetup); | |
} | |
})); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.chipcount; | |
import android.os.Parcel; | |
import android.os.Parcelable; | |
public class Player implements Parcelable{ | |
private int PlayerNumber; | |
private double PlayerFunds; | |
private double PlayerBet; | |
public Player(int number, double funds) { | |
PlayerNumber = number; | |
PlayerFunds = funds; | |
PlayerBet = 0; | |
} | |
protected Player(Parcel in) { | |
PlayerNumber = in.readInt(); | |
PlayerFunds = in.readDouble(); | |
PlayerBet = in.readDouble(); | |
} | |
//Used to regenerate player objects from parcelable package. | |
public static final Creator<Player> CREATOR = new Creator<Player>() { | |
@Override | |
public Player createFromParcel(Parcel in) { | |
return new Player(in); | |
} | |
@Override | |
public Player[] newArray(int size) { | |
return new Player[size]; | |
} | |
}; | |
@Override | |
public int describeContents() { | |
return 0; | |
} | |
//Implementing Parceable for passing between classes | |
@Override | |
public void writeToParcel(Parcel out, int flags) { | |
out.writeInt(PlayerNumber); | |
out.writeDouble(PlayerFunds); | |
out.writeDouble(PlayerBet); | |
} | |
//Getters and Setters | |
public void setNumber(int number) { | |
this.PlayerNumber = number; | |
} | |
public int getNumber() { | |
return PlayerNumber; | |
} | |
public void setPlayerFunds(double funds) { | |
this.PlayerFunds = funds; | |
} | |
public double getPlayerFunds() { | |
return PlayerFunds; | |
} | |
public void setPlayerBet(double bet) { this.PlayerBet = bet; } | |
public double getPlayerBet() { return PlayerBet; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment