François Gautrais před 8 roky
rodič
revize
228abf77fd
100 změnil soubory, kde provedl 388 přidání a 234 odebrání
  1. 0 3
      app/src/main/AndroidManifest.xml
  2. 87 0
      app/src/main/java/app/brest/app/brest/ui/MediaView.java
  3. 0 166
      app/src/main/java/app/brest/testmin3d/MenuActivity.java
  4. 36 8
      app/src/main/java/app/brest/testmin3d/PermissionActivity.java
  5. 1 7
      app/src/main/java/app/brest/testmin3d/TransferActivity.java
  6. 56 10
      app/src/main/java/app/brest/testmin3d/ViewerActivity.java
  7. 22 2
      app/src/main/java/app/brest/utils/app/brest/game/Game.java
  8. 3 4
      app/src/main/java/app/brest/utils/app/brest/game/Resource.java
  9. 10 0
      app/src/main/java/app/brest/utils/app/brest/game/Stage.java
  10. 55 3
      app/src/main/java/app/brest/utils/files/FileManager.java
  11. 6 5
      app/src/main/java/app/brest/utils/files/JSONAssetsManager.java
  12. 36 10
      app/src/main/java/min3d/parser/AParser.java
  13. 13 2
      app/src/main/java/min3d/parser/MD2Parser.java
  14. 11 2
      app/src/main/java/min3d/parser/Max3DSParser.java
  15. 35 12
      app/src/main/java/min3d/parser/ObjParser.java
  16. 17 0
      app/src/main/java/min3d/parser/Parser.java
  17. binární
      app/src/main/res/drawable/a.jpg
  18. binární
      app/src/main/res/drawable/a_texture.jpg
  19. binární
      app/src/main/res/drawable/aa.jpg
  20. binární
      app/src/main/res/drawable/aa_texture.jpg
  21. binární
      app/src/main/res/drawable/aaa.jpg
  22. binární
      app/src/main/res/drawable/aaa_texture.jpg
  23. binární
      app/src/main/res/drawable/ab.jpg
  24. binární
      app/src/main/res/drawable/ab_texture.jpg
  25. binární
      app/src/main/res/drawable/ac.jpg
  26. binární
      app/src/main/res/drawable/ac_texture.jpg
  27. binární
      app/src/main/res/drawable/ad.jpg
  28. binární
      app/src/main/res/drawable/ad_texture.jpg
  29. binární
      app/src/main/res/drawable/ae.jpg
  30. binární
      app/src/main/res/drawable/ae_texture.jpg
  31. binární
      app/src/main/res/drawable/af.jpg
  32. binární
      app/src/main/res/drawable/af_texture.jpg
  33. binární
      app/src/main/res/drawable/ag.jpg
  34. binární
      app/src/main/res/drawable/ag_texture.jpg
  35. binární
      app/src/main/res/drawable/ah.jpg
  36. binární
      app/src/main/res/drawable/ah_texture.jpg
  37. binární
      app/src/main/res/drawable/angle_pont.jpg
  38. binární
      app/src/main/res/drawable/angle_pontp.jpg
  39. binární
      app/src/main/res/drawable/b.jpg
  40. binární
      app/src/main/res/drawable/b_texture.jpg
  41. binární
      app/src/main/res/drawable/ba.jpg
  42. binární
      app/src/main/res/drawable/ba_texture.jpg
  43. binární
      app/src/main/res/drawable/barong.jpg
  44. binární
      app/src/main/res/drawable/bb.jpg
  45. binární
      app/src/main/res/drawable/bb_texture.jpg
  46. binární
      app/src/main/res/drawable/bbb.jpg
  47. binární
      app/src/main/res/drawable/bbb_texture.jpg
  48. binární
      app/src/main/res/drawable/bc.jpg
  49. binární
      app/src/main/res/drawable/bc_texture.jpg
  50. binární
      app/src/main/res/drawable/bd.jpg
  51. binární
      app/src/main/res/drawable/bd_texture.jpg
  52. binární
      app/src/main/res/drawable/be.jpg
  53. binární
      app/src/main/res/drawable/be_texture.jpg
  54. binární
      app/src/main/res/drawable/bf.jpg
  55. binární
      app/src/main/res/drawable/bf_texture.jpg
  56. binární
      app/src/main/res/drawable/bg.jpg
  57. binární
      app/src/main/res/drawable/bg_texture.jpg
  58. binární
      app/src/main/res/drawable/c.jpg
  59. binární
      app/src/main/res/drawable/c_texture.jpg
  60. binární
      app/src/main/res/drawable/camaro.jpg
  61. binární
      app/src/main/res/drawable/camaro_res.jpg
  62. binární
      app/src/main/res/drawable/carte.png
  63. binární
      app/src/main/res/drawable/cc.jpg
  64. binární
      app/src/main/res/drawable/cc_texture.jpg
  65. binární
      app/src/main/res/drawable/ccc.jpg
  66. binární
      app/src/main/res/drawable/ccc_texture.jpg
  67. binární
      app/src/main/res/drawable/ceiling.jpg
  68. binární
      app/src/main/res/drawable/checkerboard.png
  69. binární
      app/src/main/res/drawable/clouds_alpha2b.png
  70. binární
      app/src/main/res/drawable/d.jpg
  71. binární
      app/src/main/res/drawable/d_texture.jpg
  72. binární
      app/src/main/res/drawable/deadmickey.jpg
  73. binární
      app/src/main/res/drawable/e.jpg
  74. binární
      app/src/main/res/drawable/e_texture.jpg
  75. binární
      app/src/main/res/drawable/f.jpg
  76. binární
      app/src/main/res/drawable/f_texture.jpg
  77. binární
      app/src/main/res/drawable/face.jpg
  78. binární
      app/src/main/res/drawable/face_eyel_hi.jpg
  79. binární
      app/src/main/res/drawable/face_eyer_hi.jpg
  80. binární
      app/src/main/res/drawable/face_skin_hi.jpg
  81. binární
      app/src/main/res/drawable/face_sock.jpg
  82. binární
      app/src/main/res/drawable/face_texture.jpg
  83. binární
      app/src/main/res/drawable/floor.jpg
  84. binární
      app/src/main/res/drawable/g.jpg
  85. binární
      app/src/main/res/drawable/g_texture.jpg
  86. binární
      app/src/main/res/drawable/game_medium_map.png
  87. binární
      app/src/main/res/drawable/icon.png
  88. binární
      app/src/main/res/drawable/info.png
  89. binární
      app/src/main/res/drawable/inventaire.png
  90. binární
      app/src/main/res/drawable/jupiter.jpg
  91. binární
      app/src/main/res/drawable/maqjpg.jpg
  92. binární
      app/src/main/res/drawable/monster.jpg
  93. binární
      app/src/main/res/drawable/moon.jpg
  94. binární
      app/src/main/res/drawable/ogrobase.jpg
  95. binární
      app/src/main/res/drawable/options.png
  96. binární
      app/src/main/res/drawable/revenant.jpg
  97. binární
      app/src/main/res/drawable/scanner.png
  98. binární
      app/src/main/res/drawable/stonetexture.jpg
  99. binární
      app/src/main/res/drawable/uglysquares.png
  100. binární
      app/src/main/res/drawable/white_with_alpha_hole.png

