feat: refonte de l'affichage du plateau de jeu ajout du sous menu avec transmuteurs gestion du plein écran/son

This commit is contained in:
Nicolas Hordé 2015-07-15 23:11:19 +02:00
parent dc4b82c189
commit 939913adb6
6 changed files with 235 additions and 66 deletions

View File

@ -122,6 +122,25 @@ public class Grid implements Serializable{
if (value>0)
GetXY(x,y).Copper_calc=oldvalue+22+value;
}
int value=0;
if (oldvalue==34 && (GetCoppercalc(x-1,y)==31 || GetCoppercalc(x-1,y)==55 || GetCoppercalc(x-1,y)==58))
value=62;
if (oldvalue==34 && (GetCoppercalc(x+1,y)==31 || GetCoppercalc(x+1,y)==55 || GetCoppercalc(x+1,y)==58))
value=58;
if (oldvalue==31 && (GetCoppercalc(x-1,y)==34 || GetCoppercalc(x-1,y)==58 || GetCoppercalc(x-1,y)==62))
value=59;
if (oldvalue==31 && (GetCoppercalc(x+1,y)==34 || GetCoppercalc(x+1,y)==58 || GetCoppercalc(x+1,y)==62))
value=55;
if (oldvalue==33 && (GetCoppercalc(x,y-1)==27 || GetCoppercalc(x,y-1)==50 || GetCoppercalc(x,y-1)==51))
value=57;
if (oldvalue==33 && (GetCoppercalc(x,y+1)==27 || GetCoppercalc(x,y+1)==50 || GetCoppercalc(x,y+1)==51))
value=56;
if (oldvalue==27 && (GetCoppercalc(x,y-1)==33 || GetCoppercalc(x,y-1)==56 || GetCoppercalc(x,y-1)==57))
value=51;
if (oldvalue==27 && (GetCoppercalc(x,y+1)==33 || GetCoppercalc(x,y+1)==56 || GetCoppercalc(x,y+1)==57))
value=50;
if (value>0)
GetXY(x,y).Copper_calc=value;
}
return;

View File

