Added a function to clear data of polygons array.
[chise/kage.git] / engine / kagedf.js
index 486ac99..ba51376 100755 (executable)
@@ -1,9 +1,9 @@
 function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){\r
   var tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;\r
   var rad;\r
-  \r
+       \r
   if(kage.kShotai == kage.kMincho){\r
-    switch(a1 % 100){\r
+    switch(a1 % 100){ // ... no need to divide\r
     case 0:\r
       break;\r
     case 1:\r
@@ -13,7 +13,7 @@ function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
           tx1 = x2;\r
           ty1 = y2 - kage.kMage * v;\r
         }\r
-        else if(y1 == y2){\r
+        else if(y1 == y2){ // ... no need\r
           if(x1 < x2){ v = 1; } else{ v = -1; }\r
           tx1 = x2 - kage.kMage * v;\r
           ty1 = y2;\r
@@ -32,7 +32,7 @@ function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
       }\r
       break;\r
     case 2:\r
-    case 12:\r
+    //case 12: // ... no need\r
       if(a3 == 4){\r
         if(x2 == x3){\r
           tx1 = x3;\r
@@ -92,14 +92,14 @@ function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
           tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
           ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
         }\r
-        tx3 = x3 - kage.kMage;\r
+                               tx3 = x3;\r
         ty3 = y3;\r
-        tx4 = x3 + kage.kMage * 0.5;\r
-        ty4 = y3 - kage.kMage * 2;\r
         \r
         cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
         cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
+                               if(tx3 - tx2 > 0){ // for closer position\r
+                                       cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
+                               }\r
       }\r
       else{\r
         if(x1 == x2){\r
@@ -139,6 +139,92 @@ function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
         cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force\r
       }\r
       break;\r
+    case 12:\r
+      cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);\r
+      cdDrawLine(kage, polygons, x3, y3, x4, y4, 6, a3);\r
+      break;\r
+    case 4:\r
+      rate = 6;\r
+      if(a3 == 5){\r
+        if(x1 == x2){\r
+          if(y1 < y2){ v = 1; } else{ v = -1; }\r
+          tx1 = x2;\r
+          ty1 = y2 - kage.kMage * v * rate;\r
+        }\r
+        else if(y1 == y2){\r
+          if(x1 < x2){ v = 1; } else{ v = -1; }\r
+          tx1 = x2 - kage.kMage * v * rate;\r
+          ty1 = y2;\r
+        }\r
+        else{\r
+          rad = Math.atan((y2 - y1) / (x2 - x1));\r
+          if(x1 < x2){ v = 1; } else{ v = -1; }\r
+          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
+          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
+        }\r
+        if(x2 == x3){\r
+          if(y2 < y3){ v = 1; } else{ v = -1; }\r
+          tx2 = x2;\r
+          ty2 = y2 + kage.kMage * v * rate;\r
+        }\r
+        else if(y2 == y3){\r
+          if(x2 < x3){ v = 1; } else { v = -1; }\r
+          tx2 = x2 + kage.kMage * v * rate;\r
+          ty2 = y2;\r
+        }\r
+        else{\r
+          rad = Math.atan((y3 - y2) / (x3 - x2));\r
+          if(x2 < x3){ v = 1; } else{ v = -1; }\r
+          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
+          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
+        }\r
+                               tx3 = x3;\r
+        ty3 = y3;\r
+        \r
+        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
+        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
+                               if(tx3 - tx2 > 0){ // for closer position\r
+                                       cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
+                               }\r
+      }\r
+      else{\r
+        if(x1 == x2){\r
+          if(y1 < y2){ v = 1; } else { v = -1; }\r
+          tx1 = x2;\r
+          ty1 = y2 - kage.kMage * v * rate;\r
+        }\r
+        else if(y1 == y2){\r
+          if(x1 < x2){ v = 1; } else{ v = -1; }\r
+          tx1 = x2 - kage.kMage * v * rate;\r
+          ty1 = y2;\r
+        }\r
+        else{\r
+          rad = Math.atan((y2 - y1) / (x2 - x1));\r
+          if(x1 < x2){ v = 1; } else{ v = -1; }\r
+          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
+          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
+        }\r
+        if(x2 == x3){\r
+          if(y2 < y3){ v = 1; } else{ v = -1; }\r
+          tx2 = x2;\r
+          ty2 = y2 + kage.kMage * v * rate;\r
+        }\r
+        else if(y2 == y3){\r
+          if(x2 < x3){ v = 1; } else{ v = -1; }\r
+          tx2 = x2 + kage.kMage * v * rate;\r
+          ty2 = y2;\r
+        }\r
+        else{\r
+          rad = Math.atan((y3 - y2) / (x3 - x2));\r
+          if(x2 < x3){ v = 1; } else{ v = -1; }\r
+          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
+          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
+        }\r
+        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
+        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
+        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force\r
+      }\r
+      break;\r
     case 6:\r
       if(a3 == 5){\r
         /* only implimented for gothic\r
@@ -175,9 +261,9 @@ function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){
       break;\r
     case 7:\r
       cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);\r
-      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, 7);\r
+      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, a3);\r
       break;\r
-    case 9: // may not be exist\r
+    case 9: // may not be exist ... no need\r
       //kageCanvas[y1][x1] = 0;\r
       //kageCanvas[y2][x2] = 0;\r
       break;\r