瀏覽代碼

Resources

François Gautrais 8 年之前
父節點
當前提交
ccf98ce884

+ 11 - 25
app/src/main/java/app/brest/testmin3d/ARActivity.java

@@ -1,44 +1,30 @@
 package app.brest.testmin3d;
 import android.app.Activity;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.res.Resources;
 import android.graphics.PixelFormat;
 import android.hardware.Camera;
-import android.media.MediaPlayer;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v7.app.AlertDialog;
 import android.util.Log;
-import android.util.TypedValue;
 import android.view.View;
 import android.view.ViewTreeObserver;
 import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.FrameLayout;
-import android.widget.ImageButton;
 import android.widget.ImageView;
-import android.widget.MediaController;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
-import android.widget.VideoView;
-
-import org.w3c.dom.Text;
 
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.ArrayList;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 import app.brest.app.brest.ui.CameraPreview;
-import app.brest.utils.JSONLoader;
-import app.brest.utils.ResourceManager;
-import app.brest.utils.SensorsManager;
 import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.LocatedResource;
+import app.brest.utils.app.brest.game.LocatedResources;
 import app.brest.utils.app.brest.game.Place;
 import app.brest.utils.app.brest.game.Resource;
 import app.brest.utils.app.brest.game.Stage;
@@ -46,8 +32,6 @@ import app.brest.utils.geometry.GPSPoint;
 import min3d.core.Object3d;
 import min3d.core.Object3dContainer;
 import min3d.core.RendererActivity;
-import min3d.parser.IParser;
-import min3d.parser.Parser;
 import min3d.vos.CameraVo;
 import min3d.vos.Light;
 import min3d.vos.Number3d;