+ 0 - 3
app/src/main/AndroidManifest.xml

@@ -29,9 +29,6 @@
             android:name=".ResourceListActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:label="@string/title_activity_resource_list" />
-        <activity
-            android:name=".MenuActivity"
-            android:label="@string/title_activity_menu" />
         <activity
             android:name=".SettingsActivity"
             android:label="@string/title_activity_settings" />

+ 87 - 0
app/src/main/java/app/brest/app/brest/ui/MediaView.java

@@ -0,0 +1,87 @@
+package app.brest.app.brest.ui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.AssetFileDescriptor;
+import android.media.MediaPlayer;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.widget.MediaController;
+import android.widget.VideoView;
+
+import java.io.IOException;
+
+import app.brest.utils.files.FileManager;
+
+/**
+ * Created by ptitcois on 27/03/17.
+ */
+public class MediaView extends SurfaceView implements View.OnClickListener,SurfaceHolder.Callback {
+    private MediaPlayer mPlayer;
+    private MediaView mThis;
+    public MediaView(Activity cont) {
+        super(cont);
+        setOnClickListener(this);
+        mThis=this;
+    }
+
+    public void surfaceCreated(SurfaceHolder holder)
+    {
+        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
+        if(mPlayer!=null)mPlayer.setDisplay(getHolder());
+
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
+
+    }
+
+    public void stop() {
+        if(mPlayer!=null && mPlayer.isPlaying())
+            mPlayer.stop();
+    }
+
+    public void play(String path)
+    {
+        AssetFileDescriptor afd;
+        mPlayer = new MediaPlayer();
+        afd = FileManager.getAfdMedia(path);
+        try {
+            mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        mPlayer.prepareAsync();
+        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+
+            @Override
+            public void onPrepared(MediaPlayer mp) {
+                mp.setDisplay(mThis.getHolder());
+                mp.start();
+            }
+        });
+
+    }
+    @Override
+    public void onClick(View view) {
+        if(mPlayer!=null)
+        {
+            if(mPlayer.isPlaying())
+            {
+                mPlayer.pause();
+            }else{
+                mPlayer.start();
+            }
+
+        }
+
+    }
+
+
+}

+ 0 - 166
app/src/main/java/app/brest/testmin3d/MenuActivity.java

