long VFSPlugin_LWO::ReadSubChunk(void) { long id = ReadLong(); short len = ReadShort(); switch(id) { case ID_STIL: { read_unkn(id,len); }break; case ID_COLR: { read_colr(len); }break; case ID_DIFF: { read_diff(len); }break; case ID_LUMI: { read_lumi(len); }break; case ID_SPEC: { read_spec(len); }break; case ID_REFL: { read_refl(len); }break; case ID_TRAN: { read_tran(len); }break; case ID_TRNL: { read_trnl(len); }break; case ID_GLOS: { read_glos(len); }break; case ID_SHRP: { read_shrp(len); }break; case ID_SMAN: { read_sman(len); }break; case ID_BUMP: { read_bump(len); }break; case ID_SIDE: { read_unkn(id,len); }break; case ID_BLOK: { read_unkn(id,len); }break; case ID_IMAP: { read_unkn(id,len); }break; case ID_TMAP: { read_unkn(id,len); }break; case ID_IMAG: { read_unkn(id,len); }break; case ID_CHAN: { read_unkn(id,len); }break; default: { read_unkn(id,len); }break; }; return len + 6; }
/*************************************************** 功能:按下遥控器的前后左右按键之后,机器按照遥控器的方向运动 不要管理红外碰撞 ***************************************************/ uint8 YaoKongFangXiang(void) { static uint8 piv_yaokong = 0; //在有遥控的时候有碰撞信号,机器后退 if(piv_yaokong == 1) { if(read_bump() != 0) //机器有碰撞 { stop_rap(); mode.step = 0; mode.bump = 0; mode.step_yaokong = 0; piv_yaokong = 0; return 0; } } if((gsv_yaokong.effect == 1)||(gsv_yaokong.sign == 1)) { gsv_yaokong.sign = 0; if(read_bump() != 0) { piv_yaokong = 0; mode.step_yaokong = 0; return 0; } switch(gsv_yaokong.key) { case YAOKONG_LEFT: if(mode.step_yaokong != 1) { stop_rap(); mode.step_yaokong = 1; } break; case YAOKONG_RIGHT: if(mode.step_yaokong != 2) { stop_rap(); mode.step_yaokong = 2; } break; case YAOKONG_FRONT: if(mode.step_yaokong != 4) { stop_rap(); mode.step_yaokong = 4; } break; case YAOKONG_BACK: if(mode.step_yaokong != 3) { stop_rap(); mode.step_yaokong = 3; } break; default : piv_yaokong = 0; return 0; } if(piv_yaokong == 0) { stop_rap(); piv_yaokong = 1; } } else { if((piv_yaokong != 0)&&(mode.step_yaokong != 5)) { stop_rap(); mode.step_yaokong = 5; } } if(piv_yaokong != 0) { switch(mode.step_yaokong) { case 0: break; case 1: do_action(1,angle360); break; case 2: do_action(2,angle360); break; case 3: do_action(4,METE_TWO); break; case 4: do_action(3,METE_TWO); break; case 5: if(do_action(3,angle120)) { piv_yaokong = 0; mode.bump = 0; mode.step_yaokong = 0; mode.step = 0; } } } return piv_yaokong; }