From 051bce897379bbfacdf6a1175118998d963d4449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Sat, 20 Jun 2015 17:04:11 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20ajout=20d'un=20asset=20manager=20ecran?= =?UTF-8?q?=20de=20chargement=20avec=20jauge=20am=C3=A9lioration=20de=20l'?= =?UTF-8?q?algorithme=20de=20coloration=20des=20textures=20traitement=20si?= =?UTF-8?q?multan=C3=A9=20du=20chargement=20et=20de=20la=20coloration=20so?= =?UTF-8?q?n=20en=20streaming,=20ok=20sur=20android.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/fr/evolving/assets/AssetLoader.java | 71 ++++++++++++++----- core/src/fr/evolving/screens/LevelScreen.java | 2 +- .../src/fr/evolving/screens/SplashScreen.java | 19 +++-- 3 files changed, 67 insertions(+), 25 deletions(-) diff --git a/core/src/fr/evolving/assets/AssetLoader.java b/core/src/fr/evolving/assets/AssetLoader.java index 479e52b..64b89bb 100644 --- a/core/src/fr/evolving/assets/AssetLoader.java +++ b/core/src/fr/evolving/assets/AssetLoader.java @@ -2,6 +2,9 @@ package fr.evolving.assets; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; +import com.badlogic.gdx.assets.AssetManager; +import com.badlogic.gdx.assets.loaders.SkinLoader; +import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.Camera; import com.badlogic.gdx.graphics.Color; @@ -13,6 +16,7 @@ import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.TextureData; import com.badlogic.gdx.graphics.g2d.Animation; import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.NinePatch; import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.Texture.TextureWrap; @@ -28,7 +32,7 @@ public class AssetLoader { public static Texture Texture_fond; public static Texture Texture_fond2; public static Texture Texture_logo; - public static Sound intro; + public static Music intro; public static int width; public static Color[] Levelcolors; public static Color[] Typecolors; @@ -39,37 +43,51 @@ public class AssetLoader { public static Preferences prefs; public static ScalingViewport viewport; public static OrthographicCamera Camera; + private static Texture emptyT; + private static Texture fullT; + public static NinePatch empty; + public static NinePatch full; + public static AssetManager manager; public static void addstyle(TextureAtlas Atlas_level,String Name) { AtlasRegion AnAtlasRegion = Atlas_level.findRegion(Name); if (AnAtlasRegion==null) return; TextureData ATextureData = AnAtlasRegion.getTexture().getTextureData(); ATextureData.prepare(); - Pixmap Pixmap_Over=ATextureData.consumePixmap(); - Pixmap Pixmap_Disable=new Pixmap(Pixmap_Over.getWidth(), Pixmap_Over.getHeight(), Pixmap.Format.RGBA8888); - Pixmap Pixmap_Down=new Pixmap(Pixmap_Over.getWidth(), Pixmap_Over.getHeight(), Pixmap.Format.RGBA8888); - for(int x=0; x < Pixmap_Over.getWidth(); x++) + Pixmap Pixmap_Ori=ATextureData.consumePixmap(); + Pixmap Pixmap_Over=new Pixmap(AnAtlasRegion.getRegionWidth(), AnAtlasRegion.getRegionHeight(), Pixmap.Format.RGBA8888); + Pixmap Pixmap_Disable=new Pixmap(AnAtlasRegion.getRegionWidth(), AnAtlasRegion.getRegionHeight(), Pixmap.Format.RGBA8888); + Pixmap Pixmap_Down=new Pixmap(AnAtlasRegion.getRegionWidth(), AnAtlasRegion.getRegionHeight(), Pixmap.Format.RGBA8888); + Color acolor; + for(int x=0; x < AnAtlasRegion.getRegionWidth(); x++) { - for(int y =0; y < Pixmap_Over.getHeight(); y++) + for(int y =0; y < AnAtlasRegion.getRegionHeight(); y++) { - Color acolor= new Color(Pixmap_Over.getPixel(x, y)); + acolor= new Color(Pixmap_Ori.getPixel(AnAtlasRegion.getRegionX()+x, AnAtlasRegion.getRegionY()+y)); Pixmap_Down.drawPixel(x, y,Color.rgba8888(acolor.a,0f,0f,acolor.a)); Pixmap_Disable.drawPixel(x, y, Color.rgba8888(acolor.r*0.352f,acolor.g*0.352f,acolor.b*0.352f,acolor.a)); Pixmap_Over.drawPixel(x, y, Color.rgba8888(acolor.r,acolor.g*0.2f,acolor.b*0.2f,acolor.a)); } } - Atlas_level.addRegion(Name+"_disabled", new TextureRegion(new Texture(Pixmap_Disable),AnAtlasRegion.getRegionX(),AnAtlasRegion.getRegionY(),AnAtlasRegion.getRegionWidth(),AnAtlasRegion.getRegionHeight())); - Atlas_level.addRegion(Name+"_over", new TextureRegion(new Texture(Pixmap_Over),AnAtlasRegion.getRegionX(),AnAtlasRegion.getRegionY(),AnAtlasRegion.getRegionWidth(),AnAtlasRegion.getRegionHeight())); - Atlas_level.addRegion(Name+"_down", new TextureRegion(new Texture(Pixmap_Down),AnAtlasRegion.getRegionX(),AnAtlasRegion.getRegionY(),AnAtlasRegion.getRegionWidth(),AnAtlasRegion.getRegionHeight())); + Atlas_level.addRegion(Name+"_disabled", new TextureRegion(new Texture(Pixmap_Disable))); + Atlas_level.addRegion(Name+"_over", new TextureRegion(new Texture(Pixmap_Over))); + Atlas_level.addRegion(Name+"_down", new TextureRegion(new Texture(Pixmap_Down))); } public static void loadall() { - Gdx.app.debug("AssetLoader","Chargements de tout les éléments multimédia"); - Texture_fond = new Texture(Gdx.files.internal("pictures/fond.png")); - Texture_fond.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); - Texture_fond2 = new Texture(Gdx.files.internal("pictures/fond2.png")); - Texture_fond2.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); - Atlas_level= new TextureAtlas(Gdx.files.internal("textures/level.pack")); + Gdx.app.debug("AssetLoader","Initialisation du asset manager"); + manager = new AssetManager(); + Gdx.app.debug("AssetLoader","Initialisation du chargement des éléments multimédia"); + manager.load("textures/level.pack", TextureAtlas.class); + manager.load("pictures/fond.png", Texture.class); + manager.load("pictures/fond2.png", Texture.class); + manager.load("musics/intro.mp3", Music.class); + } + + public static void finishall() { + Gdx.app.debug("AssetLoader","Ajout des textures disabled,over et down"); + Atlas_level = manager.get("textures/level.pack"); + if (manager.isLoaded("textures/level.pack")) { for(int i=0; i < 5; i++) addstyle(Atlas_level,"leveler"+String.valueOf(i)); addstyle(Atlas_level,"arrows"); @@ -80,15 +98,26 @@ public class AssetLoader { addstyle(Atlas_level,"cycle"); addstyle(Atlas_level,"temp"); addstyle(Atlas_level,"nrj"); - addstyle(Atlas_level,"rayon"); - Skin_level = new Skin(Gdx.files.internal("textures/level.json"),Atlas_level); + addstyle(Atlas_level,"rayon"); + } + Gdx.app.debug("AssetLoader","Chargement des skins et attente fin chargement"); + manager.load("textures/level.json", Skin.class, new SkinLoader.SkinParameter("textures/level.pack")); + manager.finishLoading(); + Gdx.app.debug("AssetLoader","Affectation des éléments multimédia"); + intro = manager.get("musics/intro.mp3"); + Texture_fond = manager.get("pictures/fond.png"); + Texture_fond.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); + Texture_fond2 = manager.get("pictures/fond2.png"); + Texture_fond2.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); + Skin_level = manager.get("textures/level.json"); + Skin_level.addRegions(Atlas_level); + Gdx.app.debug("AssetLoader","Definition des constantes"); Levelcolors=new Color[5]; Levelcolors=new Color[]{AssetLoader.Skin_level.getColor("world1"),AssetLoader.Skin_level.getColor("world2"),AssetLoader.Skin_level.getColor("world3"),AssetLoader.Skin_level.getColor("world4"),AssetLoader.Skin_level.getColor("world5")}; Typecolors=new Color[13]; Typecolors=new Color[]{new Color(0,0,1f,1),new Color(0,0.6f,0,1),new Color(0.196f,0.803f,0.196f,1),new Color(0.5f,0.5f,0.5f,1),new Color(0.8f,0.8f,0.8f,1),new Color(0.6f,0,0,1),new Color(1f,0,0,1),new Color(0,0,0.6f,1),new Color(0,0,0.6f,1),new Color(0,0,0.6f,1),new Color(0,0,0.6f,1),new Color(0.294f,0.466f,0.615f,1),new Color(0.478f,0.192f,0.098f,1)}; Typenames=new String[13]; Typenames=new String[]{"E-","e-","Ph","e0","E0","e+","E+","K","L","M","N","n","p"}; - intro = Gdx.audio.newSound(Gdx.files.internal("musics/intro.mp3")); } public static int setpref() { @@ -133,6 +162,10 @@ public class AssetLoader { Gdx.app.debug("AssetLoader","Chargements des éléments minimalistes"); Texture_logo = new Texture(Gdx.files.internal("pictures/logo.png")); Texture_logo.setFilter(TextureFilter.Linear,TextureFilter.Linear); + emptyT=new Texture(Gdx.files.internal("pictures/empty.png")); + fullT=new Texture(Gdx.files.internal("pictures/full.png")); + empty=new NinePatch(new TextureRegion(emptyT,24,24),8,8,8,8); + full=new NinePatch(new TextureRegion(fullT,24,24),8,8,8,8); } public static void dispose() { diff --git a/core/src/fr/evolving/screens/LevelScreen.java b/core/src/fr/evolving/screens/LevelScreen.java index 52db3aa..033d5a6 100644 --- a/core/src/fr/evolving/screens/LevelScreen.java +++ b/core/src/fr/evolving/screens/LevelScreen.java @@ -217,7 +217,7 @@ public class LevelScreen implements Screen { stage.addActor(Victory); Gdx.input.setInputProcessor(stage); Gdx.app.debug("AssetLoader","Début dans la bande son \'intro\'"); - AssetLoader.intro.setLooping(0, true); + AssetLoader.intro.setLooping(true); AssetLoader.intro.play(); } diff --git a/core/src/fr/evolving/screens/SplashScreen.java b/core/src/fr/evolving/screens/SplashScreen.java index 42f6ba1..8be0b93 100644 --- a/core/src/fr/evolving/screens/SplashScreen.java +++ b/core/src/fr/evolving/screens/SplashScreen.java @@ -20,12 +20,15 @@ public class SplashScreen implements Screen { private Stage stage; private Image splashImage; private float scale; + private SpriteBatch batcher; public SplashScreen(main game) { - this.game = game; AssetLoader.load(); + this.game = game; + batcher= new SpriteBatch(); stage = new Stage(AssetLoader.viewport); splashImage = new Image(AssetLoader.Texture_logo); + AssetLoader.loadall(); } @Override @@ -35,14 +38,12 @@ public class SplashScreen implements Screen { splashImage.setScale(scale); splashImage.setPosition((AssetLoader.width / 2) - (scale * splashImage.getWidth() / 2), (AssetLoader.height / 2) - (scale * splashImage.getHeight() / 2)); stage.addActor(splashImage); - splashImage.addAction(Actions.sequence(Actions.alpha(0),Actions.fadeIn(0.5f),Actions.run(new Runnable() { - //splashImage.addAction(Actions.sequence(Actions.alpha(0),Actions.run(new Runnable() { + splashImage.addAction(Actions.sequence(Actions.alpha(0),Actions.fadeIn(5f),Actions.run(new Runnable() { @Override public void run() { - AssetLoader.loadall(); + AssetLoader.finishall(); } }),Actions.run(new Runnable() { - //splashImage.addAction(Actions.sequence(Actions.alpha(0),Actions.run(new Runnable() { @Override public void run() { ((Game)Gdx.app.getApplicationListener()).setScreen(new LevelScreen()); @@ -56,6 +57,14 @@ public class SplashScreen implements Screen { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); + if (AssetLoader.manager!=null) { + batcher.begin(); + batcher.setProjectionMatrix(AssetLoader.Camera.combined); + AssetLoader.empty.draw(batcher, (AssetLoader.width / 2) - 400f, 150f, 800f, 50f); + AssetLoader.full.draw(batcher, (AssetLoader.width / 2) - 400f, 150f, AssetLoader.manager.getProgress()*800f, 50f); + AssetLoader.manager.update(); + batcher.end(); + } } @Override