@ -15,7 +15,7 @@ public class main extends Game {
debug();
//test();
Gdx.app.debug(getClass().getSimpleName(), "Récupération de la résolution des préférences.");
if (AssetLoader.prefs.contains("ResolutionX") && AssetLoader.prefs.contains("ResolutionX")) {
if (AssetLoader.prefs.getInteger("ResolutionX")>0 && AssetLoader.prefs.getInteger("ResolutionY")>0) {
try {
int ResolutionX=AssetLoader.prefs.getInteger("ResolutionX");
int ResolutionY=AssetLoader.prefs.getInteger("ResolutionY");

View File

@ -5,6 +5,9 @@ import java.util.TimerTask;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Graphics.DisplayMode;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
@ -13,15 +16,24 @@ import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
import com.badlogic.gdx.scenes.scene2d.utils.Align;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array;
import fr.evolving.UI.Menu;
import fr.evolving.worlds.GameRenderer;
import fr.evolving.worlds.GameWorld;
import fr.evolving.worlds.LevelRenderer;
@ -33,28 +45,50 @@ import fr.evolving.automata.Level;
import fr.evolving.inputs.InputHandler;
public class GameScreen implements Screen {
private InputMultiplexer multiplexer;
private Array<InputProcessor> processors;
private Timer ScrollTimer;
private TimerTask ScrollTask;
private Stage stage;
private Table table;
private Stage stage,stage2;
private HorizontalGroup table;
private VerticalGroup table2;
private GameWorld world;
private GameRenderer Renderer;
private float runTime;
public Level level;
private ImageButton[] Barre;
private ImageTextButton cycle,temp,nrj,rayon,cout,tech;
private ImageTextButton[] Barre2;
String[] tocreate={"run","stop","speed","separator","move","zoomp","zoomm","separator","raz","save","levels","tree","exits","separator","screen","sound","tuto","settings","separator","stat"};
String[] tocreate2={"Structure","Charge","Direction","Selection","Création","Détection","Action","Scénario"};
public Actor selected;
private ButtonLevel buttonlevel;
private Objectives objectives;
private TouchMaptiles map;
private Image Barrehaut,Barrebas;
private Menu menu;
private float oldx,oldy;
private Label fpsLabel;
// This is the constructor, not the class declaration
public GameScreen(Level alevel) {
Gdx.app.debug(getClass().getSimpleName(),"Création des Barres verticales & horizontales");
table = new HorizontalGroup();
table.bottom().padLeft(5f).padBottom(8f).space(10f);
table2 = new VerticalGroup();
table2.setPosition(AssetLoader.width, AssetLoader.height*2/3);
table2.right();
table2.space(10f);
Gdx.app.debug(getClass().getSimpleName(),"Création des elements primordiaux du screen (stage, renderer, table, level, world)");
fpsLabel=new Label("0 FPS",AssetLoader.Skin_level,"FPS");
fpsLabel.setPosition(AssetLoader.width-75, AssetLoader.height-220);
multiplexer = new InputMultiplexer();
processors = new Array<InputProcessor>();
stage = new Stage(AssetLoader.viewport);
table = new Table();
stage2 = new Stage(AssetLoader.viewport);
this.level=alevel;
oldx=0;
oldy=0;
world = new GameWorld(level);
Renderer = new GameRenderer(this);
world.setRenderer(Renderer);
@ -69,33 +103,88 @@ public class GameScreen implements Screen {
}
};
ScrollTimer.scheduleAtFixedRate(ScrollTask, 0, 30);
Gdx.app.debug(getClass().getSimpleName(),"Création de la barre de gestion du bas");
Gdx.app.debug(getClass().getSimpleName(),"Création des barres");
Barre=new ImageButton[tocreate.length];
int i=0;
for (String tocreateitem: tocreate)
Barre[i++]= new ImageButton(AssetLoader.Skin_level,tocreateitem);
for (String tocreateitem: tocreate) {
Barre[i]= new ImageButton(AssetLoader.Skin_level,tocreateitem);
Barre[i++].setName(tocreateitem);
}
Barre2=new ImageTextButton[tocreate2.length];
i=0;
for (String tocreateitem: tocreate2) {
Barre2[i]= new ImageTextButton(tocreateitem,AssetLoader.Skin_level);
Barre2[i++].setName(tocreateitem);
}
Barre[10].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug(event.getListenerActor().toString(),"Barre:Niveaux");
((Game)Gdx.app.getApplicationListener()).setScreen(new LevelScreen(level.aWorld));
}
});
if (Gdx.graphics.isFullscreen())
Barre[14].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("windows"));
Barre[14].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug(event.getListenerActor().toString(),"Barre:Ecran");
DisplayMode currentMode = Gdx.graphics.getDesktopDisplayMode();
if (Gdx.graphics.isFullscreen())
{
Gdx.app.debug(event.getListenerActor().toString(),"vers fenetre.");
Gdx.graphics.setDisplayMode(currentMode.width, currentMode.height, false);
Barre[14].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("screen"));
}
else
{
Gdx.app.debug(event.getListenerActor().toString(),"vers plein ecran.");
Gdx.graphics.setDisplayMode(currentMode.width, currentMode.height, true);
Barre[14].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("windows"));
}
}
});
if (AssetLoader.intro.getVolume()==0)
Barre[15].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("nosound"));
Barre[15].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug(event.getListenerActor().getName(),"Barre:Son");
if (AssetLoader.intro.getVolume()>0)
{
Gdx.app.debug(event.getListenerActor().toString(),"arret son.");
AssetLoader.intro.setVolume(0f);
Barre[15].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("nosound"));
}
else
{
Gdx.app.debug(event.getListenerActor().toString(),"marche son.");
AssetLoader.intro.setVolume(1f);
Barre[15].getStyle().up =new TextureRegionDrawable(AssetLoader.Atlas_level.findRegion("sound"));
}
}
});
Barre[12].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.debug(event.getListenerActor().toString(),"Barre:Quitter");
Gdx.app.exit();
}
});
Barre[6].addListener(new ClickListener(){
for (i=4;i<7;i++) {
Barre[i].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
map.setZoom(1.1f);
selected=event.getListenerActor();
Gdx.app.debug(event.getListenerActor().toString(),"Barre:Selection dans la Barre bas");
}
});
Barre[5].addListener(new ClickListener(){
}
Barre2[0].addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
map.setZoom(0.9f);
Gdx.app.debug(event.getListenerActor().toString(),"Affichage sousmenu");
((TiledMapTileLayer)menu.map.getLayers().get(0)).getCell(1,6).setTile(AssetLoader.tileSet.getTile(10));
}
});
Gdx.app.debug(getClass().getSimpleName(),"Création de la barre de gestion du haut");
@ -116,49 +205,83 @@ public class GameScreen implements Screen {
objectives.setPosition(890,AssetLoader.height-95);
buttonlevel=new ButtonLevel(level,true);
buttonlevel.setPosition(1760,AssetLoader.height-125);
Gdx.app.debug(getClass().getSimpleName(),"Ajout des barres");
Barrehaut=new Image(AssetLoader.Atlas_level.findRegion("barrehaut"));
Barrehaut.setBounds(0.0f, AssetLoader.height-200.0f,1920.0f,200.0f);
Barrehaut.setColor(0.25f, 0.25f, 0.25f, 0.9f);
Barrebas=new Image(AssetLoader.Atlas_level.findRegion("barrebas"));
Barrebas.setBounds(0.0f, 0.0f,1920.0f,95.0f);
Barrebas.setColor(0.25f, 0.25f, 0.25f, 0.9f);
Gdx.app.debug(getClass().getSimpleName(),"Création d'une tilemap");
map=new TouchMaptiles(level,128,128);
map.setBounds(0, 0, AssetLoader.width, AssetLoader.height);
map.addListener(new ClickListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
//Vector3 temp_coord = new Vector3(x,y,0);
//Vector3 coords = map.camera.unproject(temp_coord);
//x =(int) coords.x;
//y =(int) coords.y;
x=(int)((x/AssetLoader.width*map.camera.viewportWidth)+map.decx);
y=(int)((y/AssetLoader.height*map.camera.viewportHeight)+map.decy);
if (level.Grid.GetXY(x,y)!=null)
oldx=0;
oldy=0;
if (selected==null)
;
else if (selected.getName()=="zoomp")
{
System.out.println("Screen coordinates translated to world coordinates: "+ "X: " + x + " Y: " + y+" zoom:"+map.getZoom());
if (level.Grid.GetCopper(x,y)==false)
level.Grid.GetXY(x,y).Copper=true;
map.setZoom(0.9f);
map.setDec((AssetLoader.width/2-x)/2,(AssetLoader.height/2-y)/2);
return false;
}
else if (selected.getName()=="zoomm")
{
map.setZoom(1.1f);
map.setDec((AssetLoader.width/2-x)/2,(AssetLoader.height/2-y)/2);
return false;
}
else if (selected.getName()=="pen")
{
Vector2 coords=map.screentoworld(x, y);
if (level.Grid.GetXY(coords.x,coords.y)!=null)
{
Gdx.app.debug(event.getListenerActor().toString(),"Screen coordinates translated to world coordinates: "+ "X: " + coords.x + " Y: " + coords.y);
if (level.Grid.GetCopper(coords.x,coords.y)==false)
level.Grid.GetXY(coords.x,coords.y).Copper=true;
else
level.Grid.GetXY(x,y).Copper=false;
level.Grid.GetXY(coords.x,coords.y).Copper=false;
level.Grid.tiling();
map.redraw();
}
return false;
}
return true;
}
});
map.addListener(new ClickListener(){
@Override
public void touchDragged(InputEvent event, float x, float y, int pointer) {
if (selected==null)
;
else if (selected.getName()=="move") {
if (oldx!=0 && oldy!=0) {
map.setDec(x-oldx,y-oldy);
Gdx.app.debug(event.getListenerActor().toString(),"Decalage absolue en pixel:"+(x-oldx)+"x"+(y-oldy));
}
oldx=x;
oldy=y;
}
}
});
menu=new Menu(4,8);
map.addListener(new ClickListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Vector2 coords=menu.screentoworld(x,y);
Gdx.app.debug(event.getListenerActor().toString(),"Coordonnées:"+x+"x"+y+" Coordonnées deprojettée:"+coords.x+"x"+coords.y);
return false;
}
});
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
runTime += delta;
world.update(delta);
Renderer.render(delta, runTime);
fpsLabel.setText(Gdx.graphics.getFramesPerSecond()+"FPS");
Renderer.render(delta, runTime,0);
stage2.draw();
Renderer.render(delta, runTime,1);
stage.draw();
Renderer.render(delta, runTime,2);
}
@Override
@ -169,22 +292,27 @@ public class GameScreen implements Screen {
@Override
public void show() {
Gdx.app.log("*****","Affichage du niveau.");
table.bottom().left().padBottom(10f);
for (int i=0;i<tocreate2.length;i++)
table2.addActor(Barre2[i]);
for (int i=0;i<tocreate.length;i++)
table.add(Barre[i]).padLeft(10f);
stage.addActor(map);
stage.addActor(Barrehaut);
stage.addActor(Barrebas);
table.addActor(Barre[i]);
stage2.addActor(map);
stage.addActor(objectives);
stage.addActor(buttonlevel);
stage.addActor(rayon);
stage.addActor(nrj);
stage.addActor(fpsLabel);
stage.addActor(temp);
stage.addActor(cycle);
stage.addActor(table2);
stage.addActor(table);
stage.addActor(tech);
stage.addActor(cout);
Gdx.input.setInputProcessor(stage);
stage.addActor(menu);
processors.add(stage);
processors.add(stage2);
multiplexer.setProcessors(processors);
Gdx.input.setInputProcessor(multiplexer);
}
@Override

View File

@ -80,13 +80,13 @@ public class LevelScreen implements Screen {
@Override
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
ButtonLevel abutton = (ButtonLevel)event.getListenerActor();
Gdx.app.debug(getClass().getSimpleName(), "Enter button "+abutton.level.Name);
Gdx.app.debug(event.getListenerActor().toString(), "Enter button ");
if (!abutton.isChecked())
showlevel(abutton);
}
public void exit(InputEvent event, float x, float y, int pointer, Actor fromActor) {
ButtonLevel abutton = (ButtonLevel)event.getListenerActor();
Gdx.app.debug(getClass().getSimpleName(), "Enter button "+abutton.level.Name);
Gdx.app.debug(event.getListenerActor().toString(), "Enter button ");
if (!abutton.isChecked())
showlevel(abutton);
}
@ -162,7 +162,7 @@ public class LevelScreen implements Screen {
world++;
loadWorld(world);
}
Gdx.app.debug(getClass().getSimpleName(),"World:"+String.valueOf(world)+" Maxworld:"+String.valueOf(getMaxWorld()));
Gdx.app.debug(event.getListenerActor().toString(),"World:"+String.valueOf(world)+" Maxworld:"+String.valueOf(getMaxWorld()));
}
});
Previous=new ImageButton(AssetLoader.Skin_level,"Previous");
@ -174,7 +174,7 @@ public class LevelScreen implements Screen {
world--;
loadWorld(world);
}
Gdx.app.debug(getClass().getSimpleName(),"World:"+String.valueOf(world)+" Maxworld:"+String.valueOf(getMaxWorld()));
Gdx.app.debug(event.getListenerActor().toString(),"World:"+String.valueOf(world)+" Maxworld:"+String.valueOf(getMaxWorld()));
}
});
cout=new ImageTextButton("5",AssetLoader.Skin_level,"cout");

