Author: Reiner Herrmann <reiner@reiner-h.de>
Description: Fix FTBFS with gdc 12
Bug-Debian: https://bugs.debian.org/1013059

--- a/import/SDL_cdrom.d
+++ b/import/SDL_cdrom.d
@@ -68,7 +68,7 @@
 	int numtracks;		/* Number of tracks on disk */
 	int cur_track;		/* Current track position */
 	int cur_frame;		/* Current frame offset within current track */
-	SDL_CDtrack track[SDL_MAX_TRACKS+1];
+	SDL_CDtrack[SDL_MAX_TRACKS+1] track;
 }
 
 /* Conversion functions from frames to Minute/Second/Frames and vice versa */
--- a/import/SDL_mouse.d
+++ b/import/SDL_mouse.d
@@ -32,7 +32,7 @@
 	Sint16 hot_x, hot_y;		/* The "tip" of the cursor */
 	Uint8 *data;			/* B/W cursor data */
 	Uint8 *mask;			/* B/W cursor mask */
-	Uint8 *save[2];			/* Place to save cursor area */
+	Uint8*[2] save;			/* Place to save cursor area */
 	void /*WMcursor*/ *wm_cursor;		/* Window-manager cursor */
 }
 
--- a/src/abagames/util/vector.d
+++ b/src/abagames/util/vector.d
@@ -26,7 +26,7 @@
     this.y = y;
   }
 
-  public float opMul(Vector v) {
+  public float opBinary(string op)(Vector v) if (op == "*") {
     return x * v.x + y * v.y;
   }
 
@@ -43,26 +43,16 @@
     return rsl;
   }
 
-  public void opAddAssign(Vector v) {
+  public void opOpAssign(string op)(Vector v) if (op == "+") {
     x += v.x;
     y += v.y;
   }
 
-  public void opSubAssign(Vector v) {
-    x -= v.x;
-    y -= v.y;
-  }
-
-  public void opMulAssign(float a) {	
+  public void opOpAssign(string op)(float a) if (op == "*") {
     x *= a;
     y *= a;
   }
 
-  public void opDivAssign(float a) {	
-    x /= a;
-    y /= a;
-  }
-
   public float checkSide(Vector pos1, Vector pos2) {
     float xo = pos2.x - pos1.x;
     float yo = pos2.y - pos1.y;
@@ -245,27 +235,15 @@
     z = v1.z * ratio + v2.z * (1 - ratio);
   }
 
-  public void opAddAssign(Vector3 v) {
+  public void opOpAssign(string op)(Vector3 v) if (op == "+") {
     x += v.x;
     y += v.y;
     z += v.z;
   }
 
-  public void opSubAssign(Vector3 v) {
-    x -= v.x;
-    y -= v.y;
-    z -= v.z;
-  }
-
-  public void opMulAssign(float a) {	
+  public void opOpAssign(string op)(float a) if (op == "*") {
     x *= a;
     y *= a;
     z *= a;
   }
-
-  public void opDivAssign(float a) {	
-    x /= a;
-    y /= a;
-    z /= a;
-  }
 }