@@ -1,166 +0,0 @@
-package app.brest.testmin3d;
-
-import android.app.Activity;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.graphics.Point;
-import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-import android.util.Log;
-import android.view.Display;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.Toast;
-
-import app.brest.testmin3d.R;
-import app.brest.utils.Settings;
-import app.brest.utils.app.brest.game.Game;
-import app.brest.utils.app.brest.game.Resource;
-import app.brest.utils.app.brest.game.Stage;
-
-public class MenuActivity extends Activity {
-    protected Game mGame;
-    protected ImageButton mICarte;
-    protected ImageButton mIInventaire;
-    protected ImageButton mIOptions;
-    protected ImageButton mIScanner;
-    protected ImageButton mIBriefing;
-    protected ImageButton mINextStage;
-
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_menu);
-
-        mICarte = (ImageButton) findViewById(R.id.ib_carte);
-        mIInventaire = (ImageButton) findViewById(R.id.ib_inventaire);
-        mIOptions = (ImageButton) findViewById(R.id.ib_options);
-        mIScanner = (ImageButton) findViewById(R.id.ib_scanner);
-        mIBriefing = (ImageButton) findViewById(R.id.ib_briefing);
-        mINextStage = (ImageButton) findViewById(R.id.ib_send);
-
-        Game g = null;//Game.load(this);
-
-        if (g!= null && mGame==null) {
-            mGame = g;
-            Game.setGame(mGame);
-            mGame.newSensorManager(this);
-            Toast.makeText(this, "Chargement", Toast.LENGTH_LONG).show();
-        }
-        else if( mGame==null)
-        {
-            mGame = new Game("game_medium", this);
-            Game.setGame(mGame);
-            Toast.makeText(this, "Nouveau Jeu", Toast.LENGTH_LONG).show();
-        }else if( mGame==null)
-        {
-            Toast.makeText(this, "Erreur", Toast.LENGTH_LONG).show();
-            throw new Error("Le jeu n'est pas sauvegardé");
-        }
-        if(mGame!=null)
-        {
-            /*
-            mGame.pickR  esource("b");
-            mGame.pickResource("c");
-            mGame.pickResource("d");
-            mGame.pickResource("e");
-            */
-        }
-
-        Intent intent = new Intent(this, NewMenuActivity.class);
-        startActivity(intent);
-    }
-
-    public void onResume()
-    {
-        super.onResume();
-        Display display = getWindowManager().getDefaultDisplay();
-        Point size = new Point();
-        display.getSize(size);
-        int width = size.x;
-        int height = size.y;
-        int buttonHieght = mGame.canSendData()?((height)-6*40)/7:((height-40)-5*40)/6;
-        ((ViewGroup)mINextStage.getParent()).setVisibility(mGame.canSendData()?View.VISIBLE:View.INVISIBLE);
-
-        mICarte.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-        mIInventaire.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-        mIOptions.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-        mIScanner.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-        mIBriefing.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-        if(mGame.canSendData())mINextStage.setLayoutParams(new LinearLayout.LayoutParams(buttonHieght, buttonHieght));
-    }
-
-    public void onOptionsClick(View v)
-    {
-        Intent intent = new Intent(this, SettingsActivity.class);
-        intent.putExtra("game", mGame);
-        startActivity(intent);
-    }
-
-
-    public void onCarteClick(View v)
-    {
-        Intent intent = new Intent(this, ViewerActivity.class);
-        intent.putExtra("map", mGame.getName()+"_map");
-        startActivity(intent);
-    }
-
-
-    public void onScannerClick(View v)
-    {
-        Intent intent = new Intent(this, ARActivity.class);
-        intent.putExtra("game", mGame);
-        startActivity(intent);
-    }
-
-
-    public void onInventaireClick(View v)
-    {
-        Intent intent = new Intent(this, ResourceListActivity.class);
-        intent.putExtra("game", mGame);
-        startActivity(intent);
-    }
-
-
-    public void onInfoClick(View v) {
-        Intent intent = new Intent(this, ViewerActivity.class);
-        Stage s = mGame.getCurrentStageObj();
-        Resource r = (s!=null)?s.getResource(): null;
-        intent.putExtra("resource", r );
-        startActivity(intent);
-    }
-
-
-    public void onSendClick(View v)
-    {
-        //TODO : Transmssion des donnes
-        boolean finished = mGame.nextStage();
-
-        Stage s = mGame.getCurrentStageObj();
-        Resource stageRes = s.getResource();
-
-        if(finished)
-        {
-            Intent intent2 = new Intent(this, EndActivity.class);
-            startActivity(intent2);
-        }
-
-        Intent intent = new Intent(this, ViewerActivity.class);
-        intent.putExtra("resource", stageRes );
-        startActivity(intent);
-
-
-        Intent intent2 = new Intent(this, TransferActivity.class);
-        startActivity(intent2);
-    }
-
-
-
-}

+ 36 - 8
app/src/main/java/app/brest/testmin3d/PermissionActivity.java

@@ -8,21 +8,45 @@ import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
+import android.text.Html;
 import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
 import android.widget.Toast;
 
+import app.brest.utils.files.FileManager;
+
 public class PermissionActivity extends AppCompatActivity {
     private int m_nPerm=3;
     static final int PERM_FINE_LOCATION=1337;
     static final int PERM_CAMERA=1338;
     static final int PERM_COARSE_LOCATION=1339;
+    protected TextView mText;
+
+    private static final String DISCLAMER="<h1>Attention :</h1> \n" +
+            "<h2>Ce jeu nécessite des déplacement en ville.</h2>\n" +
+            "Veillez à respecter les règles suivantes : <br>\n" +
+            "Les enfants doivent être accompagnés d’un adulte. <br>\n" +
+            "Faites attention à la circulation. <br>\n" +
+            "Soyez vigilant sur l’environnement (altitude, marches, etc). <br>\n" +
+            "Ne jouer pas en conduisant. <br>\n" +
+            "\n" +
+            "<h3>Restez toujours conscient de votre environnement.</h3>\n" +
+            "<h3>En continuant, vous convenez que l’utilisation du jeu est à vos propres risques et responsabilités.</h3>";
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_permission);
 
-
-
+        FileManager.init(this);
+        mText = (TextView) findViewById(R.id.disclamer);
+        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) {
+            mText.setText(Html.fromHtml(DISCLAMER));
+        }else
+        {
+            mText.setText(Html.fromHtml(DISCLAMER, Html.FROM_HTML_MODE_COMPACT));
+        }
 
 
 
@@ -43,14 +67,12 @@ public class PermissionActivity extends AppCompatActivity {
             ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERM_COARSE_LOCATION);
         } else m_nPerm--;
 
-        if(m_nPerm==0)
-        {
-            Intent intent = new Intent(this, NewMenuActivity.class);
-            startActivity(intent);
-        }
+
 
     }
 
