void handle_wm(UINT Msg) { switch(Msg) { case WM_COMMAND: switch(LOWORD(Application->events.syswm.msg->wParam)) { case IDM_EXIT1: Application->running = 0; break; case IDM_START1: if(simulation.state == 0) { if(Gametimer->t_paused) { time_unpause(Gametimer); } if(simulation_init()) { setStatus("PvP initialized."); Application->clear = 1; simulation.state = 1; } } break; case IDM_ABOUT1: MessageBox(Application->hWnd, "Created by Fahid Jarmash\nHorton High School 2010-2011", "About", MB_OK | MB_ICONINFORMATION); break; case IDM_HELP1: // HELP break; } } }
void central_data_init(){ // init controls central_data.controls.rpy[ROLL]=0; central_data.controls.rpy[PITCH]=0; central_data.controls.rpy[YAW]=0; central_data.controls.thrust=-1.0; central_data.controls.run_mode = MOTORS_OFF; // init stabilisers stabilisation_copter_init(¢ral_data.stabiliser_stack); // central_data.stabilisers_stack = central_data.simulation_mode=0; // init waypoint navigation central_data.number_of_waypoints = 0; central_data.waypoint_set = false; central_data.waypoint_sending = false; central_data.waypoint_receiving = false; central_data.critical_landing = false; central_data.collision_avoidance = false; central_data.automatic_take_off = false; // default GPS home position central_data.position_estimation.local_position.origin.longitude= HOME_LONGITUDE; central_data.position_estimation.local_position.origin.latitude = HOME_LATITUDE; central_data.position_estimation.local_position.origin.altitude = HOME_ALTITUDE; central_data.position_estimation.local_position.pos[0]=0; central_data.position_estimation.local_position.pos[1]=0; central_data.position_estimation.local_position.pos[2]=0; // init simulation simulation_init(&(central_data.sim_model),&(central_data.imu.attitude)); central_data.sim_model.local_position = central_data.position_estimation.local_position; }
int CALLBACK Dialog_Proc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) { char buf[10]; switch(Message) { case WM_CLOSE: DestroyWindow(simulation.Config); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_PAUSE: if(Gametimer->t_paused) { time_unpause(Gametimer); SetDlgItemText(simulation.Config, ID_PAUSE, "Pause"); SDL_WM_SetCaption("PvP", NULL); setStatus("PvP unpaused."); } else { time_pause(Gametimer); SetDlgItemText(simulation.Config, ID_PAUSE, "Unpause"); SDL_WM_SetCaption("PvP - Paused", NULL); setStatus("PvP paused."); } break; case ID_STOP: time_unpause(Gametimer); simulation.state = 0; Application->clear = 1; simulation_cleanup(); DestroyWindow(simulation.Config); break; case ID_CLEAR: simulation_cleanup(); cleanup_cells(); simulation_render(0.01f); break; case IDC_UPDATETIME: GetDlgItemText(simulation.Config, IDC_TIMEDELAY, buf, 15); int delay = atoi(buf); if(delay >= 0 && delay < 10000) { simulation.tickdelay = delay; } GetDlgItemText(simulation.Config, IDC_GENERATIONTICK, buf, 15); int genpertick = atoi(buf); if(genpertick > 0) { simulation.generations = genpertick; } break; case IDC_UPDATEAREA: GetDlgItemText(simulation.Config, IDC_WIDTH, buf, 15); int width = atoi(buf); if(width > 0 && width < 3500) { MAP_WIDTH = width; } GetDlgItemText(simulation.Config, IDC_HEIGHT, buf, 15); int height = atoi(buf); if(height > 0 && height < 3500) { MAP_HEIGHT = height; } GetDlgItemText(simulation.Config, IDC_SCREENWIDTH, buf, 15); width = atoi(buf); if(width > 0) { Application->r_w = width; } GetDlgItemText(simulation.Config, IDC_SCREENHEIGHT, buf, 15); height = atoi(buf); if(height > 0) { Application->r_h = height; } DestroyWindow(simulation.Config); simulation.Config = NULL; Application->Window = SDL_SetVideoMode(width, height + GRAPH_HEIGHT, 24, Application->Flags); simulation_init(); break; case ID_PICTURE: SDL_SaveBMP(Application->Window, "Screenshot.bmp"); break; } break; default: return 0; } return 1; }