feat: création d'un actor qui affiche une liste de transmuteurs selectionnables...

This commit is contained in:
Nicolas Hordé 2016-02-24 23:55:19 +01:00
parent 90609b9597
commit ee6c8ca2a4
3 changed files with 175 additions and 7 deletions

View File

@ -50,7 +50,7 @@ public class Transhower extends Actor {
setTransmuter(transmuter); setTransmuter(transmuter);
} }
public void clear() { public void clearer() {
this.transmuter=null; this.transmuter=null;
for (int x = 0; x < layer.getWidth(); x++) { for (int x = 0; x < layer.getWidth(); x++) {
for (int y = 0; y < layer.getHeight(); y++) { for (int y = 0; y < layer.getHeight(); y++) {
@ -136,7 +136,7 @@ public class Transhower extends Actor {
} }
public void setTransmuter(Transmuter transmuter) { public void setTransmuter(Transmuter transmuter) {
this.clear(); this.clearer();
this.transmuter=transmuter; this.transmuter=transmuter;
this.redraw(); this.redraw();
} }

View File

@ -0,0 +1,160 @@
package fr.evolving.UI;
import java.util.Iterator;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Array;
import fr.evolving.assets.AssetLoader;
import fr.evolving.automata.Transmuter;
public class Translist extends Actor{
private Array<Transmuter> transmuters;
private ImageButton Next,Previous;
Transhower Selected;
Table table;
int whereis;
Color color;
public Translist(Array<Transmuter> transmuters,Color color) {
this.color=color;
super.setBounds(-500, -500, 256, 256);
Previous=new ImageButton(AssetLoader.Skin_level, "extend2");
Previous.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug("wirechem-Translist", "Previous transmuter");
previousTransmuter();
}
});
Next=new ImageButton(AssetLoader.Skin_level, "extend");
Next.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug("wirechem-Translist", "Next transmuter");
nextTransmuter();
}
});
this.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug("wirechem-Translist", "Next angle");
nextAngle();
}
});
table=new Table();
setTransmuters(transmuters);
}
public void setColor(Color color) {
this.color=color;
assignTransmuter(whereis);
}
public Color getColor() {
return this.color;
}
public void setTransmuters(Array<Transmuter> transmuters) {
this.transmuters=transmuters;
whereis=0;
assignTransmuter(whereis);
}
public void assignTransmuter(int where) {
if (Selected==null)
Selected=new Transhower(transmuters.get(where), transmuters.get(where).getRotation(), true, color);
else {
Selected.setAngle(transmuters.get(where).getRotation());
Selected.setTransmuter(transmuters.get(where));
Selected.setColor(this.color);
}
redraw();
}
public void nextAngle() {
Transmuter.Angular angle=getTransmuter().getRotation();
if (angle==Transmuter.Angular.A00)
getTransmuter().setRotation(Transmuter.Angular.A90);
else if (angle==Transmuter.Angular.A90)
getTransmuter().setRotation(Transmuter.Angular.A180);
else if (angle==Transmuter.Angular.A180)
getTransmuter().setRotation(Transmuter.Angular.A270);
else if (angle==Transmuter.Angular.A270)
getTransmuter().setRotation(Transmuter.Angular.A00);
assignTransmuter(whereis);
}
public void previousTransmuter() {
if (whereis>0) {
whereis--;
assignTransmuter(whereis);
}
}
public Transmuter getTransmuter() {
return transmuters.get(whereis);
}
public void nextTransmuter() {
if (whereis<transmuters.size-1) {
whereis++;
assignTransmuter(whereis);
}
}
public void redraw() {
Selected.setBounds(this.getX(), this.getY(), this.getWidth(), this.getHeight());
table.setBounds(this.getX(), this.getY(), this.getWidth(), this.getHeight());
table.clear();
table.add(Previous).left().pad(this.getWidth()/4).padTop(this.getHeight()).size(this.getWidth()/512*64, this.getHeight()/512*64);
table.add(Next).right().pad(this.getWidth()/4).padTop(this.getHeight()).size(this.getWidth()/512*64, this.getHeight()/512*64);
}
public Actor hit(float x, float y, boolean touchable) {
Actor actor=table.hit(x, y, touchable);
if (actor!=null) {
return actor;
}
else
return super.hit(x, y, touchable);
}
public void setBounds(float x, float y, float width, float height) {
super.setBounds(x, y, width, height);
redraw();
}
public void setHeight(float height) {
super.setHeight(height);
redraw();
}
public void setPosition(float x, float y) {
super.setPosition(x, y);
redraw();
}
public void setWidth(float width) {
super.setWidth(width);
redraw();
}
@Override
public void draw(Batch batch, float parentAlpha) {
Selected.draw(batch, parentAlpha);
table.draw(batch, parentAlpha);
}
}

View File

@ -28,6 +28,7 @@ import fr.evolving.UI.ButtonLevel;
import fr.evolving.UI.Objectives; import fr.evolving.UI.Objectives;
import fr.evolving.UI.ServerList; import fr.evolving.UI.ServerList;
import fr.evolving.UI.Transhower; import fr.evolving.UI.Transhower;
import fr.evolving.UI.Translist;
import fr.evolving.UI.WarnDialog; import fr.evolving.UI.WarnDialog;
import fr.evolving.UI.Worldlist; import fr.evolving.UI.Worldlist;
import fr.evolving.assets.AssetLoader; import fr.evolving.assets.AssetLoader;
@ -63,7 +64,7 @@ public class LevelScreen implements Screen {
public ButtonLevel selected; public ButtonLevel selected;
public int addervalue; public int addervalue;
public Transhower test; public Translist test;
public void play() { public void play() {
@ -271,10 +272,17 @@ public class LevelScreen implements Screen {
} }
public LevelScreen(Worlds aworlds) { public LevelScreen(Worlds aworlds) {
test=new Transhower(AssetLoader.getTransmuter("--"),Transmuter.Angular.A270,true, new Color(0,1f,0f,1f)); Array<Transmuter> test2=new Array<Transmuter>();
test.setPosition(1920/2, 70); test2.add(AssetLoader.getTransmuter("<>"));
test.setWidth(512); test2.add(AssetLoader.getTransmuter(">"));
test.setHeight(512); test2.add(AssetLoader.getTransmuter("++"));
test2.add(AssetLoader.getTransmuter("+"));
test2.add(AssetLoader.getTransmuter("+-+-"));
test2.add(AssetLoader.getTransmuter("00"));
test=new Translist(test2,new Color(1f,1f,1f,0.25f));
test.setPosition(512, 512);
test.setWidth(256);
test.setHeight(256);
this.worlds = aworlds; this.worlds = aworlds;
addervalue=1; addervalue=1;
worlds.addListener(new ChangeListener() { worlds.addListener(new ChangeListener() {