@@ -221,7 +205,7 @@ public class ARActivity extends RendererActivity
     protected boolean updateSceneResource()
     {
 
-        ArrayList<LocatedResource> res = mGame.getResourcesNextToPlayer();
+        ArrayList<LocatedResources> res = mGame.getResourcesNextToPlayer();
         final TextView tv = (TextView) findViewById(R.id.text_detected);
         final TextView tv2 = (TextView)findViewById(R.id.text_place);
         String toDisplay ="Detetected \n";
@@ -230,7 +214,7 @@ public class ARActivity extends RendererActivity
        // String dete = "Detected:\n";
         scene.clear();
         for (int i = 0; i < res.size(); i++) {
-            Resource rr = res.get(i).getResource();
+            Resource rr = res.get(i).getResource(0);
             Place p = res.get(i).getPlace();
             if(rr!=null) {
                 detected=true;
@@ -514,10 +498,10 @@ public class ARActivity extends RendererActivity
 
     public void onClickPickUp(View v)
     {
-        Resource res = null;
+        ArrayList<Resource> res = null;
         boolean stageFinished = mGame.pickResource();
         boolean finished = false;
-        res=mGame.getLatestResource();
+        res=mGame.getPickedUpResources();
 
 
         if(stageFinished)
@@ -548,10 +532,12 @@ public class ARActivity extends RendererActivity
             Intent intent2 = new Intent(this, TransferActivity.class);
             startActivity(intent2);
         }
-
-        Intent intent = new Intent(this, ViewerActivity.class);
-        intent.putExtra("resource", res );
-        startActivity(intent);
+        for(int i=0; i<res.size(); i++)
+        {
+            Intent intent = new Intent(this, ViewerActivity.class);
+            intent.putExtra("resource", res.get(i) );
+            startActivity(intent);
+        }
         finish();
     }
 

+ 20 - 1
app/src/main/java/app/brest/utils/ResourceManager.java

@@ -22,6 +22,7 @@ public class ResourceManager implements Serializable{
     protected ArrayList< ArrayList<Resource> > mResourcesAquiered  = new ArrayList<ArrayList<Resource> >();
     protected ArrayList<Resource> mResourcesLeft  = new ArrayList<Resource>();
     protected Resource mLatestResource = null;
+    protected ArrayList<Resource> mResourcesPickedUp = new ArrayList<Resource>();
     public ResourceManager(Game g, Activity act)
     {
         mAllResources = g.getAllResources(act);
@@ -37,6 +38,19 @@ public class ResourceManager implements Serializable{
         return null;
     }
 
+    public void clearPickedUpResources()
+    {
+        mResourcesPickedUp.clear();
+    }
+
+    public ArrayList<Resource> getResourceLeftByName(ArrayList<String> names)
+    {
+        ArrayList<Resource> res = new ArrayList<Resource>();
+        for(int i=0; i< names.size(); i++)
+            res.add(getResourceLeftByName(names.get(i)));
+        return res;
+    }
+
     public void nextStage(int stage)
     {
         mResourcesAquiered.add(new ArrayList<Resource>());
@@ -52,7 +66,7 @@ public class ResourceManager implements Serializable{
         {
             if(mResourcesLeft.get(i).getName().compareTo(name)==0)
             {
-
+                mResourcesPickedUp.add(mResourcesLeft.get(i));
                 mResourcesAquiered.get(mResourcesAquiered.size()-1).add(mResourcesLeft.get(i));
                 mLatestResource = mResourcesLeft.get(i);
                 mResourcesLeft.remove(i);
@@ -62,6 +76,11 @@ public class ResourceManager implements Serializable{
         return false;
     }
 
+    public ArrayList<Resource> getPickedUpResources()
+    {
+        return mResourcesPickedUp;
+    }
+
     public ArrayList<Resource> getResourceLeft()
     {
         return mResourcesLeft;

+ 15 - 8
app/src/main/java/app/brest/utils/app/brest/game/Area.java

@@ -20,10 +20,10 @@ import app.brest.utils.geometry.Shape;
 public class Area  implements Serializable {
 
     protected String            mName;
-    protected String            mResourceName;
+    protected ArrayList<String>            mResourceName = new ArrayList<String>();
     protected Shape             mShape = new Shape();
     protected ArrayList<Place>  mPlaces = new ArrayList<Place>();
-    protected Resource          mResource;
+    protected ArrayList<Resource>          mResource = new ArrayList<Resource>();
 
     public Area(JSONObject root, Activity act)
     {
@@ -34,12 +34,13 @@ public class Area  implements Serializable {
                 mShape.add(new GPSPoint(jaa.getDouble(0), jaa.getDouble(1)));
             }
             mName = root.getString("name");
-            mResourceName = root.getString("resource");
+            String res [] = root.getString("resource").split(";");
+            for(int i=0; i<res.length; i++) mResourceName.add(res[i]);
             ja = root.getJSONArray("points");
             for(int i=0; i<ja.length(); i++) {
                 mPlaces.add(new Place(ja.getJSONObject(i)));
             }
-            mResource =  new Resource(mResourceName, act);;
+            for(int i=0; i<mResourceName.size(); i++) mResource.add(new Resource(mResourceName.get(i), act));
         } catch (JSONException e) {
             e.printStackTrace();
         }
@@ -49,19 +50,25 @@ public class Area  implements Serializable {
         return mName;
     }
 
-    public String getResourceName() {
+    public ArrayList<String> getResourceNames() {
         return mResourceName;
     }
 
-    public Resource getResource() {
+    public ArrayList<Resource> getResource() {
         return mResource;
     }
+    public Resource getResource(int i) {
+        return mResource.get(i);
+    }
+    public int countResource() {
+        return mResource.size();
+    }
 
 
     public int getStage()
     {
-        if(mResource==null) return -1;
-        return mResource.getStage();
+        if(mResource==null || mResource.size()<=0) return -1;
+        return mResource.get(0).getStage();
     }
 
     public Shape getShape() {

+ 28 - 19
app/src/main/java/app/brest/utils/app/brest/game/Game.java

@@ -2,7 +2,6 @@ package app.brest.utils.app.brest.game;
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.SharedPreferences;
 import android.util.Log;
 
 import org.json.JSONArray;
@@ -24,7 +23,6 @@ import app.brest.utils.JSONLoader;
 import app.brest.utils.ResourceManager;
 import app.brest.utils.SensorsManager;
 import app.brest.utils.Settings;
-import app.brest.utils.geometry.Point;
 
 /**
  * Created by ptitcois on 19/08/16.
@@ -41,7 +39,6 @@ public class Game  implements Serializable {
     protected String           mName;
     protected Settings         mSettings = new Settings();
     protected boolean          mFinished= false;
-
     public Game(String name, Activity act)
     {
         JSONObject root = JSONLoader.load(act, name);
@@ -144,20 +141,25 @@ public class Game  implements Serializable {
 
     public boolean pickResource()
     {
-        ArrayList<LocatedResource> r = getResourcesNextToPlayer();
+        mResources.clearPickedUpResources();
+        ArrayList<LocatedResources> r = getResourcesNextToPlayer();
         for(int i=0; i<r.size(); i++) {
             for (int j = 0; j < mCurrentStageAreas.size(); j++) {
 
-                if (r.get(i).getResource().getName().compareTo(mCurrentStageAreas.get(j).getName()) == 0 &&
-                        r.get(i).getResource().getStage() == mCurrentStage) {
+                if (r.get(i).getResource(0).getName().compareTo(mCurrentStageAreas.get(j).getName()) == 0 &&
+                        r.get(i).getResource(0).getStage() == mCurrentStage) {
                     removeArea(j);
                 }
             }
-            pickResource(r.get(i).getResource().getName());
+            pickResource(r.get(i).getResource(0).getName());
         }
         return mCurrentStageAreas.size()==0;
     }
 
+    public ArrayList<Resource> getPickedUpResources()
+    {
+        return mResources.getPickedUpResources();
+    }
 
     public boolean pickResource(String name)
     {
@@ -231,8 +233,13 @@ public class Game  implements Serializable {
     {
         ArrayList<Resource> tmp = new ArrayList<Resource>();
         for(int i=0; i<mAreas.size(); i++)
-            if(!tmp.contains(mAreas.get(i)))
-                tmp.add(mAreas.get(i).getResource());
+        {
+            ArrayList<Resource> c = mAreas.get(i).getResource();
+            for(int j=0; j<c.size(); j++)
+                if(!tmp.contains(c.get(j)))
+                    tmp.add(c.get(j));
+        }
+
         return tmp;
     }
 
@@ -271,15 +278,16 @@ public class Game  implements Serializable {
     public Resource findResource(String name)
     {
         for(int i=0; i<mAreas.size(); i++)
-            if(mAreas.get(i).getResourceName().compareTo(name)==0)
-                return mAreas.get(i).getResource();
+            for(int j=0; j<mAreas.get(i).countResource(); j++)
+                if(mAreas.get(i).getResourceNames().get(j).compareTo(name)==0)
+                 return mAreas.get(i).getResource(j);
         return null;
     }
 
     /**
      * Charge la ressource 3d quand on entre dans une zone
      */
-    public boolean precache3DResource(Activity contecxt)
+    synchronized public boolean precache3DResource(Activity contecxt)
     {
         boolean b =false;
         for(int i=0; i<mAreas.size(); i++)
@@ -287,9 +295,9 @@ public class Game  implements Serializable {
             if(mAreas.get(i).getStage()==mCurrentStage &&  mAreas.get(i).isOnArea(mPlayer))
             {
                 b=true;
-                Resource r = mResources.getResourceLeftByName(mAreas.get(i).getResourceName());
-                if(r!=null)
-                    r.get3DModel(contecxt);
+                ArrayList<Resource> rs = mResources.getResourceLeftByName(mAreas.get(i).getResourceNames());
+                for(int j=0; j<rs.size(); j++)
+                    rs.get(j).get3DModel(contecxt);
             }
         }
         return b;
@@ -301,9 +309,9 @@ public class Game  implements Serializable {
      * Fonction principale de positionnnemnt et orientation
      *
      */
-    public ArrayList<LocatedResource> getResourcesNextToPlayer()
+    public ArrayList<LocatedResources> getResourcesNextToPlayer()
     {
-        ArrayList<LocatedResource> r = new ArrayList<LocatedResource>();
+        ArrayList<LocatedResources> r = new ArrayList<LocatedResources>();
         for(int i=0; i<mCurrentStageAreas.size(); i++)
         {
             //probleme de GPS..
@@ -315,8 +323,9 @@ public class Game  implements Serializable {
                 if(i<mCurrentStageAreas.size() && mCurrentStageAreas.get(i).isOnDirection(mPlayer) &&
                         mCurrentStageAreas.get(i).isOnPlace(mPlayer))
                 {
-                    r.add(new LocatedResource(
-                            mResources.getResourceLeftByName(mCurrentStageAreas.get(i).getResourceName()),
+                    ArrayList<Resource> rs = mResources.getResourceLeftByName(mCurrentStageAreas.get(i).getResourceNames());
+                    r.add(new LocatedResources(
+                            rs,
                             mCurrentStageAreas.get(i).getPlace(0)
                     ));
                 }

+ 0 - 29
app/src/main/java/app/brest/utils/app/brest/game/LocatedResource.java

@@ -1,29 +0,0 @@
-package app.brest.utils.app.brest.game;
-
-/**
- * Created by ptitcois on 21/10/16.
- */
-public class LocatedResource {
-    private Place mPlace = null;
-    private Resource mResource = null;
-    public LocatedResource(Resource r, Place p) { mPlace=p; mResource=r;}
-    public LocatedResource(Resource r) {mResource=r;}
-    public LocatedResource(Place p) { mPlace=p;}
-    public LocatedResource() {}
-
-    public Place getPlace() {
-        return mPlace;
-    }
-
-    public void setPlace(Place mPlace) {
-        this.mPlace = mPlace;
-    }
-
-    public Resource getResource() {
-        return mResource;
-    }
-
-    public void setResource(Resource mResource) {
-        this.mResource = mResource;
-    }
-}

+ 42 - 0
app/src/main/java/app/brest/utils/app/brest/game/LocatedResources.java

@@ -0,0 +1,42 @@
+package app.brest.utils.app.brest.game;
+
+import java.util.ArrayList;
+
+/**
+ * Created by ptitcois on 21/10/16.
+ */
+public class LocatedResources {
+    private Place mPlace = null;
+    private ArrayList<Resource> mResources = new ArrayList<Resource>();
+    public LocatedResources(ArrayList<Resource> r, Place p) { mPlace=p; mResources=r;}
+    public LocatedResources(ArrayList<Resource> r) {mResources=r;}
+    public LocatedResources(Place p) { mPlace=p;}
+    public LocatedResources() {}
+
+    public Place getPlace() {
+        return mPlace;
+    }
+
+    public void setPlace(Place mPlace) {
+        this.mPlace = mPlace;
+    }
+
+    public ArrayList<Resource> getResources() {
+        return mResources;
+    }
+
+    public Resource getResource(int i) {
+        return mResources.get(i);
+    }
+
+    public int count() {
+        return mResources.size();
+    }
+
+    public void setResource(ArrayList<Resource> mResource) {
+        this.mResources = mResource;
+    }
+    public void addResource(Resource mResource) {
+        this.mResources.add(mResource);
+    }
+}