rendered paste bodyvoid 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();}