void ArmDemoTask::init_demo() { set_demo_mode(DEFAULT_MODE); demoTrajectoryCommand.InitStruct(); demoTrajectoryCommand.Position.Type = Kinova::CARTESIAN_VELOCITY; set_fingers(demoTrajectoryCommand.Position.Fingers, 0, 0, 0); numDemoCartesianVelocities = 4; // must be 12 or less set_pose(demoCartesianVelocities[0], 0, 0, 5, 0, 0, 0); set_pose(demoCartesianVelocities[1], 0, -5, -5, 0, 0, 0); set_pose(demoCartesianVelocities[2], 0, 5, 0, 0, 0, 0); set_pose(demoCartesianVelocities[3], 0, 0, 0, 0, 0, 0); demoPositionCommand.InitStruct(); demoPositionCommand.Position.Type = Kinova::CARTESIAN_POSITION; // must be 12 or less positions int i = 0; set_pose(demoCartesianPositions[i++], -0.23, -0.69, 0.08, 1.136, -1.165, 2.445); set_pose(demoCartesianPositions[i++], -0.23, -0.69, 0.08, 2.954, -0.195, 2.445); // point down set_pose(demoCartesianPositions[i++], -0.23, -0.69, -0.15, 2.954, -0.195, 2.445); // move down set_pose(demoCartesianPositions[i++], -0.23, -0.69, 0.08, 2.954, -0.195, 2.445); // back up //set_pose(demoCartesianPositions[i++], -0.23, -0.69, -0.15, 2.950, -0.195, 2.445); set_pose(demoCartesianPositions[i++], -0.09, -0.69, 0.07, 2.950, -0.195, 2.445); set_pose(demoCartesianPositions[i++], -0.03, -0.32, 0.22, 2.950, -0.195, 2.445); set_pose(demoCartesianPositions[i++], -0.013,-0.53, 0.08, 0.054, -1.355, 0.960); // set_pose(demoCartesianPositions[i++], -0.013, -0.53, 0.08, 1.855, 1.383, -2.711); set_pose(demoCartesianPositions[i++], -0.23, -0.69, -0.15, 2.954, -0.195, 2.445); // move down numDemoCartesianPositions = i; }
void main_menu() { image *Earth=cash.img(earth); image *Emap=cash.img(earth_mask); char name[20]; ico_button *buts[MENU_TICONS]; long maxx=0,maxy=0; int i=0; for (;i<MENU_TICONS;i++) { sprintf(name,"icon%04d.pcx",i*3+1); menu_icons[i*3]=cash.reg("art/icons.spe",name,SPEC_IMAGE,1); sprintf(name,"icon%04d.pcx",i*3+2); menu_icons[i*3+1]=cash.reg("art/icons.spe",name,SPEC_IMAGE,1); sprintf(name,"icon%04d.pcx",i*3+2); menu_icons[i*3+2]=cash.reg("art/icons.spe",name,SPEC_IMAGE,1); long x=WINDOW_FRAME_LEFT+(i%9)*cash.img(menu_icons[0])->width(); long y=WINDOW_FRAME_TOP+(i/9)*cash.img(menu_icons[0])->height(); if (x>maxx) maxx=x; if (y>maxy) maxy=y; buts[i]=new ico_button(x,y,menu_icons_ids[i], menu_icons[i*3],menu_icons[i*3], menu_icons[i*3+1],menu_icons[i*3+2],NULL); } buts[0]->next=buts[1]; int b1,b2,b3,b4; if (DEFINEDP(symbol_value)) { if (symbol_value(l_difficulty)==l_extreme) { b1=18; b2=10; b3=12; b4=14; } else if (symbol_value(l_difficulty)==l_hard) { b1=14; b2=18; b3=10; b4=12; } else if (symbol_value(l_difficulty)==l_easy) { b1=10; b2=12; b3=14; b4=18; } else { b1=12; b2=14; b3=18; b4=10; } } else { b1=12; b2=14; b3=18; b4=10; } buts[b1]->next=buts[b2]; buts[b2]->next=buts[b3]; buts[b3]->next=buts[b4]; buts[1]->next=new ico_switch_button(buts[0]->X(), buts[0]->Y()+cash.img(menu_icons[0])->height()*2, ID_NULL, buts[b1],buts[17]); buts[17]->next=buts[8]; buts[1]->set_xy(buts[0]->X(), buts[0]->Y()+cash.img(menu_icons[0])->height()*1); buts[12]->set_xy(buts[0]->X(), buts[0]->Y()+cash.img(menu_icons[0])->height()*2); buts[17]->set_xy(buts[0]->X(), buts[0]->Y()+cash.img(menu_icons[0])->height()*3); buts[8]->set_xy(buts[0]->X(), buts[0]->Y()+cash.img(menu_icons[0])->height()*4); ico_win=eh->new_window(-1,yres/2-80,-1,-1,buts[0],"Menu"); // pmenu *main_pm=new pmenu(0,0,game_sub,screen,eh); time_marker old_time; screen->add_dirty(0,0,319,199); // create sphere map mask_line *p=make_mask_lines(Emap,Earth->width()); int eoff=0,coff=0; event ev; // main_pm->draw(screen,eh,1); long x=84,y=60; Cell *v=find_symbol("earth_x"); if (v && DEFINEDP(v)) x=lnumber_value(symbol_value(v)); v=find_symbol("earth_y"); if (v && DEFINEDP(v)) y=lnumber_value(symbol_value(v)); int state=0,stop_menu=0; time_marker start; do { time_marker new_time; if (state || new_time.diff_time(&old_time)>0.15) { old_time.get_time(); scan_map(screen,x,y,Earth,NULL,p,Emap->height(),eoff,coff); if (state) { eoff+=8; coff+=4; } else { eoff+=2; coff+=1; } if (eoff>=320) eoff-=320; if (coff>=320) coff-=320; eh->flush_screen(); } if (eh->event_waiting()) { eh->get_event(ev); start.get_time(); // reset time till demo starts up menu_handler(ev,ico_win); if (ev.type==EV_MOUSE_BUTTON && ev.mouse_button && ev.mouse_move.x>=x && ev.mouse_move.y>=y && ev.mouse_move.x<=x+Emap->width() && ev.mouse_move.y<=y+Emap->height()) { state=1; } else if (ev.type==EV_MOUSE_BUTTON && !ev.mouse_button) state=0; eh->flush_screen(); } if (new_time.diff_time(&start)>10) { if (!current_demo) { void *d=make_find_symbol("demos"); if (DEFINEDP(d)) current_demo=symbol_value(d); } if (current_demo) { if (set_demo_mode(DEMO_PLAY,lstring_value(CAR(current_demo)),eh)) stop_menu=1; current_demo=CDR(current_demo); } } } while (!stop_menu && (ev.type!=EV_MESSAGE || (ev.message.id!=ID_START_GAME && ev.message.id!=ID_QUIT))); for (i=0;i<MENU_TICONS;i++) { ifield *ic=ico_win->inm->unlink(menu_icons_ids[i]); if (i) delete ic; else delete buts[i]; } eh->close_window(ico_win); for (int xx=0;xx<Emap->height();xx++) jfree(p[xx].remap); jfree(p); if (ev.message.id==ID_QUIT) // propogate the quit message the_game->end_session(); // delete main_pm; }