fix: correction de nombreux bogues du mode edition

This commit is contained in:
Nicolas Hordé 2016-07-03 23:21:34 +02:00
parent b792d7dbac
commit 68cd234b35
1 changed files with 59 additions and 58 deletions

View File

@ -6,7 +6,6 @@ import java.util.TimerTask;
import com.badlogic.gdx.Game; import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen; import com.badlogic.gdx.Screen;
import com.badlogic.gdx.Application;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
@ -26,7 +25,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup; import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.ChangeEvent;
import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop; import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop;
import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Payload; import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Payload;
import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Source; import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Source;
@ -166,6 +164,7 @@ public class LevelScreen implements Screen {
} }
public void initDragDrop() { public void initDragDrop() {
dragAndDrop.clear();
if (buttonLevels!=null) if (buttonLevels!=null)
for(ButtonLevel buttonlevel:buttonLevels) for(ButtonLevel buttonlevel:buttonLevels)
AddDragDrop((Actor)buttonlevel); AddDragDrop((Actor)buttonlevel);
@ -239,6 +238,7 @@ public class LevelScreen implements Screen {
public void touchDragged(InputEvent event, float x, float y, int pointer) { public void touchDragged(InputEvent event, float x, float y, int pointer) {
ButtonLevel abutton = (ButtonLevel) event.getListenerActor(); ButtonLevel abutton = (ButtonLevel) event.getListenerActor();
if (worlds.isDebug() && moveit.isChecked()) { if (worlds.isDebug() && moveit.isChecked()) {
if (event.getStageX()<1180 && event.getStageX()>0 && event.getStageY()>180 && event.getStageY()<AssetLoader.height-260)
abutton.setPosition(event.getStageX() - 56, event.getStageY() - 20); abutton.setPosition(event.getStageX() - 56, event.getStageY() - 20);
} }
} }
@ -289,38 +289,37 @@ public class LevelScreen implements Screen {
for (int i=0;i<buttonLevels.size;i++) for (int i=0;i<buttonLevels.size;i++)
if (buttonLevels.get(i).level.aLevel==changed.aLevel) if (buttonLevels.get(i).level.aLevel==changed.aLevel)
{ {
Gdx.app.debug("wirechem-LevelScreen", "Changement - destruction du niveau "+changed.aLevel);
buttonLevels.get(i).remove(); buttonLevels.get(i).remove();
buttonLevels.removeIndex(i); buttonLevels.removeIndex(i);
return; return;
} }
Gdx.app.debug("wirechem-LevelScreen", "Changement - ajout d'un nouveau niveau "+changed.aLevel);
ButtonLevel button=new ButtonLevel(changed, AssetLoader.ratio, true); ButtonLevel button=new ButtonLevel(changed, AssetLoader.ratio, true);
if (worlds.isDebug()) { if (worlds.isDebug()) {
button.setDisabled(false); button.setDisabled(false);
button.setTouchable(Touchable.enabled); button.setTouchable(Touchable.enabled);
} }
else
showlevel(button);
buttonLevels.add(button); buttonLevels.add(button);
stage.addActor(button); stage.addActor(button);
button.addListener(buttonLevelslistener()); button.addListener(buttonLevelslistener());
//showlevel(button);
return; return;
} }
LevelScreen.this.loadWorld(); Gdx.app.debug("wirechem-LevelScreen", "Changement - rechargement des mondes");
loadWorld();
for (ButtonLevel button : buttonLevels) for (ButtonLevel button : buttonLevels)
{ {
button.setChecked(false); button.setChecked(false);
if (worlds.getLevelData()!=null && button.level.id == worlds.getLevelData().id) { if (worlds.getLevelData()!=null && button.level.id == worlds.getLevelData().id) {
selected=button; Gdx.app.debug("wirechem-LevelScreen", "Changement - selection du monde en cours "+button.level.aLevel);
showlevel(button);
break; break;
} }
} }
if (worlds.getLevelData()==null) if (worlds.getLevelData()==null)
selected=buttonLevels.first(); selected=buttonLevels.first();
if (selected!=null) {
selected.setChecked(true);
buttonPlay.setVisible(true);
TextDescriptive.setVisible(true);
showlevel(selected);
}
Previous.setVisible(!worlds.isFirstWorld()); Previous.setVisible(!worlds.isFirstWorld());
if (worlds.isDebug()) if (worlds.isDebug())
Next.setVisible(!worlds.isRealLastWorld()); Next.setVisible(!worlds.isRealLastWorld());
@ -328,6 +327,7 @@ public class LevelScreen implements Screen {
Next.setVisible(!worlds.isLastWorld()); Next.setVisible(!worlds.isLastWorld());
} }
else { else {
Gdx.app.debug("wirechem-LevelScreen", "Changement - Niveau non chargé, composants non visibles");
Previous.setVisible(false); Previous.setVisible(false);
Next.setVisible(false); Next.setVisible(false);
buttonPlay.setVisible(false); buttonPlay.setVisible(false);
@ -428,7 +428,7 @@ public class LevelScreen implements Screen {
SetButtonStat(); SetButtonStat();
} }
}); });
chooser=new ButtonGroup(); chooser=new ButtonGroup<Button>();
chooser.add(buttonStat); chooser.add(buttonStat);
chooser.add(buttonConnect); chooser.add(buttonConnect);
chooser.setMaxCheckCount(1); chooser.setMaxCheckCount(1);
@ -452,6 +452,8 @@ public class LevelScreen implements Screen {
Gdx.app.debug("wirechem-LevelScreen", Gdx.app.debug("wirechem-LevelScreen",
"World:" + String.valueOf(worlds.getWorld()) + " Maxworld:" "World:" + String.valueOf(worlds.getWorld()) + " Maxworld:"
+ String.valueOf(worlds.getMaxWorlds())); + String.valueOf(worlds.getMaxWorlds()));
if (worlds.isDebug() && link.isChecked())
initDragDrop();
} }
}); });
Previous = new ImageButton(AssetLoader.Skin_level, "Previous"); Previous = new ImageButton(AssetLoader.Skin_level, "Previous");
@ -463,6 +465,8 @@ public class LevelScreen implements Screen {
Gdx.app.debug("wirechem-LevelScreen", Gdx.app.debug("wirechem-LevelScreen",
"World:" + String.valueOf(worlds.getWorld()) + " Maxworld:" "World:" + String.valueOf(worlds.getWorld()) + " Maxworld:"
+ String.valueOf(worlds.getMaxWorlds())); + String.valueOf(worlds.getMaxWorlds()));
if (worlds.isDebug() && link.isChecked())
initDragDrop();
} }
}); });
cout = new ImageTextButton("5", AssetLoader.Skin_level, "cout"); cout = new ImageTextButton("5", AssetLoader.Skin_level, "cout");
@ -853,13 +857,13 @@ public class LevelScreen implements Screen {
if (buttonLevels != null) if (buttonLevels != null)
for (ButtonLevel button : buttonLevels) for (ButtonLevel button : buttonLevels)
button.setDisabled(button.level.Locked); button.setDisabled(button.level.Locked);
ResetDragDrog();
worlds.DesactivateDebug(); worlds.DesactivateDebug();
worlds.updateUnlockLevels(); worlds.updateUnlockLevels();
worlds.setMaxWorldLevel(); worlds.setMaxWorldLevel();
group_debug.setVisible(false); group_debug.setVisible(false);
group_choose.setVisible(true); group_choose.setVisible(true);
selectoneunlock(); worlds.setMaxWorldLevel();
showlevel(selected);
SetButtonStat(); SetButtonStat();
} }
else else
@ -881,7 +885,7 @@ public class LevelScreen implements Screen {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
vertibarmod.setVisible(false); vertibarmod.setVisible(false);
dragAndDrop.clear(); ResetDragDrog();
selectnoone(); selectnoone();
} }
}); });
@ -891,7 +895,7 @@ public class LevelScreen implements Screen {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
vertibarmod.setVisible(true); vertibarmod.setVisible(true);
dragAndDrop.clear(); ResetDragDrog();
selectone(); selectone();
} }
}); });
@ -973,15 +977,12 @@ public class LevelScreen implements Screen {
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
if (selected!=null) { if (selected!=null) {
selected.level.Special=!selected.level.Special; selected.level.Special=!selected.level.Special;
if (selected.level.Special) finisher.setChecked(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 = new ImageButton(AssetLoader.Skin_level, "add");
signer.setPosition(1280, AssetLoader.height-650); signer.setPosition(1680, 40);
signer.addListener(new ClickListener() { signer.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@ -1000,7 +1001,7 @@ public class LevelScreen implements Screen {
} }
}); });
adder = new ImageButton(AssetLoader.Skin_level, "add1"); adder = new ImageButton(AssetLoader.Skin_level, "add1");
adder.setPosition(1340, AssetLoader.height-650); adder.setPosition(1720, 40);
adder.addListener(new ClickListener() { adder.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@ -1119,22 +1120,18 @@ public class LevelScreen implements Screen {
} }
public void selectone() { public void selectone() {
if (selected==null)
for(ButtonLevel button: buttonLevels) for(ButtonLevel button: buttonLevels)
if (button!=null) { if (button!=null) {
selected=button; showlevel(button);
selected.setChecked(true);
return; return;
} }
return; return;
} }
public void selectoneunlock() { public void selectoneunlock() {
if (selected==null)
for(ButtonLevel button: buttonLevels) for(ButtonLevel button: buttonLevels)
if (button!=null && button.level.Locked==false) { if (button!=null && button.level.Locked==false) {
selected=button; showlevel(button);
selected.setChecked(true);
return; return;
} }
return; return;
@ -1147,83 +1144,87 @@ public class LevelScreen implements Screen {
selected.setChecked(false); selected.setChecked(false);
} }
selected=null; selected=null;
showlevel(null);
return; return;
} }
public void showlevel(ButtonLevel button) { public void showlevel(ButtonLevel button) {
if (button==null) if (button!=null) {
return;
Gdx.app.debug("wirechem-LevelScreen", "Reading button " + button.level.Name); Gdx.app.debug("wirechem-LevelScreen", "Reading button " + button.level.Name);
TextDescriptive.setText(button.level.Description); TextDescriptive.setText(button.level.Description);
if (button.level.Maxcycle < 99999 && button.level.Maxcycle > 0 || worlds.isDebug()) { Victory.setVictory(button.level.Victory_orig);
button.setChecked(true);
buttonPlay.setVisible(false);
}
else
Gdx.app.debug("wirechem-LevelScreen", "Raz button information");
if (button!=null && (worlds.isDebug() || button.level.Maxcycle < 99999 && button.level.Maxcycle > 0)) {
cycle.setText(String.valueOf(button.level.Maxcycle)); cycle.setText(String.valueOf(button.level.Maxcycle));
cycle.setVisible(true); cycle.setVisible(true);
} else } else
cycle.setVisible(false); cycle.setVisible(false);
if (button.level.Maxtemp < 99999 && button.level.Maxtemp > 0 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.Maxtemp < 99999 && button.level.Maxtemp > 0)) {
temp.setText(String.valueOf(button.level.Maxtemp)); temp.setText(String.valueOf(button.level.Maxtemp));
temp.setVisible(true); temp.setVisible(true);
} else } else
temp.setVisible(false); temp.setVisible(false);
if (button.level.Maxnrj < 99999 && button.level.Maxnrj > 0 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.Maxnrj < 99999 && button.level.Maxnrj > 0)) {
nrj.setText(String.valueOf(button.level.Maxnrj)); nrj.setText(String.valueOf(button.level.Maxnrj));
nrj.setVisible(true); nrj.setVisible(true);
} else } else
nrj.setVisible(false); nrj.setVisible(false);
if (button.level.Maxrayon < 99999 && button.level.Maxrayon > 0 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.Maxrayon < 99999 && button.level.Maxrayon > 0)) {
rayon.setText(String.valueOf(button.level.Maxrayon)); rayon.setText(String.valueOf(button.level.Maxrayon));
rayon.setVisible(true); rayon.setVisible(true);
} else } else
rayon.setVisible(false); rayon.setVisible(false);
if (button.level.Cout_orig > 0 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.Cout_orig > 0)) {
cout.setText(String.valueOf(button.level.Cout_orig)); cout.setText(String.valueOf(button.level.Cout_orig));
cout.setVisible(true); cout.setVisible(true);
} else } else
cout.setVisible(false); cout.setVisible(false);
if (button.level.Tech >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.Tech >= 1)) {
tech.setText(String.valueOf(button.level.Tech)); tech.setText(String.valueOf(button.level.Tech));
tech.setVisible(true); tech.setVisible(true);
} else } else
tech.setVisible(false); tech.setVisible(false);
if (button.level.rewards[0] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[0] >= 1)) {
research.setText(String.valueOf(button.level.rewards[0])); research.setText(String.valueOf(button.level.rewards[0]));
research.setVisible(true); research.setVisible(true);
} else } else
research.setVisible(false); research.setVisible(false);
if (button.level.rewards[2] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[2] >= 1)) {
up_temp.setText(String.valueOf(button.level.rewards[2])); up_temp.setText(String.valueOf(button.level.rewards[2]));
up_temp.setVisible(true); up_temp.setVisible(true);
} else } else
up_temp.setVisible(false); up_temp.setVisible(false);
if (button.level.rewards[4] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[4] >= 1)) {
up_nrj.setText(String.valueOf(button.level.rewards[4])); up_nrj.setText(String.valueOf(button.level.rewards[4]));
up_nrj.setVisible(true); up_nrj.setVisible(true);
} else } else
up_nrj.setVisible(false); up_nrj.setVisible(false);
if (button.level.rewards[3] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[3] >= 1)) {
up_rayon.setText(String.valueOf(button.level.rewards[3])); up_rayon.setText(String.valueOf(button.level.rewards[3]));
up_rayon.setVisible(true); up_rayon.setVisible(true);
} else } else
up_rayon.setVisible(false); up_rayon.setVisible(false);
if (button.level.rewards[1] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[1] >= 1)) {
up_cycle.setText(String.valueOf(button.level.rewards[1])); up_cycle.setText(String.valueOf(button.level.rewards[1]));
up_cycle.setVisible(true); up_cycle.setVisible(true);
} else } else
up_cycle.setVisible(false); up_cycle.setVisible(false);
if (button.level.rewards[5] >= 1 || worlds.isDebug()) { if (button!=null && (worlds.isDebug() || button.level.rewards[5] >= 1)) {
up.setText(String.valueOf(button.level.rewards[5])); up.setText(String.valueOf(button.level.rewards[5]));
up.setVisible(true); up.setVisible(true);
} else } else
up.setVisible(false); up.setVisible(false);
Victory.setVisible(button.level.Cout_orig > 0 || worlds.isDebug()); Victory.setVisible(button!=null && (worlds.isDebug() || button.level.Cout_orig > 0));
Victory.setVictory(button.level.Victory_orig); if (worlds.isDebug() && button!=null) {
if (worlds.isDebug()) {
unlocked.setChecked(!button.level.Locked); unlocked.setChecked(!button.level.Locked);
finisher.setChecked(button.level.Special); finisher.setChecked(button.level.Special);
} }
if (selected != null) if (selected != null)
selected.setChecked(false); selected.setChecked(false);
selected = button; selected = button;
button.setChecked(true);
} }
} }