323 lines
9.4 KiB
Java
323 lines
9.4 KiB
Java
package fr.ynerant.tarot.ui.newgame;
|
|
|
|
import android.os.Bundle;
|
|
import android.preference.PreferenceManager;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ArrayAdapter;
|
|
import android.widget.Button;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.SeekBar;
|
|
import android.widget.Spinner;
|
|
import android.widget.SpinnerAdapter;
|
|
import android.widget.Switch;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.lifecycle.ViewModelProviders;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashSet;
|
|
import java.util.Locale;
|
|
|
|
import fr.ynerant.tarot.Game;
|
|
import fr.ynerant.tarot.MainActivity;
|
|
import fr.ynerant.tarot.Player;
|
|
import fr.ynerant.tarot.R;
|
|
import fr.ynerant.tarot.ui.home.HomeFragment;
|
|
|
|
public class NewGameFragment extends Fragment {
|
|
|
|
private NewGameViewModel newGameViewModel;
|
|
|
|
public View onCreateView(@NonNull LayoutInflater inflater,
|
|
ViewGroup container, Bundle savedInstanceState) {
|
|
newGameViewModel =
|
|
ViewModelProviders.of(this).get(NewGameViewModel.class);
|
|
final View root = inflater.inflate(R.layout.fragment_new_game, container, false);
|
|
|
|
if (PreferenceManager.getDefaultSharedPreferences(MainActivity.INSTANCE).getString("token", null) == null) {
|
|
//noinspection ConstantConditions
|
|
getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new HomeFragment(), "Se connecter").commit();
|
|
return root;
|
|
}
|
|
|
|
TextView textView = root.findViewById(R.id.text_new_game);
|
|
textView.setText(R.string.menu_new_game);
|
|
|
|
final SeekBar nb_players = root.findViewById(R.id.nb_players);
|
|
final Spinner player1 = root.findViewById(R.id.player1);
|
|
final Spinner player2 = root.findViewById(R.id.player2);
|
|
final Spinner player3 = root.findViewById(R.id.player3);
|
|
final Spinner player4 = root.findViewById(R.id.player4);
|
|
final Spinner player5 = root.findViewById(R.id.player5);
|
|
final Spinner player6 = root.findViewById(R.id.player6);
|
|
final LinearLayout player4_layout = root.findViewById(R.id.player4_layout);
|
|
final LinearLayout player5_layout = root.findViewById(R.id.player5_layout);
|
|
final LinearLayout player6_layout = root.findViewById(R.id.player6_layout);
|
|
|
|
//noinspection ConstantConditions
|
|
ArrayAdapter<Player> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, new ArrayList<>(Player.getAllPlayers()));
|
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
player1.setAdapter(adapter);
|
|
player2.setAdapter(adapter);
|
|
player3.setAdapter(adapter);
|
|
player4.setAdapter(adapter);
|
|
player5.setAdapter(adapter);
|
|
player6.setAdapter(adapter);
|
|
final Spinner[] spinners = new Spinner[]{player1, player2, player3, player4, player5, player6};
|
|
|
|
final SeekBar attack_points = root.findViewById(R.id.attack_score);
|
|
final SeekBar bet = root.findViewById(R.id.bet);
|
|
final SeekBar nb_ends = root.findViewById(R.id.nb_ends);
|
|
final Switch chelem_announced = root.findViewById(R.id.chelem_announced);
|
|
final Switch chelem_realized = root.findViewById(R.id.chelem_realized);
|
|
final SeekBar little_end = root.findViewById(R.id.little_end);
|
|
final SeekBar handle = root.findViewById(R.id.handle);
|
|
|
|
final Runnable updateScore = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
TextView textView = root.findViewById(R.id.nb_points);
|
|
Game game = new Game();
|
|
game.attackScore = attack_points.getProgress();
|
|
game.type = Game.GameType.getGameType(nb_players.getProgress() + 3);
|
|
game.players = new HashSet<>();
|
|
for (int i = 0; i < 3 + nb_players.getProgress(); ++i) {
|
|
game.players.add((Player) spinners[i].getSelectedItem());
|
|
}
|
|
game.bet = Game.Bet.values()[bet.getProgress()];
|
|
game.ends = nb_ends.getProgress();
|
|
game.chelemAnnounced = chelem_announced.isChecked();
|
|
game.chelemRealized = chelem_realized.isChecked();
|
|
game.littleForAttacker = little_end.getProgress() == 1;
|
|
game.littleForDefenser = little_end.getProgress() == 2;
|
|
game.handle = handle.getProgress();
|
|
|
|
|
|
textView.setText(String.format(Locale.getDefault(), "%d points (hors misères)", game.calculateScore()));
|
|
}
|
|
};
|
|
|
|
updateScore.run();
|
|
|
|
nb_players.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView nb_players_info = root.findViewById(R.id.nb_players_info);
|
|
int resource = R.string.players4;
|
|
switch (progress) {
|
|
case 0:
|
|
resource = R.string.players3;
|
|
break;
|
|
case 1:
|
|
resource = R.string.players4;
|
|
break;
|
|
case 2:
|
|
resource = R.string.players5;
|
|
break;
|
|
case 3:
|
|
resource = R.string.players6;
|
|
break;
|
|
}
|
|
nb_players_info.setText(resource);
|
|
|
|
player4_layout.setVisibility(View.GONE);
|
|
player5_layout.setVisibility(View.GONE);
|
|
player6_layout.setVisibility(View.GONE);
|
|
|
|
switch (progress + 3) {
|
|
case 6:
|
|
player6_layout.setVisibility(View.VISIBLE);
|
|
case 5:
|
|
player5_layout.setVisibility(View.VISIBLE);
|
|
case 4:
|
|
player4_layout.setVisibility(View.VISIBLE);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {}
|
|
});
|
|
|
|
attack_points.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView attack = root.findViewById(R.id.nb_points_attack);
|
|
TextView defense = root.findViewById(R.id.nb_points_defense);
|
|
attack.setText(String.valueOf(progress));
|
|
defense.setText(String.valueOf(91 - progress));
|
|
|
|
updateScore.run();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {}
|
|
});
|
|
|
|
bet.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView textView = root.findViewById(R.id.bet_info);
|
|
switch (progress) {
|
|
case 1:
|
|
textView.setText(R.string.guard);
|
|
break;
|
|
case 2:
|
|
textView.setText(R.string.guard_without);
|
|
break;
|
|
case 3:
|
|
textView.setText(R.string.guard_against);
|
|
break;
|
|
default:
|
|
textView.setText(R.string.little);
|
|
break;
|
|
}
|
|
|
|
updateScore.run();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
});
|
|
|
|
nb_ends.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView textView = root.findViewById(R.id.nb_ends_info);
|
|
switch (progress) {
|
|
case 1:
|
|
textView.setText(R.string.one_end);
|
|
break;
|
|
case 2:
|
|
textView.setText(R.string.two_ends);
|
|
break;
|
|
case 3:
|
|
textView.setText(R.string.three_ends);
|
|
break;
|
|
default:
|
|
textView.setText(R.string.null_end);
|
|
break;
|
|
}
|
|
|
|
updateScore.run();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
});
|
|
|
|
chelem_announced.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
updateScore.run();
|
|
}
|
|
});
|
|
|
|
chelem_realized.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
updateScore.run();
|
|
}
|
|
});
|
|
|
|
little_end.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView textView = root.findViewById(R.id.little_end_info);
|
|
switch (progress) {
|
|
case 1:
|
|
textView.setText(R.string.for_attacker);
|
|
break;
|
|
case 2:
|
|
textView.setText(R.string.for_defenser);
|
|
break;
|
|
default:
|
|
textView.setText(R.string.no);
|
|
break;
|
|
}
|
|
|
|
updateScore.run();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
});
|
|
|
|
attack_points.setProgress(46);
|
|
|
|
handle.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
|
@Override
|
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
|
TextView textView = root.findViewById(R.id.handle_info);
|
|
switch (progress) {
|
|
case -3:
|
|
textView.setText(R.string.handle_3d);
|
|
break;
|
|
case -2:
|
|
textView.setText(R.string.handle_2d);
|
|
break;
|
|
case -1:
|
|
textView.setText(R.string.handle_1d);
|
|
break;
|
|
case 1:
|
|
textView.setText(R.string.handle_1a);
|
|
break;
|
|
case 2:
|
|
textView.setText(R.string.handle_2a);
|
|
break;
|
|
case 3:
|
|
textView.setText(R.string.handle_3a);
|
|
break;
|
|
default:
|
|
textView.setText(R.string.no_handle);
|
|
break;
|
|
}
|
|
|
|
updateScore.run();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
|
|
@Override
|
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
|
}
|
|
});
|
|
|
|
final Button btn = root.findViewById(R.id.add_game_button);
|
|
btn.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
Toast.makeText(getContext(), "La partie sera sauvegardée ultérieurement.", Toast.LENGTH_SHORT).show();
|
|
}
|
|
});
|
|
|
|
return root;
|
|
}
|
|
} |