View File

@ -21,10 +21,8 @@ public class GameRenderer {
private ShapeRenderer shapeRenderer;
private SpriteBatch batcher;
private GameScreen GameScreen;
public void evolve() {
}
private TextureRegion oneselection;
private float rotation;
public GameRenderer(GameScreen GameScreen) {
this.GameScreen=GameScreen;
@ -32,13 +30,38 @@ public class GameRenderer {
batcher.setProjectionMatrix(AssetLoader.Camera.combined);
shapeRenderer = new ShapeRenderer();
shapeRenderer.setProjectionMatrix(AssetLoader.Camera.combined);
oneselection= AssetLoader.Atlas_level.findRegion("circle");
rotation=0f;
}
public void render(float delta, float runTime) {
public void evolve() {
rotation+=5;
}
public void render(float delta, float runTime,int layer) {
if (layer==0) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
else if (layer==1) {
batcher.begin();
batcher.setColor(0.25f, 0.25f, 0.25f, 1f);
batcher.draw(AssetLoader.Atlas_level.findRegion("barrehaut"),0.0f,AssetLoader.height-198.0f,1920.0f,200.0f);
batcher.draw(AssetLoader.Atlas_level.findRegion("barrebas"),0.0f,0.0f,1920.0f,170.0f);
batcher.draw(AssetLoader.Atlas_level.findRegion("barrecentre"),1450f,AssetLoader.height-800.0f,620f,520.0f);
batcher.end();
}
else if (layer==2) {
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.end();
batcher.begin();
if (GameScreen.selected!=null)
{
batcher.setColor(1f, 0f, 0f, 1f);
batcher.draw(oneselection, GameScreen.selected.getX(), GameScreen.selected.getY(), GameScreen.selected.getWidth()/2,GameScreen.selected.getHeight()/2,GameScreen.selected.getWidth(), GameScreen.selected.getHeight(),1f,1f,rotation);
}
batcher.end();
}
}
}

View File

@ -45,7 +45,6 @@ public class LevelRenderer {
Laser=new Laser();
AssetLoader.viewport.apply();
font=AssetLoader.Skin_level.getFont("OpenDyslexicAlta-22");
font.setColor(AssetLoader.Levelcolors[LevelScreen.world]);
}
public void evolve() {
@ -70,7 +69,7 @@ public class LevelRenderer {
public void render(float delta, float runTime) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
font.setColor(AssetLoader.Levelcolors[LevelScreen.world]);
batcher.begin();
batcher.setProjectionMatrix(AssetLoader.Camera.combined);
batcher.setColor(0.25f,0.25f,0.25f,1f);