Преглед на файлове

Ajout des évenements permettant de donner une ressource

François Gautrais преди 7 години
родител
ревизия
cb44fb9c01

+ 8 - 9
app/app.iml

@@ -70,13 +70,6 @@
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -84,6 +77,14 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/applicationId" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
@@ -95,7 +96,6 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-main-apk-res" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
@@ -112,7 +112,6 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
-      <excludeFolder url="file://$MODULE_DIR$/build/reports" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
     <orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" />

BIN
app/src/main/assets/burger.mp3


+ 35 - 37
app/src/main/assets/game_medium

@@ -1,11 +1,10 @@
 {
     "password" : "19662016",
     "max_time" : 120,
+	"resources_file" : "ressources.res",
 	"stages" : [{
 	"name" : "Intro",
-	"challenges" : [
-
-	],
+	"challenges" : [],
 	"resources" : ["intro"],
 	"event_end" : [ 
 		{"method" : "tuto"},
@@ -20,7 +19,7 @@
 				"type" : "QRCodeTreasure",
 				"name" : "BibQr",
 				"bad_message" : "C'est pas le bon !",
-				"qr_value" : "1",
+				"qr_value" : "http://www.mjc-louis-aragon.asso.fr/qrcode/#1",
 				"resource" : "bib",
 				"indices" : [
 					{
@@ -31,12 +30,12 @@
 					{
 						"type" : "text",
 						"penality": 1,
-						"text" : "Encore moins dans la bibliothèque !" 
+						"text" : "Encore moins dans la médiathèque !" 
 					}
 				]
 			}
 		],
-	"resources" : ["intro_fin"],
+	"resources" : [],
 	"charIndex" : 7
 },
 {
@@ -48,7 +47,7 @@
 				"type" : "QRCodeTreasure",
 				"name" : "MPG_Qr",
 				"bad_message" : "C'est pas le bon !",
-				"qr_value" : "1",
+				"qr_value" : "http://www.mjc-louis-aragon.asso.fr/qrcode/#2",
 				"resource" : "mpg",
 				"indices" : [
 					{
@@ -63,7 +62,8 @@
 						"penality": 1,
 						"text" : "Ne pas sonner SVP !" 
 					}
-				]
+				],
+				"event_end" : { "method" : "giveResource", "args" : ["burger"] }
 			},
 			{
                     "type" : "QCM",
@@ -83,8 +83,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+					"mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -103,8 +103,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -123,8 +123,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -144,8 +144,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -165,8 +165,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -186,8 +186,8 @@
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  },
                  {
                     "type" : "QCM",
@@ -202,13 +202,12 @@
 									"42",
 									"Ma Campagne",
 									"D",
-									"Meurs, pourriture communiste !",
 									"W"
 								],
                     "bad_message" : "T'es nul !",
 					"resource" : "question",
-					 "penality": 0.5,
-                     "mandatory" : false
+					"penality": 0.5,
+                    "mandatory" : false
                  }
 		]
 },
@@ -220,7 +219,7 @@
 				"type" : "QRCodeTreasure",
 				"name" : "Jardin ludothèque",
 				"bad_message" : "C'est pas le bon !",
-				"qr_value" : "1",
+				"qr_value" : "http://www.mjc-louis-aragon.asso.fr/qrcode/#3",
 				"resource" : "ludo",
 				"indices" : [
 					{
@@ -264,8 +263,8 @@
 				"penality" : 1
 			}
 		],
