-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