OSDN Git Service

辛夷祭初日の緊急修正多数。
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / MovableStageObjectClass.js
index f7149a9..b8378f0 100644 (file)
-var MovableStageObjectClass = function(stage, args)
-{
-       MovableStageObjectClass.base.apply(this, arguments);
-
-       this.movingSpeed = new Point2D(0, 0);
-       //2 * hysteresis >= movingFriction\82Å\82 \82é\82±\82Æ\82ð\90\84\8f§\82·\82é\81B
-       //\82»\82¤\82Å\82È\82¢\8fê\8d\87\81A\96\80\8eC\82Å\82Ì\8c¸\91¬\8cã\82É\8a®\91S\82É\92â\8e~\82Å\82«\82È\82¢\89Â\94\\90«\82ª\82 \82é\81B
-       //this.movingFriction = 1000;
-       //this.hysteresis = this.movingFriction/ 60;
-       // \8c»\8dÝ\82±\82Ì\83I\83u\83W\83F\83N\83g\82ª\90Ý\92u\82µ\82Ä\82¢\82é\82©\82ð\8am\94F\82·\82é\82É\82Í ( (instance) .collideFlag & 4) != 0 \82Æ\82·\82é
-       // \8fd\97Í\82ª\82È\82­\82È\82Á\82½\82ç\82±\82Ì\95û\96@\82Å\82Í\90Ú\92n\82ð\8c\9f\8fo\82Å\82«\82È\82­\82È\82é\82ª\82»\82ê\82Í
-       //this.collideFlag = 0;
-       // \82±\82Ì\95¨\91Ì\82É\93­\82­\8fd\97Í(\95¨\91Ì\95Ê\82É\82»\82ê\82¼\82ê\8ew\92è\89Â\81A\83}\83C\83i\83X\92l\8ew\92è\89Â)
-       //this.gravity = 800;   
-       //\92i\8d·\82â\8dâ\82ð\8fæ\82è\89z\82¦\82ç\82ê\82é\83\8c\83x\83\8b 0\82¾\82Æ\8dâ\82ð\91S\82­\8fã\82ê\82È\82¢
-       this.caterpillar = 2.5;
-       this.antigravity = 0;
-       this.isItemCollector = false;
-       this.inWater = false;
-       this.onLadder = false;
-       this.collectedItems = new Array();
-
-}.extend(StageObject, {
-       className: "MovableStageObjectClass",
-       tick: function(){
-               //\92ï\8dR\8f\88\97\9d
-               //\89^\93®\8f\88\97\9d
-               if(this.ownerUID == 0 || this.ownerUID == this.ownerStage.manager.userID){
-                       this.moveTo(
-                               this.origin.x + (this.movingSpeed.x / this.ownerStage.manager.tickPerSecond),
-                               this.origin.y + (this.movingSpeed.y / this.ownerStage.manager.tickPerSecond)
-                       );
-               }
-               //\8eæ\93¾
-               this.checkTouchingDirection();
-               
-       },
-       canMoveTo: function(x, y){
-               //\82·\82×\82Ä\82Ì\83I\83u\83W\83F\83N\83g\82É\91Î\82µ\82Ä(x, y)\82É\82 \82é\82Æ\82«\82Ì\8e©\95ª\82Ì\8fÕ\93Ë\8fó\91Ô\82ð\92²\82×\82é\81B
-               var retv = true;
-               var d = this.ownerStage.stageObjectLinearList;
-               
-               this.onLadder = false;
-               for(var i = 0, i_max = d.length; i < i_max; i++){
-                       var f = d[i];
-                       if(f !== this){
-                               //\8e©\95ª\82Å\82È\82¢
-                               if(f.isOverlappedWithLocatedObject(this, x, y)){
-                                       //\8fÕ\93Ë\90æf\82Ì\8fÕ\93Ë\94Í\88Í\93à\82É\82¢\82é
-                                       if(this.isItemCollector){
-                                               //\8fÕ\93Ë\90æf\82ð\8eæ\93¾\82µ\82½\83A\83C\83e\83\80\82É\89Á\82¦\82é\81B
-                                               var titem = null;
-                                               for(titem in this.collectedItems){
-                                                       //\95¡\90\94\92Ç\89Á\82Ì\96h\8e~
-                                                       if(titem == f){
-                                                               break;
-                                                       }
-                                               }
-                                               if(titem != f){
-                                                       this.collectedItems.push(f);
-                                                       if(f instanceof LadderBlockClass){
-                                                               this.onLadder = true;
-                                                       }
-                                               }
-                                       }
-                                       if(f.isPhantom){
-                                               //\8fÕ\93Ë\90æf\82ª\8fÕ\93Ë\94»\92è\96³\8e\8b\82¾\82Á\82½\82ç\81A\8fÕ\93Ë\82Í\82µ\82È\82¢
-                                       } else{
-                                               //\8fÕ\93Ë\82µ\82½
-                                               retv = false;
-                                               //break;
-                                       }
-                                       
-                               }
-                       }
-               }
-               return retv;
-       },
-       moveTo : function(x, y) {
-               //\8c»\8dÝ\82Ì\8dÀ\95W\82©\82ç(x,y)\82É\8cü\82¯\82Ä\81A\88Ú\93®\82Å\82«\82é\82¾\82¯\88Ú\93®\82·\82é\81B
-               //\8fÕ\93Ë\95û\8cü\83t\83\89\83O\82à\90Ý\92è\82·\82é\81B
-               this.collectedItems = new Array();
-               if(!this.originDetail) this.originDetail = new Point2D(this.origin.x, this.origin.y);
-               
-               var sx = this.originDetail.x;                           //sx, sy : \8e©\95ª\82Ì\8c³\82Ì\8dÀ\95W
-               var sy = this.originDetail.y;
-               var lx = x - sx;                                //lx, ly : \96Ú\93I\92n\82Ü\82Å\82Ì\88Ú\93®\8b\97\97£(\83}\83C\83i\83X\89Â)
-               var ly = y - sy;
-               //\88Ú\93®\8b\97\97£\82ð\82Ç\82¿\82ç\82©\88ê\8e²\82Å\82Í\82©\82é
-               var ct = Math.ceil(Math.max(Math.abs(lx), Math.abs(ly)));       
-               //\88Ú\93®\82µ\82È\82¢\8e²\82ª\82 \82é\82©\82Ç\82¤\82©\81i\8d\82\91¬\89»\81j
-               var fx = (lx == 0);
-               var fy = (ly == 0);
-               //\8eÀ\8dÛ\82É\88Ú\93®\82·\82é\90æ\82Ì\8dÀ\95W
-               var ex = sx;                                    //ex, ey : \8c»\8dÝ\88Ú\93®\82Å\82«\82é\82±\82Æ\82ª\8am\94F\82³\82ê\82Ä\82¢\82é\88Ê\92u
-               var ey = sy;
-               //ct\82ð\8aî\8f\80\82É\82µ\82½\88ê\92P\88Ê\93\96\82½\82è\82Ì\88Ú\93®\97Ê
-               var dx = lx / ct;                               //dx, dy : \88ê\89ñ\93\96\82½\82è\82Ì\88Ú\93®\97Ê(\83}\83C\83i\83X\89Â\81j
-               var dy = ly / ct;
-               //\92i\8d·\82ð\8fæ\82è\89z\82¦\82é\8cW\90\94
-               var c = Math.abs(this.caterpillar * dx);
-               var gx = sx, gy = sy;
-               
-               var collidedDirection = 0;      //\91\8a\8eè\82ª\8eó\82¯\82½\8fÕ\93Ë\82Ì\95û\8cü
-               var collideDirection = 0;       //\8e©\95ª\82ª\8eó\82¯\82½\8fÕ\93Ë\82Ì\95û\8cü
-
-               if(!(fx && fy)){
-                       for(var i = 0; i < ct; i++){
-                               if(!fx && !this.canMoveTo(getRoughVal(ex + dx, lx<0), getRoughVal(ey, ly<0))){
-                                       //caterpillar\82Ì\8d\82\82³\82ð\91«\82µ\82Ä\88Ú\93®\82Å\82«\82é\82©\8e\8e\82µ\82Ä\82Ý\82é
-                                       if(c != 0 && !this.canMoveTo(getRoughVal(ex + dx, lx<0), getRoughVal(ey - c, ly<0))){
-                                                       //\82»\82ê\82Å\82àx\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é
-                                                       fx = true;
-                                                       this.movingSpeed.x = 0;
-                                                       collidedDirection |= lx > 0 ? CollideLeft : CollideRight;
-                                                       collideDirection  |= lx < 0 ? CollideLeft : CollideRight;
-                                       } else{
-                                               //\8d\82\82³\82ð\95Ï\82¦\82ê\82Î\88Ú\93®\82Å\82«\82é\82Ì\82Å\8d\82\82³\82ð\95Ï\82¦\82Ä\8cp\91±\82·\82é
-                                               ey -= c;
-                                       }
-                               }
-                               if(!fy && !this.canMoveTo(getRoughVal(ex, lx<0), getRoughVal(ey + dy, ly<0))){
-                                       //y\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é\81B
-                                       fy = true;
-                                       this.movingSpeed.y = 0;
-                                       collidedDirection |= ly > 0 ? CollideTop : CollideBottom;
-                                       collideDirection  |= ly < 0 ? CollideTop : CollideBottom;
-                               }
-                               if(!fx){
-                                       //explusdx = ex + dx;
-                                       ex += dx;
-                               }
-                               if(!fy){
-                                       //eyplusdy = ey + dy;
-                                       ey += dy;
-                               }else if(fx){
-                                       // fx && fy \82Å\82 \82ê\82Î\82±\82ê\88È\8fã\83\8b\81[\83v\82µ\82Ä\82à\88Ó\96¡\82È\82¢\82Ì\82Å\94²\82¯\82é
-                                       break;
-                               }
-                       }
-               }
-               
-               //\88Ú\93®
-               
-               this.originDetail.x = ex;
-               this.originDetail.y = ey;
-               
-               ex = getRoughVal(ex, lx>0);
-               ey = getRoughVal(ey, ly>0);
-
-               this.origin.x = ex;
-               this.origin.y = ey;
-               
-               var myObjectAttackedExists = this.objectAttacked != undefined;
-                               
-               for(var i in this.collectedItems){
-                       var item = this.collectedItems[i];
-                       if(myObjectAttackedExists){
-                               this.objectAttacked(item, item.origin.x, item.origin.y, collideDirection);
-                       }
-                       if(item.objectAttacked){
-                               //\83A\83C\83e\83\80\82É\91Î\82µ\82Ä\8eæ\93¾\82³\82ê\82½\82±\82Æ\82ð\92Ê\92m\82·\82é\81B(\8eæ\93¾\82µ\82½\83I\83u\83W\83F\83N\83g\82Ì\83C\83\93\83X\83^\83\93\83X\82¨\82æ\82Ñ\8dÀ\95W\81j
-                               item.objectAttacked(this, ex, ey, collidedDirection);
-                       }
-               }
-               return;
-       },
-});
-
-function getRoughVal(val, cutUp)
-{
-       return cutUp ? Math.floor(val) : Math.ceil(val);
-}
+var MovableStageObjectClass = function(stage, args)\r
+{\r
+       MovableStageObjectClass.base.apply(this, arguments);\r
+\r
+       this.movingSpeed = new Point2D(0, 0);\r
+       //2 * hysteresis >= movingFriction\82Å\82 \82é\82±\82Æ\82ð\90\84\8f§\82·\82é\81B\r
+       //\82»\82¤\82Å\82È\82¢\8fê\8d\87\81A\96\80\8eC\82Å\82Ì\8c¸\91¬\8cã\82É\8a®\91S\82É\92â\8e~\82Å\82«\82È\82¢\89Â\94\\90«\82ª\82 \82é\81B\r
+       //this.movingFriction = 1000;\r
+       //this.hysteresis = this.movingFriction/ 60;\r
+       // \8c»\8dÝ\82±\82Ì\83I\83u\83W\83F\83N\83g\82ª\90Ý\92u\82µ\82Ä\82¢\82é\82©\82ð\8am\94F\82·\82é\82É\82Í ( (instance) .collideFlag & 4) != 0 \82Æ\82·\82é\r
+       // \8fd\97Í\82ª\82È\82­\82È\82Á\82½\82ç\82±\82Ì\95û\96@\82Å\82Í\90Ú\92n\82ð\8c\9f\8fo\82Å\82«\82È\82­\82È\82é\82ª\82»\82ê\82Í\r
+       //this.collideFlag = 0;\r
+       // \82±\82Ì\95¨\91Ì\82É\93­\82­\8fd\97Í(\95¨\91Ì\95Ê\82É\82»\82ê\82¼\82ê\8ew\92è\89Â\81A\83}\83C\83i\83X\92l\8ew\92è\89Â)\r
+       //this.gravity = 800;   \r
+       //\92i\8d·\82â\8dâ\82ð\8fæ\82è\89z\82¦\82ç\82ê\82é\83\8c\83x\83\8b 0\82¾\82Æ\8dâ\82ð\91S\82­\8fã\82ê\82È\82¢\r
+       this.caterpillar = 2.5;\r
+       this.antigravity = 0;\r
+       this.isItemCollector = false;\r
+       this.inWater = false;\r
+       this.onLadder = false;\r
+       this.collectedItems = new Array();\r
+\r
+}.extend(StageObject, {\r
+       className: "MovableStageObjectClass",\r
+       tick: function(){\r
+               //\92ï\8dR\8f\88\97\9d\r
+               //\89^\93®\8f\88\97\9d\r
+               if(this.ownerUID == 0 || this.ownerUID == this.ownerStage.manager.userID){\r
+                       this.moveTo(\r
+                               this.origin.x + (this.movingSpeed.x / this.ownerStage.manager.tickPerSecond),\r
+                               this.origin.y + (this.movingSpeed.y / this.ownerStage.manager.tickPerSecond)\r
+                       );\r
+               }\r
+               //\8eæ\93¾\r
+               this.checkTouchingDirection();\r
+               \r
+       },\r
+       canMoveTo: function(x, y){\r
+               //\82·\82×\82Ä\82Ì\83I\83u\83W\83F\83N\83g\82É\91Î\82µ\82Ä(x, y)\82É\82 \82é\82Æ\82«\82Ì\8e©\95ª\82Ì\8fÕ\93Ë\8fó\91Ô\82ð\92²\82×\82é\81B\r
+               var retv = true;\r
+               var d = this.ownerStage.stageObjectLinearList;\r
+               \r
+               this.onLadder = false;\r
+               for(var i = 0, i_max = d.length; i < i_max; i++){\r
+                       var f = d[i];\r
+                       if(f !== this){\r
+                               //\8e©\95ª\82Å\82È\82¢\r
+                               if(f.isOverlappedWithLocatedObject(this, x, y)){\r
+                                       //\8fÕ\93Ë\90æf\82Ì\8fÕ\93Ë\94Í\88Í\93à\82É\82¢\82é\r
+                                       if(this.isItemCollector){\r
+                                               //\8fÕ\93Ë\90æf\82ð\8eæ\93¾\82µ\82½\83A\83C\83e\83\80\82É\89Á\82¦\82é\81B\r
+                                               var titem = null;\r
+                                               for(titem in this.collectedItems){\r
+                                                       //\95¡\90\94\92Ç\89Á\82Ì\96h\8e~\r
+                                                       if(titem == f){\r
+                                                               break;\r
+                                                       }\r
+                                               }\r
+                                               if(titem != f){\r
+                                                       this.collectedItems.push(f);\r
+                                                       if(f instanceof LadderBlockClass){\r
+                                                               this.onLadder = true;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       if(f.isPhantom){\r
+                                               //\8fÕ\93Ë\90æf\82ª\8fÕ\93Ë\94»\92è\96³\8e\8b\82¾\82Á\82½\82ç\81A\8fÕ\93Ë\82Í\82µ\82È\82¢\r
+                                       } else{\r
+                                               //\8fÕ\93Ë\82µ\82½\r
+                                               retv = false;\r
+                                               //break;\r
+                                       }\r
+                                       \r
+                               }\r
+                       }\r
+               }\r
+               return retv;\r
+       },\r
+       moveTo : function(x, y) {\r
+               //\8c»\8dÝ\82Ì\8dÀ\95W\82©\82ç(x,y)\82É\8cü\82¯\82Ä\81A\88Ú\93®\82Å\82«\82é\82¾\82¯\88Ú\93®\82·\82é\81B\r
+               //\8fÕ\93Ë\95û\8cü\83t\83\89\83O\82à\90Ý\92è\82·\82é\81B\r
+               this.collectedItems = new Array();\r
+               if(!this.originDetail) this.originDetail = new Point2D(this.origin.x, this.origin.y);\r
+               \r
+               var sx = this.originDetail.x;                           //sx, sy : \8e©\95ª\82Ì\8c³\82Ì\8dÀ\95W\r
+               var sy = this.originDetail.y;\r
+               var lx = x - sx;                                //lx, ly : \96Ú\93I\92n\82Ü\82Å\82Ì\88Ú\93®\8b\97\97£(\83}\83C\83i\83X\89Â)\r
+               var ly = y - sy;\r
+               //\88Ú\93®\8b\97\97£\82ð\82Ç\82¿\82ç\82©\88ê\8e²\82Å\82Í\82©\82é\r
+               var ct = Math.ceil(Math.max(Math.abs(lx), Math.abs(ly)));       \r
+               //\88Ú\93®\82µ\82È\82¢\8e²\82ª\82 \82é\82©\82Ç\82¤\82©\81i\8d\82\91¬\89»\81j\r
+               var fx = (lx == 0);\r
+               var fy = (ly == 0);\r
+               //\8eÀ\8dÛ\82É\88Ú\93®\82·\82é\90æ\82Ì\8dÀ\95W\r
+               var ex = sx;                                    //ex, ey : \8c»\8dÝ\88Ú\93®\82Å\82«\82é\82±\82Æ\82ª\8am\94F\82³\82ê\82Ä\82¢\82é\88Ê\92u\r
+               var ey = sy;\r
+               //ct\82ð\8aî\8f\80\82É\82µ\82½\88ê\92P\88Ê\93\96\82½\82è\82Ì\88Ú\93®\97Ê\r
+               var dx = lx / ct;                               //dx, dy : \88ê\89ñ\93\96\82½\82è\82Ì\88Ú\93®\97Ê(\83}\83C\83i\83X\89Â\81j\r
+               var dy = ly / ct;\r
+               //\92i\8d·\82ð\8fæ\82è\89z\82¦\82é\8cW\90\94\r
+               var c = Math.abs(this.caterpillar * dx);\r
+               var gx = sx, gy = sy;\r
+               \r
+               var collidedDirection = 0;      //\91\8a\8eè\82ª\8eó\82¯\82½\8fÕ\93Ë\82Ì\95û\8cü\r
+               var collideDirection = 0;       //\8e©\95ª\82ª\8eó\82¯\82½\8fÕ\93Ë\82Ì\95û\8cü\r
+\r
+               if(!(fx && fy)){\r
+                       for(var i = 0; i < ct; i++){\r
+                               if(!fx && !this.canMoveTo(getRoughVal(ex + dx, lx<0), getRoughVal(ey, ly<0))){\r
+                                       //caterpillar\82Ì\8d\82\82³\82ð\91«\82µ\82Ä\88Ú\93®\82Å\82«\82é\82©\8e\8e\82µ\82Ä\82Ý\82é\r
+                                       if(c != 0 && !this.canMoveTo(getRoughVal(ex + dx, lx<0), getRoughVal(ey - c, ly<0))){\r
+                                                       //\82»\82ê\82Å\82àx\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é\r
+                                                       fx = true;\r
+                                                       this.movingSpeed.x = 0;\r
+                                                       collidedDirection |= lx > 0 ? CollideLeft : CollideRight;\r
+                                                       collideDirection  |= lx < 0 ? CollideLeft : CollideRight;\r
+                                       } else{\r
+                                               //\8d\82\82³\82ð\95Ï\82¦\82ê\82Î\88Ú\93®\82Å\82«\82é\82Ì\82Å\8d\82\82³\82ð\95Ï\82¦\82Ä\8cp\91±\82·\82é\r
+                                               ey -= c;\r
+                                       }\r
+                               }\r
+                               if(!fy && !this.canMoveTo(getRoughVal(ex, lx<0), getRoughVal(ey + dy, ly<0))){\r
+                                       //y\8e²\82ª\8fÕ\93Ë\82µ\82½\82Ì\82Å\88Ú\93®\82ð\92â\8e~\82µ\83t\83\89\83O\82ð\83Z\83b\83g\82·\82é\81B\r
+                                       fy = true;\r
+                                       this.movingSpeed.y = 0;\r
+                                       collidedDirection |= ly > 0 ? CollideTop : CollideBottom;\r
+                                       collideDirection  |= ly < 0 ? CollideTop : CollideBottom;\r
+                               }\r
+                               if(!fx){\r
+                                       //explusdx = ex + dx;\r
+                                       ex += dx;\r
+                               }\r
+                               if(!fy){\r
+                                       //eyplusdy = ey + dy;\r
+                                       ey += dy;\r
+                               }else if(fx){\r
+                                       // fx && fy \82Å\82 \82ê\82Î\82±\82ê\88È\8fã\83\8b\81[\83v\82µ\82Ä\82à\88Ó\96¡\82È\82¢\82Ì\82Å\94²\82¯\82é\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               //\88Ú\93®\r
+               \r
+               this.originDetail.x = ex;\r
+               this.originDetail.y = ey;\r
+               \r
+               ex = getRoughVal(ex, lx>0);\r
+               ey = getRoughVal(ey, ly>0);\r
+\r
+               this.origin.x = ex;\r
+               this.origin.y = ey;\r
+               \r
+               var myObjectAttackedExists = this.objectAttacked != undefined;\r
+                               \r
+               for(var i in this.collectedItems){\r
+                       var item = this.collectedItems[i];\r
+                       if(myObjectAttackedExists){\r
+                               this.objectAttacked(item, item.origin.x, item.origin.y, collideDirection);\r
+                       }\r
+                       if(item.objectAttacked){\r
+                               //\83A\83C\83e\83\80\82É\91Î\82µ\82Ä\8eæ\93¾\82³\82ê\82½\82±\82Æ\82ð\92Ê\92m\82·\82é\81B(\8eæ\93¾\82µ\82½\83I\83u\83W\83F\83N\83g\82Ì\83C\83\93\83X\83^\83\93\83X\82¨\82æ\82Ñ\8dÀ\95W\81j\r
+                               item.objectAttacked(this, ex, ey, collidedDirection);\r
+                       }\r
+               }\r
+               return;\r
+       },\r
+});\r
+\r
+function getRoughVal(val, cutUp)\r
+{\r
+       return cutUp ? Math.floor(val) : Math.ceil(val);\r
+}\r