-	"resources" : ["milieu"],
-	"event_end" : { "method" : "setTimerTo", "args" : [15] },
+	"resources" : [],
+	"event_end" : { "method" : "setTimerTo", "args" : [30] },
 	"charIndex" : 5
 },
 {
@@ -279,7 +278,7 @@
 				"resource" : "jardin", 
 				"question" : "Rentrez par la porte en face de vous et allez dans le 'jardin d’hiver' de la MJC. Un mot de X lettres est caché dans ce dernier, mais bonne chance pour le découvrir !",
 				"good_message" : "Bravo !",
-				"answer" : "ABBA",
+				"answer" : "patate",
 				"indices" : [
 					{
 						"penality" : 0.5,
@@ -314,7 +313,7 @@
 				"bad_message" : "Non !",
 				"good_message" : "Bravo !",
 				"resource" : "accueil",
-				"question" : "Comment est votre blanquette ?\nDemandez donc aux personnes les mieux renseignés de la bibliothèque ET de la MJC. Et au passage, la plaquette de la MJC et le facebook de la bibliothèque pourrait être utile !",
+				"question" : "Quel est le sens de la vie ?\nDemandez donc aux personnes les mieux renseignés de la médiathèque ET de la MJC. Et au passage, la plaquette de la MJC et le facebook de la médiathèque pourrait être utile !",
 				"answer" : "Trop cuite",
 				"indices" : [
 					{
@@ -331,7 +330,7 @@
 					},
 					{
 						"penality" : 1,
-						"text": "Poser la question \"Comment est votre blanquette ?\" à l’accueil de la MJC ET à l’accueil de la bibliothèque..."
+						"text": "Poser la question \"Comment est votre blanquette ?\" à l’accueil de la MJC ET à l’accueil de la médiathèque..."
 					}
 				],
 				"penality" : 1
@@ -350,11 +349,11 @@
 				"question" : "J'espère que vous avez bien récupérer les documents, car des fois il faut aussi savoir se débrouiller soit-même pour avoir sa réponse... Trouvez la vous même et montrez la moi avec votre caméra !",
 				"bad_message" : "Non !",
 				"resource" : "prospect",
-				"qr_value" : "1",
+				"qr_value" : "http://www.mjc-louis-aragon.asso.fr/qrcode/#4",
 				"indices" : [
 					{
 						"penality" : 0.5,
-						"text": "Je vous avais bien dit de prendre la plaquette et le facebook de la bibliothèque."
+						"text": "Je vous avais bien dit de prendre la plaquette et le facebook de la médiathèque."
 					},
 					{
 						"penality" : 1,
@@ -394,11 +393,11 @@
 				"indices" : [
 					{
 						"penality" : 0.5,
-						"text": "La Côte est POL GRA"
+						"text": "La Côte est 'R ISH'"
 					},
 					{
 						"penality" : 1,
-						"text": "Page 150, il y a des nombres... Que peuvent-ils bien signifier, des pages ? des chapitres, des mots ?"
+						"text": "Généralement, quand on cherche une information dans un livre on va voir le sommaire ou l'index. Ils se trouvent généralement au début ou à la fin du livre..."
 					}
 				],
 				"penality" : 1
@@ -435,13 +434,12 @@
          "name" : "win",
          "resources" : ["intro"],
           "challenges" : [],
-         "event_start" : {"method" : "alert", "args" : ["T'as gagné u !"] }
+         "event_start" : {"method" : "alert", "args" : ["T'as gagné !"] } 
      },
       "loose" : {
           "name" : "loose",
-          "resources" : ["intro"],
-          "challenges" : [],
-          "event_start" : {"method" : "alert", "args" : ["T'as perd u !"] }
+          "resources" : [],
+          "challenges" : []
       },
 	"credits" : 
 	{

BIN
app/src/main/assets/livre.jpg


+ 6 - 0
app/src/main/assets/ressources.res

@@ -21,6 +21,12 @@
 		"type" : "Audio",
 		"display" : true
 	},
+	"burger" : {
+		"comment" : "Ecoutez bien ces questions, et répondez y dans l'ordre ! Cliquez sur OK quand vous êtes prêts",
+		"title" : "Le burger de la mort !",
+		"type" : "Audio",
+		"display" : true
+	},
 	"creche": {"type" : "Image"},
 	"bib" : {"type" : "Image"},
 	"ludo" :  {"type" : "Image"},

+ 2 - 1
app/src/main/java/macampcorp/macamp/activities/BombActivity.java

@@ -22,6 +22,7 @@ import macampcorp.macamp.game.Bomb;
 import macampcorp.macamp.game.Game;
 import macampcorp.macamp.game.scheduler.SpecialTask;
 import macampcorp.macamp.lang.Locale;
+import macampcorp.macamp.utils.Const;
 
 public class BombActivity extends AppCompatActivity {
 
@@ -176,7 +177,7 @@ public class BombActivity extends AppCompatActivity {
             }else
             { //code mauvais
                 Toast.makeText(this,  R.string.toast_fail, Toast.LENGTH_LONG).show();
-                mGame.getBomb().addTime(-100);
+                mGame.getBomb().addTime(-Const.BOMB_PENALITY);
                 clear();
                 startTimer();
             }

+ 6 - 4
app/src/main/java/macampcorp/macamp/activities/CrashActivity.java

@@ -12,6 +12,8 @@ import android.os.Bundle;
 import android.view.View;
 import android.widget.ImageView;
 
+import macampcorp.macamp.utils.Const;
+
 public class CrashActivity extends AppCompatActivity {
     protected ImageView mImage;
     protected ImageView mBsod;
@@ -27,8 +29,8 @@ public class CrashActivity extends AppCompatActivity {
 
         ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(mImage, "scaleX", 0);
         ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(mImage, "scaleY", 0);
-        scaleDownX.setDuration(300);
-        scaleDownY.setDuration(300);
+        scaleDownX.setDuration(Const.POWER_OF_ANIM_DURATION);
+        scaleDownY.setDuration(Const.POWER_OF_ANIM_DURATION);
 
         AnimatorSet scaleDown = new AnimatorSet();
         scaleDown.play(scaleDownX).with(scaleDownY);
@@ -44,10 +46,10 @@ public class CrashActivity extends AppCompatActivity {
             {
                 mRoot.setBackgroundColor(0xff0000fe);
                 mBsod.setVisibility(View.VISIBLE);
-                closeAfter(6000);
+                closeAfter(Const.BSOD_DURATION);
             }
         };
-        handler.postDelayed(r, 5000);
+        handler.postDelayed(r, Const.POWER_OF_DURATION);
     }
 
     public void closeAfter(int x)

+ 19 - 3
app/src/main/java/macampcorp/macamp/game/Event.java

@@ -61,9 +61,9 @@ public class Event implements Serializable {
         public String message;
         public ArrayList<Object> args;
 
-        public EventReturn() { }
-        public EventReturn(int c) { code=c;}
-        public EventReturn(int c, String m) { code=c; message=m;}
+        public EventReturn() { args=new ArrayList<>();}
+        public EventReturn(int c) { code=c; args=new ArrayList<>();}
+        public EventReturn(int c, String m) { code=c; message=m; args=new ArrayList<>();}
         public EventReturn(int c, String m, ArrayList<Object> a) { code=c; message=m; args=a;}
 
 
@@ -187,6 +187,22 @@ public class Event implements Serializable {
         return ev;
     }
 
+    public EventReturn giveResource(HostActivity a, Game g)
+    {
+        String rname = argAsString(0, "null");
+        Resource r = g.getResourceByName(rname);
+        if(r==null)
+        {
+            L.error("Erreur dans Event: la ressource '"+rname+"' n'existe pas !");
+            throw new RuntimeException("Erreur dans Event: la ressource '"+rname+"' n'existe pas !");
+        }
+        g.getInventaire().addResource(r);
+        a.startResource(r);
+        EventReturn ev = new EventReturn(0, "OK");
+        ev.setWait();
+        return ev;
+    }
+
     public String getMethod() {
         return mMethod;
     }

+ 10 - 0
app/src/main/java/macampcorp/macamp/game/Game.java

@@ -61,6 +61,7 @@ public class Game  implements Serializable {
             throw new BadGameConfigException("Le fichier JSON n'a pas pu être parsé");
         }
 
+
         try {
             JSONArray arr = root.getJSONArray("stages");
             if(arr==null) throw new JSONException("Not defined");
@@ -102,6 +103,15 @@ public class Game  implements Serializable {
             throw  new BadGameConfigException("Le champs 'win' n'est pas renseigné");
         }
 
+
+        try {
+            String rf = root.getString("resources_file");
+            mResources.loadResourcesFile(  rf, act, this );
+        } catch (JSONException e) {
+            L.warn("Le champs 'resources_file' n'est pas renseigné");
+        }
+
+
         mCurrentStageIndex=-1;
         if(mStages.size()>0)
             mCurrentStage=mStages.get(0);

+ 5 - 0
app/src/main/java/macampcorp/macamp/game/Resource.java

@@ -78,6 +78,11 @@ public class Resource implements Serializable {
         mNotFound.add(name);
     }
 
+    protected void loadResource(JSONObject js)
+    {
+
+    }
+
     protected void loadResourceData(Activity act)
     {
         initResourceList(act);

+ 22 - 0
app/src/main/java/macampcorp/macamp/game/ResourceManager.java

@@ -2,14 +2,22 @@ package macampcorp.macamp.game;
 
 import android.app.Activity;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.io.Serializable;
 import java.util.HashMap;
+import java.util.Iterator;
+
+import macampcorp.macamp.utils.files.FileManager;
+import macampcorp.macamp.utils.files.JSONAssetsManager;
 
 /**
  * Created by ptitcois on 18/08/16.
  * Cette classe gère les differentes ressources
  */
 public class ResourceManager implements Serializable{
+
     protected HashMap<String, Resource> mResources = new HashMap<String, Resource>();
     protected Resource mLatestResource = null;
     protected static ResourceManager sThis = null;
@@ -18,6 +26,8 @@ public class ResourceManager implements Serializable{
     {
     }
 
+
+
     public static ResourceManager newInstance()
     {
         return sThis=new ResourceManager();
@@ -31,6 +41,18 @@ public class ResourceManager implements Serializable{
         return sThis;
     }
 
+    public void loadResourcesFile(String file, Activity act, Game g)
+    {
+        JSONObject root = JSONAssetsManager.load(act, file);
+        try {
+            for(int i = 0; i<root.names().length(); i++){
+                    g.registerResource(root.names().getString(i), act);
+            }
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+    }
+
     public void addResource(String name, Activity act)
     {
         Resource r = new Resource(name, act);

+ 0 - 1
app/src/main/java/macampcorp/macamp/game/challenges/Question.java

@@ -73,7 +73,6 @@ public class Question extends Challenge {
         return false;
     }
 
-
     public String getQuestion() {
         return mQuestion;
     }

+ 1 - 1
app/src/main/java/macampcorp/macamp/game/scheduler/SpecialTask.java

@@ -53,7 +53,7 @@ public class SpecialTask extends Task {
             case END_FAILED:
                 EndActivity.start(cd, false);
                 //cd.finish();
-               // break;
+               break;
 
             case END_SUCCESS:
                 EndActivity.start(cd, true);

+ 10 - 0
app/src/main/java/macampcorp/macamp/utils/Const.java

@@ -0,0 +1,10 @@
+package macampcorp.macamp.utils;
+
+public class Const {
+    public static final float BOMB_PENALITY=1;
+
+    public static final int POWER_OF_ANIM_DURATION=300;
+
+    public static final int POWER_OF_DURATION=5000;
+    public static final int BSOD_DURATION=6000;
+}

BIN
app/src/main/res/drawable/bsod.jpg


BIN
app/src/main/res/drawable/explosion.jpg