From ed1c9ee928b9a3217b4a72513bd01ef98c1bcc52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Sun, 19 Jun 2016 16:32:52 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20r=C3=A9=C3=A9criture=20de=20la=20classe?= =?UTF-8?q?=20worlds=20et=20ajout=20de=20fonctions=20ajout=20du=20mode=20?= =?UTF-8?q?=C3=A9dition=20dans=20levelscreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/fr/evolving/UI/IconValue.java | 32 +-- core/src/fr/evolving/UI/Menu.java | 8 +- core/src/fr/evolving/UI/Objectives.java | 4 +- core/src/fr/evolving/UI/VertiBarre.java | 2 +- core/src/fr/evolving/automata/Worlds.java | 128 +++++++-- .../fr/evolving/renderers/GameRenderer.java | 2 +- .../fr/evolving/renderers/LevelRenderer.java | 62 +---- core/src/fr/evolving/screens/GameScreen.java | 16 +- core/src/fr/evolving/screens/LevelScreen.java | 249 +++++++++++++----- 9 files changed, 323 insertions(+), 180 deletions(-) diff --git a/core/src/fr/evolving/UI/IconValue.java b/core/src/fr/evolving/UI/IconValue.java index 4619444..e406427 100644 --- a/core/src/fr/evolving/UI/IconValue.java +++ b/core/src/fr/evolving/UI/IconValue.java @@ -28,51 +28,51 @@ public class IconValue extends ImageTextButton{ { switch(this.icon) { case tech: - this.setText(String.valueOf(worlds.getInformations().Tech)); - this.setVisible(worlds.getInformations().Tech>=1 || worlds.isDebug()); + this.setText(String.valueOf(worlds.getLevelData().Tech)); + this.setVisible(worlds.getLevelData().Tech>=1 || worlds.isDebug()); break; case cout: - worlds.getInformations().Cout=worlds.getInformations().Cout_orig-worlds.getInformations().Cout_copperfiber-worlds.getInformations().Cout_transmuter; - this.setText(String.valueOf(worlds.getInformations().Cout)); - if (worlds.getInformations().Cout>0.25*worlds.getInformations().Cout_orig) + worlds.getLevelData().Cout=worlds.getLevelData().Cout_orig-worlds.getLevelData().Cout_copperfiber-worlds.getLevelData().Cout_transmuter; + this.setText(String.valueOf(worlds.getLevelData().Cout)); + if (worlds.getLevelData().Cout>0.25*worlds.getLevelData().Cout_orig) this.setColor(1f, 1f, 1f, 1f); - else if (worlds.getInformations().Cout>0) + else if (worlds.getLevelData().Cout>0) this.setColor(1f, 0.5f, 0.5f, 1f); else this.setColor(1f, 0, 0, 1f); - this.setVisible(worlds.getInformations().Cout_orig>0 || worlds.isDebug()); + this.setVisible(worlds.getLevelData().Cout_orig>0 || worlds.isDebug()); break; case research: this.setText(String.valueOf(worlds.ReadResearch())); - this.setVisible((worlds.getInformations().Tech>=1 && worlds.ReadResearch()>0) || worlds.isDebug()); + this.setVisible((worlds.getLevelData().Tech>=1 && worlds.ReadResearch()>0) || worlds.isDebug()); break; case cycle: this.setVisible(worlds.getWorld()>=1 || worlds.isDebug()); if (showmaximum) - this.setText(String.valueOf(worlds.getInformations().Cycle)+"/"+String.valueOf(worlds.getInformations().Maxcycle)); + this.setText(String.valueOf(worlds.getLevelData().Cycle)+"/"+String.valueOf(worlds.getLevelData().Maxcycle)); else - this.setText(String.valueOf(worlds.getInformations().Cycle)); + this.setText(String.valueOf(worlds.getLevelData().Cycle)); break; case temp: this.setVisible(worlds.getWorld()>=2 || worlds.isDebug()); if (showmaximum) - this.setText(String.valueOf(worlds.getInformations().Temp)+"/"+String.valueOf(worlds.getInformations().Maxtemp)); + this.setText(String.valueOf(worlds.getLevelData().Temp)+"/"+String.valueOf(worlds.getLevelData().Maxtemp)); else - this.setText(String.valueOf(worlds.getInformations().Temp)); + this.setText(String.valueOf(worlds.getLevelData().Temp)); break; case rayon: this.setVisible(worlds.getWorld()>=3 || worlds.isDebug()); if (showmaximum) - this.setText(String.valueOf(worlds.getInformations().Rayon)+"/"+String.valueOf(worlds.getInformations().Maxrayon)); + this.setText(String.valueOf(worlds.getLevelData().Rayon)+"/"+String.valueOf(worlds.getLevelData().Maxrayon)); else - this.setText(String.valueOf(worlds.getInformations().Rayon)); + this.setText(String.valueOf(worlds.getLevelData().Rayon)); break; case nrj: this.setVisible(worlds.getWorld()>=4 || worlds.isDebug()); if (showmaximum) - this.setText(String.valueOf(worlds.getInformations().Nrj)+"/"+String.valueOf(worlds.getInformations().Maxnrj)); + this.setText(String.valueOf(worlds.getLevelData().Nrj)+"/"+String.valueOf(worlds.getLevelData().Maxnrj)); else - this.setText(String.valueOf(worlds.getInformations().Nrj)); + this.setText(String.valueOf(worlds.getLevelData().Nrj)); break; } diff --git a/core/src/fr/evolving/UI/Menu.java b/core/src/fr/evolving/UI/Menu.java index 209a904..04b9c5f 100644 --- a/core/src/fr/evolving/UI/Menu.java +++ b/core/src/fr/evolving/UI/Menu.java @@ -231,18 +231,18 @@ public class Menu extends Actor { this.setMenuTile(0, 4, 87, "gold_pen",0); this.setMenuTile(1, 4, 88, "lock_pen",0); } - if (worlds.getInformations().Cout_orig>=0 || worlds.isDebug()) + if (worlds.getLevelData().Cout_orig>=0 || worlds.isDebug()) { this.setMenuTile(0, 7, 71, "copper_pen",0); this.setMenuTile(1, 7, 72, "copper_brush",0); this.setMenuTile(2, 7, 73, "copper_eraser",0); this.setMenuTile(3, 3, 79, "cleaner",0); } - if (worlds.getInformations().Tech>=0 || worlds.isDebug()) + if (worlds.getLevelData().Tech>=0 || worlds.isDebug()) { this.setMenuTile(0, 5, 77, "transmuter_eraser",0); } - if (worlds.getInformations().Tech>=2 || worlds.isDebug()) + if (worlds.getLevelData().Tech>=2 || worlds.isDebug()) { this.setMenuTile(1, 5, 70, "blank",0); this.setMenuTile(0, 6, 74, "fiber_pen",0); @@ -356,7 +356,7 @@ public class Menu extends Actor { if (transmuter != null) { int type=transmuter.getaClass().ordinal(); Gdx.app.debug("wirechem-Menu", "Transmuter find:"+ transmuter.getName() + " Angle:" + Angle + " coords" + x + "," + y+" page:"+page+" type:"+type); - if (transmuter.getTechnology()<=worlds.getInformations().Tech || worlds.isDebug()) { + if (transmuter.getTechnology()<=worlds.getLevelData().Tech || worlds.isDebug()) { Gdx.app.debug("wirechem-Menu", "Autorisé par le niveau"); if (!transmuter.isShowed() && transmuter.isUpgraded() && !worlds.isDebug()) layer = ((TiledMapTileLayer) map[page][type].getLayers().get(2)); diff --git a/core/src/fr/evolving/UI/Objectives.java b/core/src/fr/evolving/UI/Objectives.java index 8c5d478..ced2231 100644 --- a/core/src/fr/evolving/UI/Objectives.java +++ b/core/src/fr/evolving/UI/Objectives.java @@ -51,8 +51,8 @@ public class Objectives extends Actor { } else { - thevictory=worlds.getInformations().Victory_orig; - currentvictory=worlds.getInformations().Victory; + thevictory=worlds.getLevelData().Victory_orig; + currentvictory=worlds.getLevelData().Victory; } for (int i=0;i=0 || Transmuter.Class.values()[i]==Transmuter.Class.Structure)) || worlds.isDebug()) + if ((Transmuter.Class.values()[i]!=Transmuter.Class.Scenario && (worlds.getLevelData().Tech>=0 || Transmuter.Class.values()[i]==Transmuter.Class.Structure)) || worlds.isDebug()) { Barre[i] = new ImageTextButton(Transmuter.Class.values()[i].toString(), AssetLoader.Skin_level); table.addActor(Barre[i]); diff --git a/core/src/fr/evolving/automata/Worlds.java b/core/src/fr/evolving/automata/Worlds.java index 24c2ddb..2714024 100644 --- a/core/src/fr/evolving/automata/Worlds.java +++ b/core/src/fr/evolving/automata/Worlds.java @@ -19,6 +19,7 @@ public class Worlds extends Actor { private State state; private boolean Debug; private int research; + private Level lastchange; public enum State {pause,simulating,notloaded,databasefailed}; @@ -43,7 +44,7 @@ public class Worlds extends Actor { this.ReadTransmuters(); if (state==State.notloaded) create(name); - onchanged(); + onchanged(null); } public void ModResearch(int addsub) { @@ -79,13 +80,16 @@ public class Worlds extends Actor { public void ReadTransmuters() { Transmuters=AssetLoader.Datahandler.user().getTransmuters(0); - //String test=Transmuters.get(1).getInformations(); if (Transmuters==null) state=State.notloaded; else state=State.pause; } + public Array getTransmuters() { + return Transmuters; + } + public Array ViewGrids() { if (usedlevel!=null) return AssetLoader.Datahandler.user().getGrids(0,usedlevel.id); @@ -114,24 +118,25 @@ public class Worlds extends Actor { } public void Forcereload() { - onchanged(); + onchanged(null); } - public void onchanged() { + public void onchanged(Level change) { ChangeEvent event=new ChangeEvent(); event.setTarget(this); event.setListenerActor(this); event.setStage(this.getStage()); + lastchange=change; if (event.getStage()!=null) this.fire(event); } - public Array getLevels() { + public Array getLevels(int world) { Array tempworld=new Array(); if (state!=State.notloaded && this.levels!=null) { for(Level level:levels) - if (level!=null && level.aWorld==usedworld) + if (level!=null && level.aWorld==world) { if (level.aLevel==0) level.Locked=false; @@ -143,6 +148,14 @@ public class Worlds extends Actor { return null; } + public Array getLevels() { + return getLevels(this.usedworld); + } + + public Array getAllLevels() { + return levels; + } + public void updateUnlockLevels() { if (levels!=null) for(Level level:levels) @@ -180,20 +193,25 @@ public class Worlds extends Actor { usedlevel.Grid_orig = (Grid)usedlevel.Grid.clone(); } - public void setLevel(int alevel) { - if (state!=State.notloaded) - if (usedworld>=0) { - Array tempworld=getLevels(); - for(Level level:tempworld) - if (level.aLevel==alevel) - { - usedlevel=level; - return; - } - } + public Level findLevel(int levelid) { + if (state!=State.notloaded) + if (usedworld>=0) { + Array tempworld=getLevels(); + for(Level level:tempworld) + if (level.aLevel==levelid) + return level; + } + return null; } - public Level getInformations() { + public void setLevel(int levelid) { + Level level=findLevel(levelid); + if (level!=null) + usedlevel=level; + return; + } + + public Level getLevelData() { return usedlevel; } @@ -205,22 +223,49 @@ public class Worlds extends Actor { } public void delLevel() { - usedlevel=null; + delLevel(this.usedlevel.aLevel); + } + + public void delLevel(int levelid) { + Level level=findLevel(levelid); + if (level!=null) { + levels.removeValue(level, false); + if (this.usedlevel!=null && this.usedlevel.aLevel==levelid) + this.usedlevel=null; + onchanged(level); + this.showlevels(); + } + } + + public Level getChange() { + return lastchange; + } + + public void addLevel(Level level) { + levels.add(level); + this.showlevels(); + onchanged(level); + } + + public void showlevels() { + Gdx.app.debug("wirechem-worlds","Affichage des niveaux:"); + for(Level level: levels) + Gdx.app.debug("wirechem-GameScreen","Monde:"+level.aWorld+" Niveau:"+level.aLevel+" Nom:"+level.Name+" Debloque:"+level.Locked+" Special:"+level.Special+" id:"+level.id); } public void setWorld(int world) { if (state!=State.notloaded) if (world0) { - delLevel(); + usedlevel=null; usedworld--; - onchanged(); + onchanged(null); } } @@ -265,6 +310,10 @@ public class Worlds extends Actor { AssetLoader.Datahandler.user().setLevelunlock(0, usedlevel.id); } + public void unLockLevel(int levelid) { + AssetLoader.Datahandler.user().setLevelunlock(0, levelid); + } + public void set(String campaign) { Gdx.app.log("wirechem-Worlds", "***** Définition de la compagne "+campaign); Preference.prefs.putString("world", campaign); @@ -315,6 +364,33 @@ public class Worlds extends Actor { return max; } + public int getFreeLevel() { + return getFreeLevel(usedworld); + } + + public int getFreeLevel(int world) { + int max = getMaxLevel(world); + if (max==0) + return 0; + int free = 0; + for (;free<=max;free++) + if (findLevel(free)==null) + return free; + return free; + } + + public int getMaxLevel() { + return getMaxLevel(usedworld); + } + + public int getMaxLevel(int world) { + int max = 0; + for (Level level : levels) + if (level != null && level.aWorld == world && level.aLevel>max) + max = level.aLevel; + return max; + } + public int getMaxUnlockWorlds() { int maxworld=0; if (levels!=null) diff --git a/core/src/fr/evolving/renderers/GameRenderer.java b/core/src/fr/evolving/renderers/GameRenderer.java index 19cf76f..5c43f73 100644 --- a/core/src/fr/evolving/renderers/GameRenderer.java +++ b/core/src/fr/evolving/renderers/GameRenderer.java @@ -33,7 +33,7 @@ public class GameRenderer { } else if (layer == 1) { batcher.begin(); batcher.setColor(0.25f, 0.25f, 0.25f, 1f); - if (GameScreen.worlds.getInformations().Cout>0 || GameScreen.worlds.getInformations().Tech>=1 || GameScreen.worlds.isDebug()) { + if (GameScreen.worlds.getLevelData().Cout>0 || GameScreen.worlds.getLevelData().Tech>=1 || GameScreen.worlds.isDebug()) { batcher.draw(AssetLoader.Atlas_level.findRegion("barrehaut"), 0.0f, AssetLoader.height - 198.0f, 1920.0f, 200.0f); batcher.draw(AssetLoader.Atlas_level.findRegion("barrecentre"), 1480f, AssetLoader.height - 785.0f, 590f, 530.0f); } diff --git a/core/src/fr/evolving/renderers/LevelRenderer.java b/core/src/fr/evolving/renderers/LevelRenderer.java index ffede54..6ba8a9c 100644 --- a/core/src/fr/evolving/renderers/LevelRenderer.java +++ b/core/src/fr/evolving/renderers/LevelRenderer.java @@ -8,7 +8,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; +import com.badlogic.gdx.utils.Array; +import fr.evolving.UI.ButtonLevel; import fr.evolving.assets.AssetLoader; import fr.evolving.effects.Laser; import fr.evolving.screens.LevelScreen; @@ -121,56 +123,18 @@ public class LevelRenderer { shapeRenderer.rect(1470, 10, 440, AssetLoader.height - 20); shapeRenderer.end(); if (LevelScreen.buttonLevels != null) - for (int i = 0; i < LevelScreen.buttonLevels.length; i++) { - if (LevelScreen.buttonLevels[i] != null) { - for (int[] item : LevelScreen.buttonLevels[i].level.Link) { - int found = -1; - for (int j = 0; j < LevelScreen.buttonLevels.length; j++) { - if ((item.length == 2) - && (LevelScreen.buttonLevels[j] != null) - && (LevelScreen.buttonLevels[j].level.aWorld == item[0]) - && (LevelScreen.buttonLevels[j].level.aLevel == item[1])) { - found = j; - break; - } - } - if (found != -1) { + for (int i=0;i0 || worlds.getInformations().Tech>=1 || worlds.isDebug()) { + if (worlds.getLevelData().Cout>0 || worlds.getLevelData().Tech>=1 || worlds.isDebug()) { stage.addActor(vertibar); stage.addActor(buttonlevel); stage.addActor(menu); diff --git a/core/src/fr/evolving/screens/LevelScreen.java b/core/src/fr/evolving/screens/LevelScreen.java index 6cfa5ea..bf71355 100644 --- a/core/src/fr/evolving/screens/LevelScreen.java +++ b/core/src/fr/evolving/screens/LevelScreen.java @@ -35,6 +35,7 @@ import fr.evolving.UI.Worldlist; import fr.evolving.assets.AssetLoader; import fr.evolving.assets.InitWorlds; import fr.evolving.assets.Preference; +import fr.evolving.automata.Grid; import fr.evolving.automata.Level; import fr.evolving.automata.Transmuter; import fr.evolving.automata.Worlds; @@ -44,7 +45,7 @@ import fr.evolving.dialogs.WarningDialog; import fr.evolving.renderers.LevelRenderer; public class LevelScreen implements Screen { - public ButtonLevel[] buttonLevels; + public Array buttonLevels; private LevelRenderer Renderer; private float runTime; private Timer ScrollTimer; @@ -52,7 +53,7 @@ public class LevelScreen implements Screen { private Stage stage; private Table table; private WarningDialog dialog; - private ImageButton Previous, Next, Exit, logosmall, databaseSave, adder, signer; + private ImageButton Previous, Next, Exit, logosmall, databaseSave, adder, signer, finisher, deletelinker, deletebutton, addbutton; public Image MenuSolo, MenuMulti, MenuScenario; private ImageTextButton cout, tech, cycle, temp, rayon, nrj, up_cycle, up_temp, up_rayon, up_nrj, research, up; private TextButton buttonConnect, buttonPlay, buttonStat, buttonSave, buttonApply, buttonPlaythis; @@ -66,7 +67,7 @@ public class LevelScreen implements Screen { public int addervalue; public ButtonGroup chooser; public Group group_init, group_stat, group_level, group_base, group_debug, group_choose, group_other; - + public ClickListener buttonLevelslistener; public void play() { if (worlds.getState()!=State.notloaded && worlds.getState()!=State.databasefailed) { if (worlds.getWorld() < 0) @@ -114,12 +115,11 @@ public class LevelScreen implements Screen { public void initlevel() { selected = null; - if (buttonLevels != null) - for (int j = 0; j < 10; j++) - if (buttonLevels[j] != null) { - buttonLevels[j].remove(); - buttonLevels[j] = null; - } + if (buttonLevels==null) + buttonLevels=new Array(); + for(ButtonLevel button: buttonLevels) + button.remove(); + buttonLevels.clear(); } public void level() { @@ -147,18 +147,40 @@ public class LevelScreen implements Screen { group_stat.setVisible(true); group_base.setVisible(false); } + + public ClickListener buttonLevelslistener() { + return new ClickListener() { + @Override + public void enter(InputEvent event, float x, float y, + int pointer, Actor fromActor) { + ButtonLevel abutton = (ButtonLevel) event + .getListenerActor(); + Gdx.app.debug("wirechem-LevelScreen","Enter button "); + if (!abutton.isChecked() && (!abutton.level.Locked || worlds.isDebug())) + showlevel(abutton); + } + + public void exit(InputEvent event, float x, float y, + int pointer, Actor fromActor) { + ButtonLevel abutton = (ButtonLevel) event + .getListenerActor(); + Gdx.app.debug("wirechem-LevelScreen","Enter button "); + if (!abutton.isChecked() && (!abutton.level.Locked || worlds.isDebug())) + showlevel(abutton); + } + + public void touchDragged(InputEvent event, float x, + float y, int pointer) { + ButtonLevel abutton = (ButtonLevel) event.getListenerActor(); + if (worlds.isDebug()) { + abutton.setPosition(event.getStageX() - 56, event.getStageY() - 20); + } + } + }; + } public void loadWorld() { - int i = 0; - if (buttonLevels != null) - for (int j = 0; j < 10; j++) { - if (buttonLevels[j] != null) { - buttonLevels[j].remove(); - buttonLevels[j] = null; - } - } - buttonLevels = null; - buttonLevels = new ButtonLevel[10]; + initlevel(); Array levels=worlds.getLevels(); if (levels!=null) for (Level level : levels) { @@ -167,44 +189,16 @@ public class LevelScreen implements Screen { level.Name=AssetLoader.language.get("[level"+(level.aWorld+1)+"/"+(level.aLevel+1)+"-name]"); if (level.Description.isEmpty()) level.Description=AssetLoader.language.get("[level"+(level.aWorld+1)+"/"+(level.aLevel+1)+"-desc]"); - buttonLevels[i] = new ButtonLevel(level, AssetLoader.ratio, true); - if (worlds.isDebug()) buttonLevels[i].setDisabled(false); + ButtonLevel buttonlevel= new ButtonLevel(level, AssetLoader.ratio, true); + buttonLevels.add(buttonlevel); + if (worlds.isDebug()) buttonlevel.setDisabled(false); Gdx.app.debug("wirechem-LevelScreen", "Ajout du niveau :"+ level.Name + " N°" + String.valueOf(level.aLevel)); - buttonLevels[i++].addListener(new ClickListener() { - @Override - public void enter(InputEvent event, float x, float y, - int pointer, Actor fromActor) { - ButtonLevel abutton = (ButtonLevel) event - .getListenerActor(); - Gdx.app.debug("wirechem-LevelScreen","Enter button "); - if (!abutton.isChecked() && (!abutton.level.Locked || worlds.isDebug())) - showlevel(abutton); - } - - public void exit(InputEvent event, float x, float y, - int pointer, Actor fromActor) { - ButtonLevel abutton = (ButtonLevel) event - .getListenerActor(); - Gdx.app.debug("wirechem-LevelScreen","Enter button "); - if (!abutton.isChecked() && (!abutton.level.Locked || worlds.isDebug())) - showlevel(abutton); - } - - public void touchDragged(InputEvent event, float x, - float y, int pointer) { - ButtonLevel abutton = (ButtonLevel) event.getListenerActor(); - if (worlds.isDebug()) { - abutton.setPosition(event.getStageX() - 56, event.getStageY() - 20); - } - } - }); - } - } - for (int j = 0; j < 10; j++) { - if (buttonLevels[j] != null) { - stage.addActor(buttonLevels[j]); + + buttonlevel.addListener(buttonLevelslistener()); } } + for (ButtonLevel button : buttonLevels) + stage.addActor(button); } public LevelScreen(Worlds aworlds) { @@ -215,20 +209,32 @@ public class LevelScreen implements Screen { public void changed(ChangeEvent event, Actor actor) { if (worlds.getState()!=Worlds.State.notloaded && worlds.getWorld()>=0) { - LevelScreen.this.loadWorld(); - if (buttonLevels!=null) - for (int j = 0; j < 10; j++) - { - if (buttonLevels[j]!=null) { - buttonLevels[j].setChecked(false); - if (worlds.getInformations()!=null && buttonLevels[j].level.id == worlds.getInformations().id) { - selected=buttonLevels[j]; - break; - } + Level changed=worlds.getChange(); + if (changed!=null) { + for (int i=0;i links=new Array(button.level.Link); + for(int[] link: links) + if (link.length==2 && link[0]==selected.level.aWorld && link[1]==selected.level.aLevel) + { + if (i==buttonLevels.size-1) + links.removeValue(link, true); + else { + for (int j=i+1;j links=new Array(button.level.Link); + for(int[] link: links) + if (link.length==2 && link[0]==selected.level.aWorld && link[1]==selected.level.aLevel) + { + Gdx.app.debug("wirechem-LevelScreen", "Destruction du lien :"+selected.level.aLevel); + links.removeValue(link, true); + } + button.level.Link=links.toArray(); + } + } + } + }); + addbutton = new ImageButton(AssetLoader.Skin_level, "boss"); + addbutton.setPosition(1760, 540); + addbutton.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + Level level=new Level( + worlds.getWorld(), + worlds.getFreeLevel(), + (int) (Math.random() * Integer.MAX_VALUE), + "Unknown", + "Unknown", + "Uk", new int[] { 0, 0, 0, 0, 0, 0 }, + new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, (float)Math.random() * 1000f, + (float)Math.random() * 750f, 0, 0, new Grid(3, 3), 0, 0, 0, 0, 99999, 99999, + 99999, 99999, "", false, new int[][] {{}}); + worlds.addLevel(level); + //ButtonLevel button=new ButtonLevel(level, AssetLoader.ratio, true); + //buttonLevels.add(button); + //stage.addActor(button); + //button.addListener(buttonLevelslistener()); + } + }); + finisher = new ImageButton(AssetLoader.Skin_level, "boss"); + finisher.setSize(64, 64); + finisher.setPosition(1560, 40); + finisher.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + if (selected!=null) { + selected.level.Special=!selected.level.Special; + if (selected.level.Special) + finisher.setColor(AssetLoader.Skin_level.getColor("red")); + else + finisher.setColor(AssetLoader.Skin_level.getColor("black")); + } + } + }); signer = new ImageButton(AssetLoader.Skin_level, "add"); signer.setPosition(1660, 40); signer.addListener(new ClickListener() { @@ -839,7 +931,12 @@ public class LevelScreen implements Screen { group_debug.addActor(databaseSave); group_debug.addActor(adder); group_debug.addActor(signer); + group_debug.addActor(finisher); + group_debug.addActor(deletelinker); + group_debug.addActor(deletebutton); + group_debug.addActor(addbutton); + //********************************************************** Gdx.app.debug("wirechem-LevelScreen", "Affichage du menu."); if (worlds.getWorld() != -1) level(); @@ -962,6 +1059,12 @@ public class LevelScreen implements Screen { up.setVisible(false); Victory.setVisible(button.level.Cout_orig > 0 || worlds.isDebug()); Victory.setVictory(button.level.Victory_orig); + if (worlds.isDebug()) { + if (button.level.Special) + finisher.setColor(AssetLoader.Skin_level.getColor("red")); + else + finisher.setColor(AssetLoader.Skin_level.getColor("black")); + } if (selected != null) selected.setChecked(false); selected = button;