Hallo, ich habe mal eine Frage,
folgendes ich habe Texturen in einem 2 Dimensionalen Array gespeichert. Jetzt werden diese verändert in Bezug auf ihre direkten Nachbarn Also wenn z.b. der linke Nachbar unsichtbar oder garnicht existiert ändert die momentane Texture ihre Struktur. Dafür habe ich bisher folgende Lösung, ich Frage einfach für jede Kombinatioin die booleans ab und jetzt stellt sich mir die Frage ob das ganze nicht effizienter geht?
Für Erläuterungen einfach Fragen.
folgendes ich habe Texturen in einem 2 Dimensionalen Array gespeichert. Jetzt werden diese verändert in Bezug auf ihre direkten Nachbarn Also wenn z.b. der linke Nachbar unsichtbar oder garnicht existiert ändert die momentane Texture ihre Struktur. Dafür habe ich bisher folgende Lösung, ich Frage einfach für jede Kombinatioin die booleans ab und jetzt stellt sich mir die Frage ob das ganze nicht effizienter geht?
Code:
Texture middle = layer.getTexture(x, y);
Texture left = layer.getTexture(x - 1, y);
Texture right = layer.getTexture(x + 1, y);
Texture above = layer.getTexture(x , y + 1);
Texture below = layer.getTexture(x, y - 1);
boolean transparentLeft = isTransparent(left), transparentRight = isTransparent(right), transparentAbove = isTransparent(above), transparentBelow = isTransparent(below);
int currentState = middle.getState();
if(!isTransparent(middle)) {
// Rand Texturen
if(transparentLeft && !transparentRight && !transparentAbove && !transparentBelow) { layer.setState(x, y, 4); layer.setRot(x, y, 1); return true; }
if(!transparentLeft && transparentRight && !transparentAbove && !transparentBelow) { layer.setState(x, y, 4); layer.setRot(x, y, 3); return true; }
if(!transparentLeft && !transparentRight && transparentAbove && !transparentBelow) { layer.setState(x, y, 4); layer.setRot(x, y, 0); return true; }
if(!transparentLeft && !transparentRight && !transparentAbove && transparentBelow) { layer.setState(x, y, 4); layer.setRot(x, y, 2); return true; }
// Rand Texturen ENDE
// Eck Texturen
if(transparentLeft && !transparentRight && transparentAbove && !transparentBelow) { layer.setState(x, y, 5); layer.setRot(x, y, 0); return true; }
if(transparentLeft && !transparentRight && !transparentAbove && transparentBelow) { layer.setState(x, y, 5); layer.setRot(x, y, 1); return true; }
if(!transparentLeft && transparentRight && !transparentAbove && transparentBelow) { layer.setState(x, y, 5); layer.setRot(x, y, 2); return true; }
if(!transparentLeft && transparentRight && transparentAbove && !transparentBelow) { layer.setState(x, y, 5); layer.setRot(x, y, 3); return true; }
// Eck Texturen ENDE
// 1 Seitige Texturen
if(transparentLeft && transparentRight && transparentAbove && !transparentBelow) { layer.setState(x, y, 2); layer.setRot(x, y, 0); return true; }
if(transparentLeft && !transparentRight && transparentAbove && transparentBelow) { layer.setState(x, y, 2); layer.setRot(x, y, 1); return true; }
if(transparentLeft && transparentRight && !transparentAbove && transparentBelow) { layer.setState(x, y, 2); layer.setRot(x, y, 2); return true; }
if(!transparentLeft && transparentRight && transparentAbove && transparentBelow) { layer.setState(x, y, 2); layer.setRot(x, y, 3); return true; }
// 1 Seitige Texturen ENDE
// 2 Seitige Texturen
if(transparentLeft && transparentRight && !transparentAbove && !transparentBelow) { layer.setState(x, y, 3); layer.setRot(x, y, 0); return true; }
if(!transparentLeft && !transparentRight && transparentAbove && transparentBelow) { layer.setState(x, y, 3); layer.setRot(x, y, 1); return true; }
// 2 Seitige Texturen ENDE
if(transparentLeft && transparentRight && transparentAbove && transparentBelow) { layer.setState(x, y, 1); layer.setRot(x, y, 0); return true; }
Für Erläuterungen einfach Fragen.