feat: ajout de transmuter dans le menu permet l'ajout de transmuter sur le plateau (sans vérification conditions) ajout de fonctions permettant la gestion des transmuteurs

This commit is contained in:
Nicolas Hordé 2015-08-08 08:16:11 +02:00
parent 7a3e33dd6b
commit e2f28ba535
7 changed files with 140 additions and 6 deletions

View File

@ -25,6 +25,7 @@ public class Menu extends Actor{
private float decy; private float decy;
private int size=32; private int size=32;
public Menu(int tilesizex,int tilesizey) { public Menu(int tilesizex,int tilesizey) {
this.tilesizex=tilesizex; this.tilesizex=tilesizex;
this.tilesizey=tilesizey; this.tilesizey=tilesizey;

View File

@ -150,6 +150,14 @@ public class AssetLoader {
} }
} }
public static Transmuter getTransmuter(int Id) {
for(Transmuter transmuter:allTransmuter) {
if (transmuter.isTransmuter(Id))
return transmuter;
}
return null;
}
public static int setpref() { public static int setpref() {
prefs = Gdx.app.getPreferences("WireWorld - Evolving Games"); prefs = Gdx.app.getPreferences("WireWorld - Evolving Games");
if (prefs.contains("log")) if (prefs.contains("log"))

View File

@ -148,6 +148,26 @@ public class Positiver_I extends Transmuter {
return result; return result;
} }
public Vector2[] getallSize() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();
Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator();
Vector2[] vector=new Vector2[2];
vector[0]=new Vector2();
vector[1]=new Vector2();
while(keySetIterator.hasNext()){
Vector2 key = keySetIterator.next();
double delta=key.len();
double alpha=key.angleRad()+this.getRotation().ordinal()*Math.PI/2;
float x=(float)Math.round(delta*Math.cos(alpha));
float y=(float)Math.round(delta*Math.sin(alpha));
vector[0].x=Math.min(vector[0].x, x);
vector[0].y=Math.min(vector[0].y, y);
vector[1].x=Math.max(vector[1].x, x);
vector[1].y=Math.max(vector[1].y, y);
}
return vector;
}
public HashMap<Vector2,CaseType> getTiles() { public HashMap<Vector2,CaseType> getTiles() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>(); HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();
Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator(); Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator();

View File

@ -144,7 +144,27 @@ public class Positiver_II extends Transmuter {
for(int i=0;i<thesize;i++) for(int i=0;i<thesize;i++)
result[i]=thesize*100+this.Id*thesize+i; result[i]=thesize*100+this.Id*thesize+i;
return result; return result;
} }
public Vector2[] getallSize() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();
Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator();
Vector2[] vector=new Vector2[2];
vector[0]=new Vector2();
vector[1]=new Vector2();
while(keySetIterator.hasNext()){
Vector2 key = keySetIterator.next();
double delta=key.len();
double alpha=key.angleRad()+this.getRotation().ordinal()*Math.PI/2;
float x=(float)Math.round(delta*Math.cos(alpha));
float y=(float)Math.round(delta*Math.sin(alpha));
vector[0].x=Math.min(vector[0].x, x);
vector[0].y=Math.min(vector[0].y, y);
vector[1].x=Math.max(vector[1].x, x);
vector[1].y=Math.max(vector[1].y, y);
}
return vector;
}
public HashMap<Vector2,CaseType> getTiles() { public HashMap<Vector2,CaseType> getTiles() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>(); HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();

View File

@ -146,6 +146,26 @@ public class Positiver_III extends Transmuter {
return result; return result;
} }
public Vector2[] getallSize() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();
Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator();
Vector2[] vector=new Vector2[2];
vector[0]=new Vector2();
vector[1]=new Vector2();
while(keySetIterator.hasNext()){
Vector2 key = keySetIterator.next();
double delta=key.len();
double alpha=key.angleRad()+this.getRotation().ordinal()*Math.PI/2;
float x=(float)Math.round(delta*Math.cos(alpha));
float y=(float)Math.round(delta*Math.sin(alpha));
vector[0].x=Math.min(vector[0].x, x);
vector[0].y=Math.min(vector[0].y, y);
vector[1].x=Math.max(vector[1].x, x);
vector[1].y=Math.max(vector[1].y, y);
}
return vector;
}
public HashMap<Vector2,CaseType> getTiles() { public HashMap<Vector2,CaseType> getTiles() {
HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>(); HashMap<Vector2,CaseType> newTiles= new HashMap<Vector2,CaseType>();
Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator(); Iterator<Vector2> keySetIterator = this.Tiles.keySet().iterator();

View File

@ -61,6 +61,27 @@ public abstract class Transmuter {
return 0; return 0;
} }
public boolean isTransmuter(int Id) {
return (FindMainTile(Id)==getMainTile());
}
public Vector2 getPostitionMainTile(int Id) {
if (!isTransmuter(Id))
return null;
HashMap<Vector2,CaseType> tiles=this.getTiles();
Iterator<Vector2> keySetIterator = tiles.keySet().iterator();
int Idrec=this.getMainTile();
if (Id==Idrec)
return new Vector2();
while(keySetIterator.hasNext()){
Vector2 key = keySetIterator.next();
Idrec++;
if (Id==Idrec)
return new Vector2().sub(key);
}
return null;
}
public HashMap<Vector2,CaseType> getTiles() { public HashMap<Vector2,CaseType> getTiles() {
return null; return null;
} }
@ -174,13 +195,24 @@ public abstract class Transmuter {
public int[] getallTiles() { public int[] getallTiles() {
return null; return null;
} }
public Vector2[] getallSize() {
return null;
}
public String getInformations() { public String getInformations() {
HashMap<Vector2,CaseType> tiles=this.getTiles(); HashMap<Vector2,CaseType> tiles=this.getTiles();
Iterator<Vector2> keySetIterator = tiles.keySet().iterator(); Iterator<Vector2> keySetIterator = tiles.keySet().iterator();
String result; String result;
result="**********************************\n"+"Name:"+this.getName()+"\nClass:"+this.getaClass()+" Id:"+this.getMainTile()+" Rotation:"+this.getRotation()+"\nPrice:"+this.getPrice()+" Tech:"+this.getTechnology()+"\nResearch:"+this.getResearch()+" Size:"+this.getSize()+"\nActivable:"+this.isActivable()+" Activation:"+this.getActivationLevel()+" Visible:"+this.isShowed()+"\nUpgradable:"+((this.isUpgradable())?this.getUpgrade().getName():this.isUpgradable())+" Unlockable:"+((this.isUnlockable())?this.getUnlock().getName():this.isUnlockable())+"\nUpgrade Cycle:"+this.getUpgradeCycle()+" upgrade:"+this.isUpgradableCycle()+"\nUpgrade Temperature:"+this.getUpgradeTemp()+" upgrade:"+this.isUpgradableTemp()+"\nUpgrade Nrj:"+this.getUpgradeNrj()+" upgrade:"+this.isUpgradableNrj()+"\nUpgrade Rayon:"+this.getUpgradeRayon()+" upgrade:"+this.isUpgradableRayon()+"\nTemperature /turn:"+this.getTurnTemp()+" Rayon /turn:"+this.getTurnRayon()+" Nrj /turn:"+this.getTurnNrj()+"\nTemperature /use:"+this.getUsedTemp()+" Rayon /use:"+this.getUsedRayon()+" Nrj /use:"+this.getUsedNrj()+"\n"; result="**********************************\n"+"Name:"+this.getName()+"\nClass:"+this.getaClass()+" Id:"+this.getMainTile()+" Rotation:"+this.getRotation()+"\nPrice:"+this.getPrice()+" Tech:"+this.getTechnology()+"\nResearch:"+this.getResearch()+" Size:"+this.getSize()+"\nActivable:"+this.isActivable()+" Activation:"+this.getActivationLevel()+" Visible:"+this.isShowed()+"\nUpgradable:"+((this.isUpgradable())?this.getUpgrade().getName():this.isUpgradable())+" Unlockable:"+((this.isUnlockable())?this.getUnlock().getName():this.isUnlockable())+"\nUpgrade Cycle:"+this.getUpgradeCycle()+" upgrade:"+this.isUpgradableCycle()+"\nUpgrade Temperature:"+this.getUpgradeTemp()+" upgrade:"+this.isUpgradableTemp()+"\nUpgrade Nrj:"+this.getUpgradeNrj()+" upgrade:"+this.isUpgradableNrj()+"\nUpgrade Rayon:"+this.getUpgradeRayon()+" upgrade:"+this.isUpgradableRayon()+"\nTemperature /turn:"+this.getTurnTemp()+" Rayon /turn:"+this.getTurnRayon()+" Nrj /turn:"+this.getTurnNrj()+"\nTemperature /use:"+this.getUsedTemp()+" Rayon /use:"+this.getUsedRayon()+" Nrj /use:"+this.getUsedNrj()+"\nTiles:";
int[] allTiles;
Vector2[] allSize;
allTiles=this.getallTiles();
for(int i=0;i<allTiles.length;i++)
result+=allTiles[i]+" ";
allSize=this.getallSize();
result+="Size x&y:"+allSize[0].x+","+allSize[0].y+" to "+ allSize[1].x+","+allSize[1].y+"\n *Placement*\n";
while(keySetIterator.hasNext()){ while(keySetIterator.hasNext()){
Vector2 key = keySetIterator.next(); Vector2 key = keySetIterator.next();
result+="\ncoords:" + key.x+","+key.y + " type: " + tiles.get(key); result+="\ncoords:" + key.x+","+key.y + " type: " + tiles.get(key);

View File

@ -46,6 +46,7 @@ import fr.evolving.automata.Level;
import fr.evolving.automata.Positiver_I; import fr.evolving.automata.Positiver_I;
import fr.evolving.automata.Positiver_II; import fr.evolving.automata.Positiver_II;
import fr.evolving.automata.Positiver_III; import fr.evolving.automata.Positiver_III;
import fr.evolving.automata.Transmuter;
import fr.evolving.automata.Transmuter.Angular; import fr.evolving.automata.Transmuter.Angular;
import fr.evolving.inputs.InputHandler; import fr.evolving.inputs.InputHandler;
@ -67,6 +68,7 @@ public class GameScreen implements Screen {
String[] tocreate={"run","stop","speed","separator","move","zoomp","zoomm","separator","raz","save","levels","tree","exits","separator","screen","sound","tuto","settings","separator","stat"}; 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"}; String[] tocreate2={"Structure","Charge","Direction","Selection","Création","Détection","Action","Scénario"};
public Actor selected; public Actor selected;
public Transmuter selected_transmuter;
private ButtonLevel buttonlevel; private ButtonLevel buttonlevel;
private Objectives objectives; private Objectives objectives;
private TouchMaptiles map; private TouchMaptiles map;
@ -176,6 +178,7 @@ public class GameScreen implements Screen {
level.Grid.Cells[2][2].Transmuter.setRotation(Angular.A270); level.Grid.Cells[2][2].Transmuter.setRotation(Angular.A270);
level.Grid.Cells[7][2].Transmuter=new Positiver_III(level); level.Grid.Cells[7][2].Transmuter=new Positiver_III(level);
level.Grid.Cells[7][2].Transmuter.setRotation(Angular.A270); level.Grid.Cells[7][2].Transmuter.setRotation(Angular.A270);
Gdx.app.debug("7.2 A270 place main",String.valueOf(level.Grid.Cells[7][2].Transmuter.getPostitionMainTile(205)));
level.Grid.tiling_transmuter(); level.Grid.tiling_transmuter();
int[] result; int[] result;
result=level.Grid.Cells[5][5].Transmuter.getallTiles(); result=level.Grid.Cells[5][5].Transmuter.getallTiles();
@ -184,6 +187,7 @@ public class GameScreen implements Screen {
result=level.Grid.Cells[8][8].Transmuter.getallTiles(); result=level.Grid.Cells[8][8].Transmuter.getallTiles();
for (int i=0;i<result.length;i++) for (int i=0;i<result.length;i++)
Gdx.app.debug("getalltiles 8,8",String.valueOf(result[i])); Gdx.app.debug("getalltiles 8,8",String.valueOf(result[i]));
Gdx.app.debug("istransmuter 203",AssetLoader.getTransmuter(201).getName());
} }
}); });
if (Gdx.graphics.isFullscreen()) if (Gdx.graphics.isFullscreen())
@ -266,7 +270,12 @@ public class GameScreen implements Screen {
menu.clear(); menu.clear();
map.fillempty(53); map.fillempty(53);
selected=null; selected=null;
menu.setMenu(0, 7, 10); menu.setMenu(0, 7, 200);
menu.setMenu(1, 7, 201);
menu.setMenu(0, 6, 202);
menu.setMenu(1, 6, 203);
menu.setMenu(0, 5, 204);
menu.setMenu(1, 5, 205);
} }
}); });
Barre2[2].addListener(new ClickListener(){ Barre2[2].addListener(new ClickListener(){
@ -408,6 +417,17 @@ public class GameScreen implements Screen {
map.redraw(60); map.redraw(60);
} }
} }
else if (selected.getName()=="transmuter")
{
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);
level.Grid.GetXY(coords.x,coords.y).Transmuter=selected_transmuter;
level.Grid.tiling_transmuter();
map.redraw(60);
}
}
return true; return true;
} }
}); });
@ -466,9 +486,9 @@ public class GameScreen implements Screen {
Vector2 coords=menu.screentoworld(x,y); Vector2 coords=menu.screentoworld(x,y);
int tile=menu.getMenu((int)coords.x,(int)coords.y); int tile=menu.getMenu((int)coords.x,(int)coords.y);
Gdx.app.debug(event.getListenerActor().toString(),"Coordonnées:"+x+"x"+y+" Coordonnées deprojettée:"+coords.x+"x"+coords.y+" tile:"+tile); Gdx.app.debug(event.getListenerActor().toString(),"Coordonnées:"+x+"x"+y+" Coordonnées deprojettée:"+coords.x+"x"+coords.y+" tile:"+tile);
if (menuactor==null)
menuactor=new Actor();
if (tile!=54 && tile!=0) { if (tile!=54 && tile!=0) {
if (menuactor==null)
menuactor=new Actor();
Vector2 coords2=menu.worldtoscreen((int)coords.x,(int)coords.y); Vector2 coords2=menu.worldtoscreen((int)coords.x,(int)coords.y);
menuactor.setBounds(coords2.x, coords2.y, 60, 60); menuactor.setBounds(coords2.x, coords2.y, 60, 60);
selected=menuactor; selected=menuactor;
@ -480,6 +500,19 @@ public class GameScreen implements Screen {
selected.setName("fiber"); selected.setName("fiber");
else if (tile==53) else if (tile==53)
selected.setName("blank"); selected.setName("blank");
else if (tile>99) {
Transmuter transmuter=AssetLoader.getTransmuter(tile);
if (transmuter!=null) {
Vector2 gotomain=transmuter.getPostitionMainTile(tile);
if (gotomain!=null) {
coords2=menu.worldtoscreen((int)(coords.x+gotomain.x),(int)(coords.y+gotomain.y));
menuactor.setPosition(coords2.x, coords2.y);
selected.setName("transmuter");
selected_transmuter=transmuter;
Gdx.app.debug(event.getListenerActor().toString(),"transmuter deplacement vers origine:"+String.valueOf(gotomain.x)+","+String.valueOf(gotomain.y)+" coords:"+coords2.x+"x"+coords2.y);
}
}
}
} }
return false; return false;
} }