void MoveTetrimino(int in_are){ if(!in_are){ if(P.vx) if((P.das == 0)||(P.das == DAS)) if(!CollideTetrimino(P.tx + P.vx, P.ty, P.rot)) P.tx += P.vx;} int i = 1, ii = 0; if(P.vr) while(ii < 3){ if(!CollideTetrimino((P.tx + (i - 1)), P.ty, P.rot + P.vr)){ P.rot += P.vr; P.rot &= 3; P.tx += (i - 1); ii = 4;} if(in_are) break; i++; i &= 2; ii++; //if((P.type == TETR_I)||(P.type == TETR_O)) //break; } if(!in_are){ if(P.vy == FIRM){ while(!CollideTetrimino(P.tx, P.ty + 1, P.rot)){ P.lock = 1; P.ty++;}} else if(P.vy == SOFT){ P.drop += 1; P.lock = 254;} if(!P.mode) P.drop += ((float)(P.level)/60.0f); else P.drop += CGrav[P.mode - 1]; ApplyGravity();} } void ApplyGravity(){ if(!CollideTetrimino(P.tx, P.ty + 1, P.rot)){ if(P.drop >= 1){ pal_obj_mem[P.type + 1] = DimColor(P.type, 1); P.lock = 0; P.drop--; P.ty++; ApplyGravity();}} else{ pal_obj_mem[P.type + 1] = DimColor(P.type, .5 + (.5 * ((float)LOCK - P.lock)/(float)LOCK)); P.lock++; P.drop = 0;} if(P.lock > LOCK) LockTetrimino();}