+
+
     public void onRequestPermissionsResult(int requestCode,
                                            String permissions[], int[] grantResults) {
         switch (requestCode) {
@@ -71,7 +93,13 @@ public class PermissionActivity extends AppCompatActivity {
                 break;
         }
 
-        if(m_nPerm==0) {
+
+    }
+
+    public void onUnderstood(View v)
+    {
+        if(m_nPerm==0)
+        {
             Intent intent = new Intent(this, NewMenuActivity.class);
             startActivity(intent);
         }

+ 1 - 7
app/src/main/java/app/brest/testmin3d/TransferActivity.java

@@ -64,13 +64,8 @@ public class TransferActivity extends Activity {
                 AlertDialog dialog = builder.create();
                 try{
                     dialog.show();
-                }catch(Exception e)
-                {
-
+                }catch(Exception e) {
                 }
-
-
-
             }
         }
 
@@ -81,7 +76,6 @@ public class TransferActivity extends Activity {
     {
         int ix = mCurrentPos % PERIODE_SEND;
         float x= ((float)mCurrentPos)/ ((float)PERIODE_SEND);
-        Log.e("func__", "func = "+x+" -> "+(float)(Math.cos(x)*0.8+0.2));
         return (float)(Math.cos(x)*0.4+0.6);
     }
 }

+ 56 - 10
app/src/main/java/app/brest/testmin3d/ViewerActivity.java

@@ -2,6 +2,7 @@ package app.brest.testmin3d;
 
 import android.annotation.SuppressLint;
 import android.content.Intent;
+import android.graphics.Bitmap;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.support.v4.view.MotionEventCompat;
@@ -24,7 +25,9 @@ import android.widget.VideoView;
 import java.io.InputStream;
 import java.util.ArrayList;
 
+import app.brest.app.brest.ui.MediaView;
 import app.brest.utils.app.brest.game.Resource;
+import app.brest.utils.files.FileManager;
 import app.brest.utils.geometry.Point;
 import min3d.core.Object3d;
 import min3d.core.Object3dContainer;
@@ -50,6 +53,8 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
     private Button mButton;
     private TextView mText;
     private PhotoViewAttacher mAttacher;
+    private MediaView       mMediaView;
+
     protected float mPreviousX;
     protected float mPreviousY;
     protected float mPreviousDist=0;
@@ -65,7 +70,8 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
         mImageView = (ImageView) findViewById(R.id.imageView);
         mButton = (Button) findViewById(R.id.button_info);
         mText = (TextView) findViewById(R.id.tv_comment);
-
+        mMediaView = new MediaView(this);
+        mFrameLayout.addView(mMediaView);
         if(getIntent().hasExtra("resource"))
         {
             mResource = (Resource) getIntent().getSerializableExtra("resource");
@@ -75,15 +81,21 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
         VideoView m_c = (VideoView)findViewById(R.id.vv_media);
         Button title = (Button)findViewById(R.id.b_title);
         m_c.setVisibility(View.INVISIBLE);
+        mMediaView.setVisibility(View.INVISIBLE);
         if(mResource != null && !getIntent().hasExtra("information") && !getIntent().hasExtra("map"))
         {
             Log.e("______", "Type="+mResource.getType());
             title.setText(mResource.getTitle());
             if(mResource.getType().compareTo("Image")==0)
             {
-                int id = getResources().getIdentifier(mResource.getName(),"drawable", getPackageName());
+                Bitmap bmp=null;
+                try {
+                     bmp = FileManager.openImage(mResource.getName());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
 
-                mImageView.setImageResource(id);
+                mImageView.setImageBitmap(bmp);
                 mAttacher = new PhotoViewAttacher(mImageView);
                 mAttacher.setMaximumScale(20);
             }
@@ -94,24 +106,38 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
                 mc.setVisibility(View.INVISIBLE);
             }else
             {
-                String path="android.resource://app.brest.testmin3d/raw/"+mResource.getName();
+                String path=mResource.getName();
                 if(mResource.getType().compareTo("Audio")==0) path+="_audio";
                 else path+="_video";
                 mImageView.setVisibility(View.INVISIBLE);
                 _glSurfaceView.setVisibility(View.INVISIBLE);
                 _glSurfaceView.setOnTouchListener(this);
-                VideoView mc = (VideoView)findViewById(R.id.vv_media);
+                mMediaView.setVisibility(View.VISIBLE);
+                /*VideoView mc = (VideoView)findViewById(R.id.vv_media);
+
                 mc.setVisibility(View.VISIBLE);
-                Uri video = Uri.parse(path);
-                mc.setVideoURI(video);
-                mc.start();
+                Uri video = null;
+                try {
+                    video = FileManager.getUri(path);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                //mc.setVideoURI(video);
+                mc.start();*/
+                mMediaView.play(path);
+
             }
 
         } else if(getIntent().hasExtra("map") )
         {
-            int id = getResources().getIdentifier(getIntent().getStringExtra("map"),"drawable", getPackageName());
+            Bitmap bmp=null;
+            try {
+                bmp = FileManager.openImage(mResource.getName());
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
             title.setText("Carte");
-            mImageView.setImageResource(id);
+            mImageView.setImageBitmap(bmp);
             mAttacher = new PhotoViewAttacher(mImageView);
             mAttacher.setMaximumScale(20);
             mButton.setVisibility(View.INVISIBLE);
@@ -134,6 +160,26 @@ public class ViewerActivity extends RendererActivity implements View.OnTouchList
         startActivity(intent);
     }
 
+    protected  void onPause()
+    {
+        mMediaView.stop();
+        super.onPause();
+
+    }
+
+    public void finish()
+    {
+
+        mMediaView.stop();
+        super.finish();
+    }
+
+    public void onDestroy()
+    {
+        mMediaView.stop();
+        super.onDestroy();
+    }
+
     public void initScene()
     {
 

+ 22 - 2
app/src/main/java/app/brest/utils/app/brest/game/Game.java

@@ -23,6 +23,7 @@ import app.brest.utils.JSONLoader;
 import app.brest.utils.ResourceManager;
 import app.brest.utils.SensorsManager;
 import app.brest.utils.Settings;
+import app.brest.utils.files.JSONAssetsManager;
 
 /**
  * Created by ptitcois on 19/08/16.
@@ -39,15 +40,19 @@ public class Game  implements Serializable {
     protected String           mName;
     protected Settings         mSettings = new Settings();
     protected boolean          mFinished= false;
+    protected boolean          mFirstLaunch=true;
+
+    protected String           mMap=null;
 
     public Game(String name, Activity act)
     {
-        JSONObject root = JSONLoader.load(act, name);
+        JSONObject root = JSONAssetsManager.load(act, name);
         mName=name;
         mPlayer = new Player(act);
         try {
             JSONArray areas = root.getJSONArray("areas");
             JSONArray stages = root.getJSONArray("stages_list");
+
             for(int i=0; i<areas.length(); i++)
                 mAreas.add(new Area(areas.getJSONObject(i), act));
             for(int i=0; i<stages.length(); i++) {
@@ -59,16 +64,29 @@ public class Game  implements Serializable {
             findMaxStage();
             mResources = new ResourceManager( getAllResources(act), mNStages);
             nextStage();
-
         } catch (JSONException e) {
             e.printStackTrace();
         }
+
+        try {
+            mMap=root.getString("map");
+        } catch (JSONException e) {
+        }
     }
+
     public Stage getCurrentStageObj()
     {
         return mCurrentStage<=mStages.size()?mStages.get(mCurrentStage-1):null;
     }
 
+    public void checkFirstLaunch()
+    {
+        if(mFirstLaunch) {
+
+            mFirstLaunch=false;
+        }
+    }
+
     public Stage getStage(int i)
     {
         return mStages.get(i);
@@ -200,6 +218,8 @@ public class Game  implements Serializable {
         }
         out+="mNStages :" +mNStages +"\n";
         out+="mCurrentStage" + mCurrentStage +"\n";
+        if(mMap!=null) out+="mMap : '"+mMap+"'\n";
+        else out+="mMap : null\n";
         return out;
     }
 

+ 3 - 4
app/src/main/java/app/brest/utils/app/brest/game/Resource.java

@@ -10,6 +10,7 @@ import java.io.InputStream;
 import java.io.Serializable;
 
 import app.brest.utils.JSONLoader;
+import app.brest.utils.files.JSONAssetsManager;
 import min3d.core.Object3d;
 import min3d.parser.IParser;
 import min3d.parser.Parser;
@@ -34,9 +35,7 @@ public class Resource implements Serializable {
     protected void loadResourceData(Activity act)
     {
         System.out.println("Loading ressource res/raw/"+mName+"_res");
-        int id = act.getResources().getIdentifier(mName+"_res","raw", act.getPackageName());
-        InputStream inputStream = act.getResources().openRawResource(id);
-        JSONObject obj = JSONLoader.load(act, mName+"_res");
+        JSONObject obj = JSONAssetsManager.load(act, mName+"_res");
         try {
             mComment=obj.getString("comment");
             mPosition.x =(float) obj.getJSONArray("position").getDouble(0);
@@ -129,7 +128,7 @@ public class Resource implements Serializable {
         if(m3DModel==null)
         {
             Log.e("resource.get3Model", "app.brest.testmin3d:raw/"+mName+"_obj");
-            IParser myParser = Parser.createParser(Parser.Type.OBJ, context.getResources(), "app.brest.testmin3d:raw/"+mName+"_obj",true);
+            IParser myParser = Parser.createParser(Parser.Type.OBJ,  mName+"_obj",true);
             myParser.parse();
 
             m3DModel = myParser.getParsedObject();

+ 10 - 0
app/src/main/java/app/brest/utils/app/brest/game/Stage.java

@@ -20,6 +20,7 @@ public class Stage implements Serializable {
             mStage=obj.getInt("stage");
             mResourceName=obj.getString("resource");
             mNResourceStep=obj.getInt("n_resource_step");
+            mIsTransition=obj.getBoolean("transition");
         } catch (JSONException e) {
             e.printStackTrace();
         }
@@ -30,6 +31,7 @@ public class Stage implements Serializable {
     protected Resource mResource;
     protected String mResourceName;
     protected int mNResourceStep;
+    protected boolean mIsTransition=true;
 
     public int getStage() {
         return mStage;
@@ -59,4 +61,12 @@ public class Stage implements Serializable {
     public void setResourceName(String mResourceName) {
         this.mResourceName = mResourceName;
     }
+
+    public boolean isTransition() {
+        return mIsTransition;
+    }
+
+    public void setIsTransition(boolean mIsTransition) {
+        this.mIsTransition = mIsTransition;
+    }
 }

+ 55 - 3
app/src/main/java/app/brest/utils/files/FileManager.java

@@ -1,6 +1,7 @@
 package app.brest.utils.files;
 
 import android.app.Activity;
+import android.content.res.AssetFileDescriptor;
 import android.content.res.AssetManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -23,7 +24,7 @@ public class FileManager {
         m_asset=a.getAssets();
     }
 
-    public static boolean isInit() throws Exception {
+    private static boolean isInit() throws Exception {
         if(m_asset==null)
         {
             throw new Exception("Erreur FileManager non initialisee");
@@ -41,13 +42,41 @@ public class FileManager {
         }
         return is;
     }
+    private static final String[]  IMG_EXT={"", ".jpg" , ".JPG",
+            ".jpeg" , ".JPEG",
+            ".bmp", ".BMP",
+            ".gif", ".GIF",
+            ".png", ".PNG"
+            };
+    private static final String[]  MEDIA_EXT={"", ".3gp" , ".3GP",
+            ".mp4", ".MP4",
+            ".avi", ".AVI",
+            ".webm", ".WEBM",
+            ".mkv", ".MKV",
+            ".aac", ".AAC",
+            ".flac", ".FLAC",
+            ".mid", ".MID",
+            ".midi", ".MIDI",
+            ".mp3", ".MP3",
+            ".wav", ".WAV",
+            ".ogg", ".OGG"};
+
+    private static InputStream testIimage(String path) throws Exception {
+        for(int i=0; i<IMG_EXT.length; i++)
+        {
+            InputStream is = openFile(path+IMG_EXT[i]);
+            if(is!=null)
+                return is;
+        }
+        return null;
+    }
 
     public static Bitmap openImage(String path) throws Exception {
         isInit();
         InputStream is = null;
         Bitmap bitmap = null;
         try {
-            is = m_asset.open(path);
+            is = testIimage(path);
             bitmap = BitmapFactory.decodeStream(is);
         } catch (IOException e) {
             e.printStackTrace();
@@ -57,7 +86,30 @@ public class FileManager {
 
     public static Uri getUri(String path) throws Exception {
         isInit();
-        return Uri.parse("file:///android_asset/"+path);
+        return Uri.parse("file:///android_asset/" + path);
+    }
+
+
+    private static AssetFileDescriptor testVideo(String path) {
+        for(int i=0; i<MEDIA_EXT.length; i++)
+        {
+            AssetFileDescriptor is = null;
+            try {
+                is = m_asset.openFd(path+MEDIA_EXT[i]);
+
+                System.out.println("Test = "+path+MEDIA_EXT[i]+" "+is);
+                if(is!=null)
+                    return is;
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    public static AssetFileDescriptor getAfdMedia(String path)
+    {
+        return testVideo(path);
     }
 
 }

+ 6 - 5
app/src/main/java/app/brest/utils/files/JSONAssetsManager.java

@@ -15,11 +15,12 @@ import java.io.InputStream;
 public class JSONAssetsManager {
         public static JSONObject load(Activity context, String name)
         {
-            int id = context.getResources().getIdentifier(name,"raw", context.getPackageName());
-
-
-
-            InputStream inputStream = context.getResources().openRawResource(id);
+            InputStream inputStream = null;
+            try {
+                inputStream = FileManager.openFile(name);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 
             int ctr;

+ 36 - 10
app/src/main/java/min3d/parser/AParser.java

@@ -9,6 +9,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 
+import app.brest.utils.files.FileManager;
 import min3d.Min3d;
 import min3d.Shared;
 import min3d.Utils;
@@ -42,7 +43,8 @@ public abstract class AParser implements IParser {
 	protected ArrayList<Number3d> normals;
 	protected boolean generateMipMap;
 	protected HashMap<String, Material> materialMap;
-	
+	protected InputStream mStream=null;
+	protected String 	  mPath;
 	public AParser()
 	{
 		vertices = new ArrayList<Number3d>();
@@ -53,7 +55,7 @@ public abstract class AParser implements IParser {
 		firstObject = true;
 		materialMap = new HashMap<String, Material>();
 	}
-	
+
 	public AParser(Resources resources, String resourceID, Boolean generateMipMap)
 	{
 		this();
@@ -63,6 +65,21 @@ public abstract class AParser implements IParser {
 			this.packageID = resourceID.split(":")[0];
 		this.generateMipMap = generateMipMap;
 	}
+
+	public AParser(String path, Boolean generateMipMap)
+	{
+		this();
+		mPath=path;
+		try {
+			mStream= FileManager.openFile(path);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		int d = mPath.lastIndexOf('/');
+		if(d>=0) packageID=mPath.substring(0,d);
+		else packageID="";
+		this.generateMipMap = generateMipMap;
+	}
 	
 	protected void cleanup()
 	{
@@ -202,16 +219,25 @@ public abstract class AParser implements IParser {
 
 			if(existingBA == null)
 			{
-				int bmResourceID = resources.getIdentifier(ba.resourceID, null, null);
-				if(bmResourceID == 0)
+				Bitmap b=null;
+				if(mStream==null) {
+					int bmResourceID = resources.getIdentifier(ba.resourceID, null, null);
+					if (bmResourceID == 0) {
+						Log.d(Min3d.TAG, "Texture not found: " + ba.resourceID);
+						return;
+					}
+
+					Log.d(Min3d.TAG, "Adding texture " + ba.resourceID);
+
+					b = Utils.makeBitmapFromResourceId(bmResourceID);
+				}else
 				{
-					Log.d(Min3d.TAG, "Texture not found: " + ba.resourceID);
-					return;
+					try {
+						b=FileManager.openImage(ba.resourceID);
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
 				}
-
-				Log.d(Min3d.TAG, "Adding texture " + ba.resourceID);
-				
-				Bitmap b = Utils.makeBitmapFromResourceId(bmResourceID);
 				ba.useForAtlasDimensions = true;
 				ba.bitmap = b;
 			}

+ 13 - 2
app/src/main/java/min3d/parser/MD2Parser.java

@@ -25,6 +25,12 @@ public class MD2Parser extends AParser implements IParser {
 		super(resources, resourceID, generateMipMap);
 	}
 
+
+	public MD2Parser(String is, boolean generateMipMap) {
+		super(is, generateMipMap);
+	}
+
+
 	@Override
 	public AnimationObject3d getParsedAnimationObject() {
 		Log.d(Min3d.TAG, "Start object creation");
@@ -53,8 +59,13 @@ public class MD2Parser extends AParser implements IParser {
 
 	@Override
 	public void parse() {
-		InputStream fileIn = resources.openRawResource(resources.getIdentifier(
-				resourceID, null, null));
+
+		InputStream fileIn = null;
+		if(mStream==null)
+		{
+			fileIn =resources.openRawResource(resources.getIdentifier(
+					resourceID, null, null));
+		}else fileIn = mStream;
 		BufferedInputStream stream = new BufferedInputStream(fileIn);
 
 		co = new ParseObjectData();

+ 11 - 2
app/src/main/java/min3d/parser/Max3DSParser.java

@@ -36,10 +36,19 @@ public class Max3DSParser extends AParser implements IParser {
 		super(resources, resourceID, generateMipMap);
 	}
 
+
+	public Max3DSParser(String is, boolean generateMipMap) {
+		super(is, generateMipMap);
+	}
+
 	@Override
 	public void parse() {
-		InputStream fileIn = resources.openRawResource(resources.getIdentifier(
-				resourceID, null, null));
+		InputStream fileIn = null;
+		if(mStream==null)
+		{
+			fileIn =resources.openRawResource(resources.getIdentifier(
+					resourceID, null, null));
+		}else fileIn = mStream;
 		BufferedInputStream stream = new BufferedInputStream(fileIn);
 		
 		Log.d(Min3d.TAG, "Start parsing object");

+ 35 - 12
app/src/main/java/min3d/parser/ObjParser.java

@@ -9,6 +9,7 @@ import java.util.HashMap;
 import java.util.StringTokenizer;
 
 import app.brest.testmin3d.R;
+import app.brest.utils.files.FileManager;
 import min3d.Min3d;
 import min3d.Shared;
 import min3d.Utils;
@@ -54,12 +55,22 @@ public class ObjParser extends AParser implements IParser {
 		System.err.println("Parser:"+resourceID);
 	}
 
+	public ObjParser(String is, boolean generateMipMap) {
+		super(is, generateMipMap);
+		System.out.println("Parser:"+resourceID);
+		System.err.println("Parser:"+resourceID);
+	}
+
 	@Override
 	public void parse() {
 		long startTime = Calendar.getInstance().getTimeInMillis();
 
-		InputStream fileIn = resources.openRawResource(resources.getIdentifier(
-				resourceID, null, null));
+		InputStream fileIn = null;
+		if(mStream==null)
+		{
+			fileIn =resources.openRawResource(resources.getIdentifier(
+					resourceID, null, null));
+		}else fileIn = mStream;
 		BufferedReader buffer = new BufferedReader(
 				new InputStreamReader(fileIn));
 		String line;
@@ -165,17 +176,29 @@ public class ObjParser extends AParser implements IParser {
 	}
 
 	private void readMaterialLib(String libID) {
-		StringBuffer resourceID = new StringBuffer(packageID);
+		InputStream fileIn=null;
 		StringBuffer libIDSbuf = new StringBuffer(libID);
 		int dotIndex = libIDSbuf.lastIndexOf(".");
 		if (dotIndex > -1)
 			libIDSbuf = libIDSbuf.replace(dotIndex, dotIndex + 1, "_");
+		if(mStream==null) {
+			StringBuffer resourceID = new StringBuffer(packageID);
+
+
+			resourceID.append(":raw/");
+			resourceID.append(libIDSbuf.toString());
+			Log.e("OBJParser", "Load MTL '" + resourceID.toString() + "'");
+			fileIn = resources.openRawResource(resources.getIdentifier(
+					resourceID.toString(), null, null));
+		}else {
+			try {
+				fileIn = FileManager.openFile(packageID+libID);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
 
-		resourceID.append(":raw/");
-		resourceID.append(libIDSbuf.toString());
-		Log.e("OBJParser", "Load MTL '"+resourceID.toString()+"'");
-		InputStream fileIn = resources.openRawResource(resources.getIdentifier(
-				resourceID.toString(), null, null));
 		BufferedReader buffer = new BufferedReader(
 				new InputStreamReader(fileIn));
 		String line;
@@ -201,7 +224,7 @@ public class ObjParser extends AParser implements IParser {
 					if (parts.length > 1) {
 						materialMap.get(currentMaterial).diffuseTextureMap = parts[1];
 						StringBuffer texture = new StringBuffer(packageID);
-						texture.append(":drawable/");
+						if(mStream==null) texture.append(":drawable/");
 						
 						StringBuffer textureName = new StringBuffer(parts[1]);
 						dotIndex = textureName.lastIndexOf(".");
@@ -209,10 +232,10 @@ public class ObjParser extends AParser implements IParser {
 							texture.append(textureName.substring(0, dotIndex));
 						else
 							texture.append(textureName);
-						
-						int bmResourceID = resources.getIdentifier(texture
+						System.out.println("Drawable = "+texture.toString());
+						/*int bmResourceID = resources.getIdentifier(texture
 								.toString(), null, null);
-						Bitmap b = Utils.makeBitmapFromResourceId(bmResourceID);
+						Bitmap b = Utils.makeBitmapFromResourceId(bmResourceID);*/
 						textureAtlas.addBitmapAsset(new BitmapAsset(currentMaterial, texture.toString()));
 					}
 				}

+ 17 - 0
app/src/main/java/min3d/parser/Parser.java

@@ -2,6 +2,8 @@ package min3d.parser;
 
 import android.content.res.Resources;
 
+import java.io.InputStream;
+
 /**
  * Parser factory class. Specify the parser type and the corresponding
  * specialized class will be returned.
@@ -37,4 +39,19 @@ public class Parser {
 		
 		return null;
 	}
+
+	public static IParser createParser(Type type, String is, boolean generateMipMap)
+	{
+		switch(type)
+		{
+			case OBJ:
+				return new ObjParser(is, generateMipMap);
+			case MAX_3DS:
+				return new Max3DSParser(is, generateMipMap);
+			case MD2:
+				return new MD2Parser(is, generateMipMap);
+		}
+
+		return null;
+	}
 }

binární
app/src/main/res/drawable/a.jpg


binární
app/src/main/res/drawable/a_texture.jpg


binární
app/src/main/res/drawable/aa.jpg


binární
app/src/main/res/drawable/aa_texture.jpg


binární
app/src/main/res/drawable/aaa.jpg


binární
app/src/main/res/drawable/aaa_texture.jpg


binární
app/src/main/res/drawable/ab.jpg


binární
app/src/main/res/drawable/ab_texture.jpg


binární
app/src/main/res/drawable/ac.jpg


binární
app/src/main/res/drawable/ac_texture.jpg


binární
app/src/main/res/drawable/ad.jpg


binární
app/src/main/res/drawable/ad_texture.jpg


binární
app/src/main/res/drawable/ae.jpg


binární
app/src/main/res/drawable/ae_texture.jpg


binární
app/src/main/res/drawable/af.jpg


binární
app/src/main/res/drawable/af_texture.jpg


binární
app/src/main/res/drawable/ag.jpg


binární
app/src/main/res/drawable/ag_texture.jpg


binární
app/src/main/res/drawable/ah.jpg


binární
app/src/main/res/drawable/ah_texture.jpg


binární
app/src/main/res/drawable/angle_pont.jpg


binární
app/src/main/res/drawable/angle_pontp.jpg


binární
app/src/main/res/drawable/b.jpg


binární
app/src/main/res/drawable/b_texture.jpg


binární
app/src/main/res/drawable/ba.jpg


binární
app/src/main/res/drawable/ba_texture.jpg


binární
app/src/main/res/drawable/barong.jpg


binární
app/src/main/res/drawable/bb.jpg


binární
app/src/main/res/drawable/bb_texture.jpg


binární
app/src/main/res/drawable/bbb.jpg


binární
app/src/main/res/drawable/bbb_texture.jpg


binární
app/src/main/res/drawable/bc.jpg


binární
app/src/main/res/drawable/bc_texture.jpg


binární
app/src/main/res/drawable/bd.jpg


binární
app/src/main/res/drawable/bd_texture.jpg


binární
app/src/main/res/drawable/be.jpg


binární
app/src/main/res/drawable/be_texture.jpg


binární
app/src/main/res/drawable/bf.jpg


binární
app/src/main/res/drawable/bf_texture.jpg


binární
app/src/main/res/drawable/bg.jpg


binární
app/src/main/res/drawable/bg_texture.jpg


binární
app/src/main/res/drawable/c.jpg


binární
app/src/main/res/drawable/c_texture.jpg


binární
app/src/main/res/drawable/camaro.jpg


binární
app/src/main/res/drawable/camaro_res.jpg


binární
app/src/main/res/drawable/carte.png


binární
app/src/main/res/drawable/cc.jpg


binární
app/src/main/res/drawable/cc_texture.jpg


binární
app/src/main/res/drawable/ccc.jpg


binární
app/src/main/res/drawable/ccc_texture.jpg


binární
app/src/main/res/drawable/ceiling.jpg


binární
app/src/main/res/drawable/checkerboard.png


binární
app/src/main/res/drawable/clouds_alpha2b.png


binární
app/src/main/res/drawable/d.jpg


binární
app/src/main/res/drawable/d_texture.jpg


binární
app/src/main/res/drawable/deadmickey.jpg


binární
app/src/main/res/drawable/e.jpg


binární
app/src/main/res/drawable/e_texture.jpg


binární
app/src/main/res/drawable/f.jpg


binární
app/src/main/res/drawable/f_texture.jpg


binární
app/src/main/res/drawable/face.jpg


binární
app/src/main/res/drawable/face_eyel_hi.jpg


binární
app/src/main/res/drawable/face_eyer_hi.jpg


binární
app/src/main/res/drawable/face_skin_hi.jpg


binární
app/src/main/res/drawable/face_sock.jpg


binární
app/src/main/res/drawable/face_texture.jpg


binární
app/src/main/res/drawable/floor.jpg


binární
app/src/main/res/drawable/g.jpg


binární
app/src/main/res/drawable/g_texture.jpg


binární
app/src/main/res/drawable/game_medium_map.png


binární
app/src/main/res/drawable/icon.png


binární
app/src/main/res/drawable/info.png


binární
app/src/main/res/drawable/inventaire.png


binární
app/src/main/res/drawable/jupiter.jpg


binární
app/src/main/res/drawable/maqjpg.jpg


binární
app/src/main/res/drawable/monster.jpg


binární
app/src/main/res/drawable/moon.jpg


binární
app/src/main/res/drawable/ogrobase.jpg


binární
app/src/main/res/drawable/options.png


binární
app/src/main/res/drawable/revenant.jpg


binární
app/src/main/res/drawable/scanner.png


binární
app/src/main/res/drawable/stonetexture.jpg


binární
app/src/main/res/drawable/uglysquares.png


binární
app/src/main/res/drawable/white_with_alpha_hole.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů