Animation Hinzugefügt

This commit is contained in:
Luca Puderbach
2024-12-09 08:17:07 +01:00
parent c9e99ee9ff
commit 96a78ee61b
3 changed files with 163 additions and 49 deletions

View File

@@ -98,49 +98,51 @@ public class Figure implements Item{
moveTo(calculateFieldPosition(fieldId));
}
private Vector3f calculateFieldPosition(int fieldID) {
public Vector3f calculateFieldPosition(int fieldID) {
float baseX = 0.0f;
float baseZ = 0.0f;
switch (fieldID) {
case 0: baseX = -5.0f; baseZ = -5.0f; break;
case 1: baseX = -3.5f; baseZ = -5.0f; break;
case 2: baseX = -2.5f; baseZ = -5.0f; break;
case 3: baseX = -1.5f; baseZ = -5.0f; break;
case 4: baseX = -0.5f; baseZ = -5.0f; break;
case 5: baseX = 0.5f; baseZ = -5.0f; break;
case 6: baseX = 1.5f; baseZ = -5.0f; break;
case 7: baseX = 2.5f; baseZ = -5.0f; break;
case 8: baseX = 3.5f; baseZ = -5.0f; break;
case 9: baseX = 5.0f; baseZ = -5.0f; break;
case 10: baseX = 5.0f; baseZ = -3.5f; break;
case 11: baseX = 5.0f; baseZ = -2.5f; break;
case 12: baseX = 5.0f; baseZ = -1.5f; break;
case 13: baseX = 5.0f; baseZ = -0.5f; break;
case 14: baseX = 5.0f; baseZ = 0.5f; break;
case 15: baseX = 5.0f; baseZ = 1.5f; break;
case 16: baseX = 5.0f; baseZ = 2.5f; break;
case 17: baseX = 5.0f; baseZ = 3.5f; break;
case 18: baseX = 5.0f; baseZ = 5.0f; break;
case 19: baseX = 3.5f; baseZ = 5.0f; break;
case 20: baseX = 2.5f; baseZ = 5.0f; break;
case 21: baseX = 1.5f; baseZ = 5.0f; break;
case 22: baseX = 0.5f; baseZ = 5.0f; break;
case 23: baseX = -0.5f; baseZ = 5.0f; break;
case 24: baseX = -1.5f; baseZ = 5.0f; break;
case 25: baseX = -2.5f; baseZ = 5.0f; break;
case 26: baseX = -3.5f; baseZ = 5.0f; break;
case 27: baseX = -5.0f; baseZ = 5.0f; break;
case 28: baseX = -5.0f; baseZ = 3.5f; break;
case 29: baseX = -5.0f; baseZ = 2.5f; break;
case 30: baseX = -5.0f; baseZ = 1.5f; break;
case 31: baseX = -5.0f; baseZ = 0.5f; break;
case 32: baseX = -5.0f; baseZ = -0.5f; break;
case 33: baseX = -5.0f; baseZ = -1.5f; break;
case 34: baseX = -5.0f; baseZ = -2.5f; break;
case 35: baseX = -5.0f; baseZ = -3.5f; break;
case 36: baseX = -5.0f; baseZ = -4.5f; break;
case 37: baseX = -5.0f; baseZ = -5.0f; break;
case 0: baseX = -9.1f; baseZ = -9.1f; break;
case 1: baseX = -6.5f; baseZ = -9.1f; break;
case 2: baseX = -4.9f; baseZ = -9.1f; break;
case 3: baseX = -3.3f; baseZ = -9.1f; break;
case 4: baseX = -1.6f; baseZ = -9.1f; break;
case 5: baseX = 0.0f; baseZ = -9.1f; break;
case 6: baseX = 1.6f; baseZ = -9.1f; break;
case 7: baseX = 3.3f; baseZ = -9.1f; break;
case 8: baseX = 4.9f; baseZ = -9.1f; break;
case 9: baseX = 6.5f; baseZ = -9.1f; break;
case 10: baseX = 9.1f; baseZ = -9.1f; break;
case 11: baseX = 9.1f; baseZ = -6.5f; break;
case 12: baseX = 9.1f; baseZ = -4.9f; break;
case 13: baseX = 9.1f; baseZ = -3.3f; break;
case 14: baseX = 9.1f; baseZ = -1.6f; break;
case 15: baseX = 9.1f; baseZ = 0.0f; break;
case 16: baseX = 9.1f; baseZ = 1.6f; break;
case 17: baseX = 9.1f; baseZ = 3.3f; break;
case 18: baseX = 9.1f; baseZ = 4.9f; break;
case 19: baseX = 9.1f; baseZ = 6.5f; break;
case 20: baseX = 9.1f; baseZ = 9.1f; break;
case 21: baseX = 6.5f; baseZ = 9.1f; break;
case 22: baseX = 4.9f; baseZ = 9.1f; break;
case 23: baseX = 3.3f; baseZ = 9.1f; break;
case 24: baseX = 1.6f; baseZ = 9.1f; break;
case 25: baseX = 0.0f; baseZ = 9.1f; break;
case 26: baseX = -1.6f; baseZ = 9.1f; break;
case 27: baseX = -3.3f; baseZ = 9.1f; break;
case 28: baseX = -4.9f; baseZ = 9.1f; break;
case 29: baseX = -6.5f; baseZ = 9.1f; break;
case 30: baseX = -9.1f; baseZ = 9.1f; break;
case 31: baseX = -9.1f; baseZ = 6.5f; break;
case 32: baseX = -9.1f; baseZ = 4.9f; break;
case 33: baseX = -9.1f; baseZ = 3.3f; break;
case 34: baseX = -9.1f; baseZ = 1.6f; break;
case 35: baseX = -9.1f; baseZ = 0.0f; break;
case 36: baseX = -9.1f; baseZ = -1.6f; break;
case 37: baseX = -9.1f; baseZ = -3.3f; break;
case 38: baseX = -9.1f; baseZ = -4.9f; break;
case 39: baseX = -9.1f; baseZ = -6.5f; break;
default: throw new IllegalArgumentException("Ungültige Feld-ID: " + fieldID);
}
@@ -148,7 +150,19 @@ public class Figure implements Item{
float zOffset = new Random().nextFloat();
//TODO adjust y pos
return new Vector3f(baseX + xOffset, 1, baseZ + zOffset);
return new Vector3f(baseX , 1, baseZ );
}
public int getCurrentFieldID() {
Vector3f pos = getPos();
for (int fieldID = 0; fieldID < 40; fieldID++) {
Vector3f fieldPosition = calculateFieldPosition(fieldID);
if (pos.distance(fieldPosition) < 0.1f) { // Toleranz für Positionsvergleich
System.out.println("Current field ID: " + fieldID);
return fieldID;
}
}
throw new IllegalStateException("Current field ID could not be determined from position: " + pos);
}
/**