Ajout de l'affichage du score, ainsi que de la mise en cache de la partie suivant renvoyer par le serveur et utilisation de cette partie en cache

This commit is contained in:
Bertrand BRUN 2011-02-12 18:22:52 +01:00
parent de174de72b
commit de69ae7663
5 changed files with 52 additions and 43 deletions

View File

@ -3,38 +3,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:orientation="vertical"
android:layout_width="fill_parent" android:id="@+id/LinearLayout01">
<TextView android:text="@+id/corrects" android:id="@+id/correct" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<TextView android:text="@+id/manquants" android:id="@+id/missing" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<TextView android:text="@+id/mauvais" android:id="@+id/bad" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<TextView android:text="@+id/total" android:id="@+id/total" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="25px"></TextView>
<TextView android:text="@+id/joueravec" android:id="@+id/playedWith" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<Button android:text="J'ai vu !" android:id="@+id/saw" android:layout_width="100px"
android:layout_height="40px" android:layout_gravity="center_vertical|center_horizontal|center"></Button>
<TextView android:text="@+id/category1" android:id="@+id/category1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<TextView android:text="@+id/category1words" android:id="@+id/category1words" android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView android:text="@+id/category2" android:id="@+id/category2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="20px"></TextView>
<TextView android:text="@+id/category2words" android:id="@+id/category2words" android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
android:id="@+id/LinearLayout01" android:layout_gravity="center" android:layout_width="150dip">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:orientation="vertical" android:layout_weight="2">
<TextView android:layout_width="fill_parent" android:id="@+id/textView1" android:layout_height="wrap_content" android:text="Votre score est de :" android:gravity="center" android:layout_weight="1"></TextView>
<TextView android:layout_width="fill_parent" android:id="@+id/total" android:layout_height="wrap_content" android:text="@+id/total" android:textStyle="bold" android:textSize="25px" android:layout_weight="1" android:gravity="center|top"></TextView>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout1" android:layout_weight="1" android:layout_height="wrap_content">
<Button android:id="@+id/saw" android:text="J'ai vu !" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_gravity="top"></Button>
</LinearLayout>
</LinearLayout>

View File

@ -6,10 +6,8 @@ import org.pticlic.model.Match;
import org.pticlic.model.Network;
import org.pticlic.model.Network.Mode;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
@ -17,6 +15,7 @@ import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
* @author John CHARRON
@ -48,7 +47,9 @@ public class Score extends Activity implements OnClickListener{
// FIXME : Pour l'instant ne marche pas, attend de savoir comment est formater le score que l'on recois.
try {
network.sendGame(gamePlayed);
Double score = network.sendGame(gamePlayed);
((TextView)findViewById(R.id.total)).setText(String.valueOf(score.floatValue()));
sp.edit().putString(Constant.NEW_BASE_GAME, network.getNewGame()).commit();
} catch (PtiClicException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.app_name))

View File

@ -10,7 +10,6 @@ import org.pticlic.model.Network;
import org.pticlic.model.Network.Mode;
import org.pticlic.model.Relation;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
@ -30,6 +29,8 @@ import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import com.google.gson.Gson;
/**
* @author Bertrand BRUN et Georges DUPÉRON
*
@ -54,6 +55,7 @@ public class BaseGame extends Activity implements OnClickListener {
private Match match;
private Network network;
private boolean help = false;
private String gameJson;
/** Called when the activity is first created. */
@Override
@ -66,6 +68,7 @@ public class BaseGame extends Activity implements OnClickListener {
String serverURL = sp.getString(Constant.SERVER_URL, "http://dumbs.fr/~bbrun/pticlic.json"); // TODO : Mettre comme valeur par defaut l'adresse reel du serveur
String id = sp.getString(Constant.USER_ID, "joueur");
String passwd = sp.getString(Constant.USER_PASSWD, "");
gameJson = sp.getString(Constant.NEW_BASE_GAME, null);
// On initialise la classe permettant la communication avec le serveur.
network = new Network(serverURL, Mode.SIMPLE_GAME, id, passwd);
@ -80,7 +83,9 @@ public class BaseGame extends Activity implements OnClickListener {
protected void onStart() {
super.onStart();
try {
game = (DownloadedBaseGame)network.getGames(1);
Gson gson = new Gson();
if (gameJson == null) game = (DownloadedBaseGame)network.getGames(1);
else game = gson.fromJson(gameJson, DownloadedBaseGame.class);
runMatch();
start();
} catch (PtiClicException e) {

View File

@ -2,9 +2,11 @@ package org.pticlic.model;
public class Constant {
public static final String SERVER_URL = "server";
public static final String SERVER_AUTH = "SERVER_AUTH";
// Constant pour les parties en cache
public static final String NEW_BASE_GAME = "NEW_BASE_GAME";
// Constant pour les information de l'utilisateur.
public static final String USER_ID = "login";
public static final String USER_PASSWD = "passwd";

View File

@ -27,6 +27,8 @@ import com.google.gson.stream.JsonReader;
*/
public class Network {
String newGameJson = null;
public enum Action {
GET_GAMES(0),
SEND_GAME(1);
@ -241,18 +243,18 @@ public class Network {
* @param game La partie jouee par l'utilisateur
* @return Le score sous forme JSON.
*/
public TotalScore sendGame(Match game) throws PtiClicException {
public double sendGame(Match game) throws PtiClicException {
switch (mode) {
case SIMPLE_GAME:
return sendBaseGame(game);
default:
return null;
return -1;
}
}
public TotalScore sendBaseGame(Match game) throws PtiClicException {
TotalScore score = null;
public double sendBaseGame(Match game) throws PtiClicException {
double score = -1;
URL url = null;
Gson gson = null;
BufferedReader reader = null;
@ -305,7 +307,7 @@ public class Network {
// une exception.
PtiClicException.Error error = gson.fromJson(json, PtiClicException.Error.class);
if (error.getMsg() == null) {
score = gson.fromJson(jsonReader, TotalScore.class);
score = getScore(jsonReader, gson);
} else {
throw new PtiClicException(error);
}
@ -318,4 +320,27 @@ public class Network {
return score;
}
private double getScore(JsonReader reader, Gson gson) throws IOException {
double score = -1;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("score")) {
score = reader.nextDouble();
} else if (name.equals("newGame")) {
DownloadedBaseGame newGame = gson.fromJson(reader, DownloadedBaseGame.class);
newGameJson = gson.toJson(newGame);
} else {
reader.skipValue();
}
}
reader.endObject();
return score;
}
public String getNewGame() {
return this.newGameJson;
}
}