ajout choix deck

This commit is contained in:
marc barbier
2020-11-27 10:25:14 +01:00
parent 538d9b9bba
commit 6f3f9d9129
8 changed files with 93 additions and 27 deletions
@@ -53,12 +53,6 @@ package Game <<Folder>> {
- originalPositionX : float - originalPositionX : float
- originalPositionY : float - originalPositionY : float
} }
package Players <<Folder>> {
class Player
class PlayerBot
class PlayerLocal
class PlayerAdversary
}
class GameActivity class GameActivity
{ {
+ onCreate() + onCreate()
@@ -215,10 +209,6 @@ Renderer "1" *-- DrawingThread : -drawingThread
Renderer "1" *-- GameLogicThread : -engine Renderer "1" *-- GameLogicThread : -engine
Renderer "*" *-- Drawable : toDraw Renderer "*" *-- Drawable : toDraw
Player <|-- PlayerBot
Player <|-- PlayerLocal
Player <|-- PlayerAdversary
DrawableCard o-- Drawable : frameDrawable DrawableCard o-- Drawable : frameDrawable
DrawableCard *-- Drawable : OpacityRectangleDrawable DrawableCard *-- Drawable : OpacityRectangleDrawable
DrawableCard *-- Drawable : PictureDrawable DrawableCard *-- Drawable : PictureDrawable
@@ -257,9 +247,6 @@ GameLogicThread *-- Hand : fillHand
GameLogicThread *-- PlayableZonesHandler : playableZonesHandler GameLogicThread *-- PlayableZonesHandler : playableZonesHandler
GameLogicThread *-- GameActivity : gameActivity GameLogicThread *-- GameActivity : gameActivity
Board *-- PlayerLocal : player
Board *-- Player : adversary
Deck <|-- DeckDemo Deck <|-- DeckDemo
Renderer o-- GameLogicThread Renderer o-- GameLogicThread
@@ -0,0 +1,39 @@
package com.iutlaval.myapplication;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
public class DeckPickDialogue extends DialogFragment {
Context context;
public DeckPickDialogue(@NonNull Context context) {
this.context=context;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.pickdeck)
.setItems(R.array.decks, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
String[] mTestArray = getResources().getStringArray(R.array.decks);
Intent gameActivity = new Intent(context, GameActivity.class);
gameActivity.putExtra("DECK", mTestArray[which]);
gameActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(gameActivity);
}
});
return builder.create();
}
}
@@ -1,14 +1,20 @@
package com.iutlaval.myapplication.Game; package com.iutlaval.myapplication.Game;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.util.Log; import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import androidx.fragment.app.DialogFragment;
import com.iutlaval.myapplication.DeckPickDialogue;
import com.iutlaval.myapplication.Game.Cards.Card; import com.iutlaval.myapplication.Game.Cards.Card;
import com.iutlaval.myapplication.Game.Cards.CardRegistery; import com.iutlaval.myapplication.Game.Cards.CardRegistery;
import com.iutlaval.myapplication.GameActivity; import com.iutlaval.myapplication.GameActivity;
import com.iutlaval.myapplication.MainActivity;
import com.iutlaval.myapplication.R; import com.iutlaval.myapplication.R;
import com.iutlaval.myapplication.Video.Drawables.Drawable; import com.iutlaval.myapplication.Video.Drawables.Drawable;
import com.iutlaval.myapplication.Video.Drawables.DrawableBitmap; import com.iutlaval.myapplication.Video.Drawables.DrawableBitmap;
@@ -38,10 +44,12 @@ public class GameLogicThread extends Thread{
private boolean isYourTurn; private boolean isYourTurn;
private boolean cancelled; private boolean cancelled;
private Socket client; private Socket client;
private String deckName;
public GameLogicThread(GameActivity gameActivity, Renderer renderer) public GameLogicThread(GameActivity gameActivity, String deckName, Renderer renderer)
{ {
new CardRegistery(); new CardRegistery();
this.deckName=deckName;
Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight); Log.e("RESOLUTION:",""+GameActivity.screenWidth+"x"+GameActivity.screenHeight);
ready=false; ready=false;
this.cont = gameActivity; this.cont = gameActivity;
@@ -57,6 +65,8 @@ public class GameLogicThread extends Thread{
@Override @Override
public void run() { public void run() {
//pickDeck();
//loading textures //loading textures
Bitmap bitmapYourTurn = BitmapFactory.decodeResource(renderer.getResources(),R.drawable.t_pb_your_turn); Bitmap bitmapYourTurn = BitmapFactory.decodeResource(renderer.getResources(),R.drawable.t_pb_your_turn);
Bitmap bitmap= BitmapFactory.decodeResource(cont.getResources(), R.drawable.t_b_board_background); Bitmap bitmap= BitmapFactory.decodeResource(cont.getResources(), R.drawable.t_b_board_background);
@@ -71,7 +81,7 @@ public class GameLogicThread extends Thread{
//TODO : choix du deck avant de se co au serv //TODO : choix du deck avant de se co au serv
final String host = "4.tcp.ngrok.io";//192.168.43.251tcp://2.tcp.ngrok.io: final String host = "4.tcp.ngrok.io";//192.168.43.251tcp://2.tcp.ngrok.io:
final int port = 17531; final int port = 18240;
try { try {
client = new Socket(host, port); client = new Socket(host, port);
@@ -94,8 +104,7 @@ public class GameLogicThread extends Thread{
switch (serveurCmd) switch (serveurCmd)
{ {
case COMMAND.GET_DECK: case COMMAND.GET_DECK:
//TODO get deck from player clientOut.writeObject(deckName);
clientOut.writeObject("deckDemo");
//TODO assing this deck //TODO assing this deck
String deckstr = (String)clientIn.readObject(); String deckstr = (String)clientIn.readObject();
deck = new NetworkDeck(deckstr,gameActivity.getBaseContext()); deck = new NetworkDeck(deckstr,gameActivity.getBaseContext());
@@ -194,6 +203,10 @@ public class GameLogicThread extends Thread{
return board; return board;
} }
/**
* cette fonction a pour rôle de kill le thread
* vu que Thread.destroy() est déprecier c'est la seul methode possible;
*/
public void terminate() { public void terminate() {
ready=false; ready=false;
try { try {
@@ -33,7 +33,11 @@ public class GameActivity extends Activity {
Display display = getWindowManager().getDefaultDisplay(); Display display = getWindowManager().getDefaultDisplay();
FpsTime.init(display); FpsTime.init(display);
renderer = new Renderer(getBaseContext(),this); String deck = getIntent().getStringExtra("DECK");
renderer = new Renderer(getBaseContext(),deck,this);
setContentView(renderer); setContentView(renderer);
} }
@@ -1,32 +1,44 @@
package com.iutlaval.myapplication; package com.iutlaval.myapplication;
import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
private Context context;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
this.context=this;
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
final Button playButton = (Button) findViewById(R.id.playButton); final Button playButton = (Button) findViewById(R.id.playButton);
playButton.setOnClickListener(new View.OnClickListener() { playButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
//Toast.makeText(getApplicationContext(), "click sur button", Toast.LENGTH_LONG).show(); //Toast.makeText(getApplicationContext(), "click sur button", Toast.LENGTH_LONG).show();
Intent gameActivity = new Intent(MainActivity.this, GameActivity.class); pickDeck();
gameActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(gameActivity);
} }
}); });
} }
private String pickDeck() {
DialogFragment d = new DeckPickDialogue(this);
d.show(getSupportFragmentManager(),"s");
return "demodeck";
}
} }
@@ -30,10 +30,12 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
private boolean needToUpdate; private boolean needToUpdate;
private List<Drawable> toDraw; private List<Drawable> toDraw;
private String deckName;
public Renderer(Context context, GameActivity gameActivity) { public Renderer(Context context, String deck, GameActivity gameActivity) {
super(context); super(context);
this.gameActivity=gameActivity; this.gameActivity=gameActivity;
this.deckName=deck;
holder = getHolder(); holder = getHolder();
holder.addCallback(this); holder.addCallback(this);
@@ -153,7 +155,7 @@ public class Renderer extends SurfaceView implements SurfaceHolder.Callback {
} }
Log.i("RENDERER","STARTING ENGINE"); Log.i("RENDERER","STARTING ENGINE");
engine = new GameLogicThread(gameActivity,renderer); engine = new GameLogicThread(gameActivity,deckName,renderer);
engine.start(); engine.start();
while (!engine.isReady()); while (!engine.isReady());
Log.i("RENDERER","ENGINE STARTED"); Log.i("RENDERER","ENGINE STARTED");
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decks">
<item>mythes et legendes grecs</item>
<item>renaissance</item>
<item>moyen-age francais</item>
</string-array>
</resources>
+1
View File
@@ -2,4 +2,5 @@
<string name="app_name">MON JE</string> <string name="app_name">MON JE</string>
<string name="title_item_list">Items</string> <string name="title_item_list">Items</string>
<string name="title_item_detail">Item Detail</string> <string name="title_item_detail">Item Detail</string>
<string name="pickdeck">Choisisez votre deck</string>
</resources> </resources>