void module_init(void) { int i, j; // init module/param descriptor // intialize local data at start of SDRAM data = (wavesData * )SDRAM_ADDRESS; // initialize moduleData superclass for core routines gModuleData = &(data->super); strcpy(gModuleData->name, "aleph-waves"); gModuleData->paramData = data->mParamData; gModuleData->numParams = eParamNumParams; for(i=0; i<WAVES_NVOICES; i++) { fract32 tmp = FRACT32_MAX >> 2; osc_init( &(voice[i].osc), &wavtab, SAMPLERATE ); filter_svf_init( &(voice[i].svf) ); voice[i].amp = tmp; slew_init((voice[i].ampSlew), 0, 0, 0 ); slew_init((voice[i].cutSlew), 0, 0, 0 ); slew_init((voice[i].rqSlew), 0, 0, 0 ); slew_init((voice[i].wetSlew), 0, 0, 0 ); slew_init((voice[i].drySlew), 0, 0, 0 ); voice[i].pmDelWrIdx = 0; voice[i].pmDelRdIdx = 0; // voice[i].pmDelBuf = data->pmDelBuf[i]; } for(i=0; i<4; i++) { for(j=0; j<4; j++) { patch_adc_dac[i][j] = &trash; } } for(i=0; i<2; i++) { for(j=0; j<4; j++) { patch_osc_dac[i][j] = &trash; } } // cv /* slew_init(cvSlew[0] , 0, 0, 0 ); */ /* slew_init(cvSlew[1] , 0, 0, 0 ); */ /* slew_init(cvSlew[2] , 0, 0, 0 ); */ /* slew_init(cvSlew[3] , 0, 0, 0 ); */ // cv filter_1p_lo_init( &(cvSlew[0]), 0xf ); filter_1p_lo_init( &(cvSlew[1]), 0xf ); filter_1p_lo_init( &(cvSlew[2]), 0xf ); filter_1p_lo_init( &(cvSlew[3]), 0xf ); // set parameters to defaults /// slew first param_setup( eParamHz1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamHz0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamPm10Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamPm01Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWm10Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWm01Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWave1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWave0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamAmp1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamAmp0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamCut0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamCut1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamRq0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamRq1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWet0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamWet1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamDry0Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamDry1Slew, PARAM_SLEW_DEFAULT ); param_setup( eParamHz1, 220 << 16 ); param_setup( eParamHz0, 330 << 16 ); param_setup( eParamTune1, FIX16_ONE ); param_setup( eParamTune0, FIX16_ONE ); param_setup( eParamWave1, 0 ); param_setup( eParamWave0, 0 ); param_setup( eParamAmp1, PARAM_AMP_6 ); param_setup( eParamAmp0, PARAM_AMP_6 ); param_setup( eParamPm10, 0 ); param_setup( eParamPm01, 0 ); param_setup( eParamWm10, 0 ); param_setup( eParamWm01, 0 ); /* param_setup( eParamBl1, 0 ); */ /* param_setup( eParamBl0, 0 ); */ param_setup( eParam_cut1, PARAM_CUT_DEFAULT); param_setup( eParam_rq1, PARAM_RQ_DEFAULT); param_setup( eParam_mode1, 0); param_setup( eParam_fwet1, PARAM_AMP_6 ); param_setup( eParam_fdry1, PARAM_AMP_6 ); param_setup( eParam_cut0, PARAM_CUT_DEFAULT ); param_setup( eParam_rq0, PARAM_RQ_DEFAULT ); param_setup( eParam_mode0, 0); param_setup( eParam_fwet0, PARAM_AMP_6 ); param_setup( eParam_fdry0, PARAM_AMP_6 ); param_setup( eParam_adc0_dac0, 1 ); param_setup( eParam_adc1_dac1, 1 ); param_setup( eParam_adc2_dac2, 1 ); param_setup( eParam_adc3_dac3, 1 ); param_setup( eParam_osc0_dac0, 1 ); param_setup( eParam_osc0_dac1, 1 ); param_setup( eParam_osc0_dac2, 1 ); param_setup( eParam_osc0_dac3, 1 ); param_setup( eParam_osc1_dac0, 1 ); param_setup( eParam_osc1_dac1, 1 ); param_setup( eParam_osc1_dac2, 1 ); param_setup( eParam_osc1_dac3, 1 ); param_setup( eParam_cvVal0, FRACT32_MAX >> 1 ); param_setup( eParam_cvVal1, FRACT32_MAX >> 1 ); param_setup( eParam_cvVal2, FRACT32_MAX >> 1 ); param_setup( eParam_cvVal3, FRACT32_MAX >> 1 ); param_setup( eParam_cvSlew0, PARAM_SLEW_DEFAULT ); param_setup( eParam_cvSlew1, PARAM_SLEW_DEFAULT ); param_setup( eParam_cvSlew2, PARAM_SLEW_DEFAULT ); param_setup( eParam_cvSlew3, PARAM_SLEW_DEFAULT ); }
// --------------------------------------------------------------------------------------------------- //this function is the editor. called when editor mode selected. runs until //game mode or exit selected void editor(void) { int w,h; grsBitmap * savedbitmap; editorView *new_cv; static int padnum=0; vmsMatrix MouseRotMat,tempm; //@@short camera_objnum; //a camera for viewing init_editor(); InitCurve(); RestoreEffectBitmapIcons(); if (!SetScreenMode(SCREEN_EDITOR)) { SetScreenMode(SCREEN_GAME); gameStates.app.nFunctionMode=FMODE_GAME; //force back into game return; } GrSetCurrentCanvas( NULL ); GrSetCurFont(editor_font); //Editor renders into full (320x200) game screen SetWarnFunc(med_show_warning); gameStates.input.keys.bRepeat = 1; // Allow repeat in editor // _MARK_("start of editor");//Nuked to compile -KRB ui_mouse_hide(); ui_reset_idleSeconds(); gameData.objs.viewer = gameData.objs.console; slew_init(gameData.objs.console); UpdateFlags = UF_ALL; medlisp_update_screen(); //set the wire-frame window to be the current view currentView = &LargeView; if (faded_in==0) { faded_in = 1; //gr_pal_fade_in( grdCurScreen->pal ); } w = GameViewBox->canvas->cvBitmap.bmProps.w; h = GameViewBox->canvas->cvBitmap.bmProps.h; savedbitmap = GrCreateBitmap(w, h ); GrBmUBitBlt( w, h, 0, 0, 0, 0, &GameViewBox->canvas->cvBitmap, savedbitmap ); GrSetCurrentCanvas( GameViewBox->canvas ); GrSetCurFont(editor_font); //GrSetColor( CBLACK ); //gr_deaccent_canvas(); //gr_grey_canvas(); ui_mouse_show(); GrSetCurFont(editor_font); ui_pad_goto(padnum); gamestate_restore_check(); while (gameStates.app.nFunctionMode == FMODE_EDITOR) { GrSetCurFont(editor_font); info_display_all(EditorWindow); ModeFlag = 0; // Update the windows // Only update if there is no key waiting and we're not in // fast play mode. if (!KeyPeekKey()) //-- && (MacroStatus != UI_STATUS_FASTPLAY)) medlisp_update_screen(); //do editor stuff GrSetCurFont(editor_font); ui_mega_process(); last_keypress &= ~KEYDBGGED; // mask off delete key bit which has no function in editor. ui_window_do_gadgets(EditorWindow); doRobot_window(); doObject_window(); do_wall_window(); do_trigger_window(); do_hostage_window(); do_centers_window(); check_wall_validity(); Assert(gameData.walls.nWalls>=0); if (Gameview_lockstep) { static tSegment *old_cursegp=NULL; static int old_curside=-1; if (old_cursegp!=Cursegp || old_curside!=Curside) { SetPlayerFromCursegMinusOne(); old_cursegp = Cursegp; old_curside = Curside; } } if ( ui_get_idleSeconds() > COMPRESS_INTERVAL ) { med_compress_mine(); ui_reset_idleSeconds(); } // Commented out because it occupies about 25% of time in twirling the mine. // Removes some Asserts.... // med_check_all_vertices(); clear_editor_status(); // if enough time elapsed, clear editor status message TimedAutosave(mine_filename); set_editorTime_of_day(); GrSetCurrentCanvas( GameViewBox->canvas ); // Remove keys used for slew switch(last_keypress) { case KEY_PAD9: case KEY_PAD7: case KEY_PADPLUS: case KEY_PADMINUS: case KEY_PAD8: case KEY_PAD2: case KEY_LBRACKET: case KEY_RBRACKET: case KEY_PAD1: case KEY_PAD3: case KEY_PAD6: case KEY_PAD4: last_keypress = 0; } if ((last_keypress&0xff)==KEY_LSHIFT) last_keypress=0; if ((last_keypress&0xff)==KEY_RSHIFT) last_keypress=0; if ((last_keypress&0xff)==KEY_LCTRL) last_keypress=0; if ((last_keypress&0xff)==KEY_RCTRL) last_keypress=0; // if ((last_keypress&0xff)==KEY_LALT) last_keypress=0; // if ((last_keypress&0xff)==KEY_RALT) last_keypress=0; GrSetCurFont(editor_font); menubar_do( last_keypress ); //=================== DO FUNCTIONS ==================== if ( KeyFunction[ last_keypress ] != NULL ) { KeyFunction[last_keypress](); last_keypress = 0; } switch (last_keypress) { case 0: case KEY_Z: case KEY_G: case KEY_LALT: case KEY_RALT: case KEY_LCTRL: case KEY_RCTRL: case KEY_LSHIFT: case KEY_RSHIFT: case KEY_LAPOSTRO: break; case KEY_SHIFTED + KEY_L: ToggleLighting(); break; case KEY_F1: render_3d_in_big_window = !render_3d_in_big_window; UpdateFlags |= UF_ALL; break; default: { char kdesc[100]; GetKeyDescription( kdesc, last_keypress ); editor_status("Error: %s isn't bound to anything.", kdesc ); } } //================================================================ if (ModeFlag==1) { close_editor_screen(); gameStates.app.nFunctionMode=FMODE_EXIT; GrFreeBitmap( savedbitmap ); break; } if (ModeFlag==2) //-- && MacroStatus==UI_STATUS_NORMAL ) { ui_mouse_hide(); gameStates.app.nFunctionMode = FMODE_GAME; GrBmUBitBlt( w, h, 0, 0, 0, 0, savedbitmap, &GameViewBox->canvas->cvBitmap); GrFreeBitmap( savedbitmap ); break; } if (ModeFlag==3) //-- && MacroStatus==UI_STATUS_NORMAL ) { // med_compress_mine(); //will be called anyways before game. close_editor_screen(); gameStates.app.nFunctionMode=FMODE_GAME; //force back into game SetScreenMode(SCREEN_GAME); //put up game screen GrFreeBitmap( savedbitmap ); break; } // if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)GameViewBox) currentView=NULL; // if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)GroupViewBox) currentView=NULL; new_cv = currentView ; #if ORTHO_VIEWS if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)LargeViewBox) new_cv=&LargeView; if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)TopViewBox) new_cv=&TopView; if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)FrontViewBox) new_cv=&FrontView; if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)RightViewBox) new_cv=&RightView; #endif if (new_cv != currentView ) { currentView->ev_changed = 1; new_cv->ev_changed = 1; currentView = new_cv; } CalcFrameTime(); if (slew_frame(0)) { //do movement and check keys UpdateFlags |= UF_GAME_VIEW_CHANGED; if (Gameview_lockstep) { Cursegp = &gameData.segs.segments[gameData.objs.console->nSegment]; med_create_new_segment_from_cursegp(); UpdateFlags |= UF_ED_STATE_CHANGED; } } // DO TEXTURE STUFF texpage_do(); objpage_do(); // Process selection of Cursegp using mouse. if (LargeViewBox->mouse_onme && LargeViewBox->b1_clicked && !render_3d_in_big_window) { int xcrd,ycrd; xcrd = LargeViewBox->b1_drag_x1; ycrd = LargeViewBox->b1_drag_y1; find_segments(xcrd,ycrd,LargeViewBox->canvas,&LargeView,Cursegp,Big_depth); // Sets globals N_found_segs, Found_segs // If shift is down, then add tSegment to found list if (gameStates.input.keys.pressed[ KEY_LSHIFT ] || gameStates.input.keys.pressed[ KEY_RSHIFT ]) subtract_found_segments_from_selected_list(); else add_found_segments_to_selected_list(); Found_seg_index = 0; if (N_found_segs > 0) { sort_seg_list(N_found_segs,Found_segs,&gameData.objs.console->position.vPos); Cursegp = &gameData.segs.segments[Found_segs[0]]; med_create_new_segment_from_cursegp(); if (LockView_to_cursegp) setView_target_from_segment(Cursegp); } UpdateFlags |= UF_ED_STATE_CHANGED | UF_VIEWPOINT_MOVED; } if (GameViewBox->mouse_onme && GameViewBox->b1_dragging) { int x, y; x = GameViewBox->b1_drag_x2; y = GameViewBox->b1_drag_y2; ui_mouse_hide(); GrSetCurrentCanvas( GameViewBox->canvas ); GrSetColor( 15 ); GrRect( x-1, y-1, x+1, y+1 ); ui_mouse_show(); } // Set current tSegment and tSide by clicking on a polygon in game window. // If ctrl pressed, also assign current texture map to that tSide. //if (GameViewBox->mouse_onme && (GameViewBox->b1_done_dragging || GameViewBox->b1_clicked)) { if ((GameViewBox->mouse_onme && GameViewBox->b1_clicked && !render_3d_in_big_window) || (LargeViewBox->mouse_onme && LargeViewBox->b1_clicked && render_3d_in_big_window)) { int xcrd,ycrd; int seg,tSide,face,poly,tmap; if (render_3d_in_big_window) { xcrd = LargeViewBox->b1_drag_x1; ycrd = LargeViewBox->b1_drag_y1; } else { xcrd = GameViewBox->b1_drag_x1; ycrd = GameViewBox->b1_drag_y1; } //Int3(); if (FindSegSideFace(xcrd,ycrd,&seg,&tSide,&face,&poly)) { if (seg<0) { //found an tObject CurObject_index = -seg-1; editor_status("Object %d selected.",CurObject_index); UpdateFlags |= UF_ED_STATE_CHANGED; } else { // See if either shift key is down and, if so, assign texture map if (gameStates.input.keys.pressed[KEY_LSHIFT] || gameStates.input.keys.pressed[KEY_RSHIFT]) { Cursegp = &gameData.segs.segments[seg]; Curside = tSide; AssignTexture(); med_create_new_segment_from_cursegp(); editor_status("Texture assigned"); } else if (gameStates.input.keys.pressed[KEY_G]) { tmap = gameData.segs.segments[seg].sides[tSide].nBaseTex; texpage_grab_current(tmap); editor_status( "Texture grabbed." ); } else if (gameStates.input.keys.pressed[ KEY_LAPOSTRO] ) { ui_mouse_hide(); moveObject_to_mouse_click(); } else { Cursegp = &gameData.segs.segments[seg]; Curside = tSide; med_create_new_segment_from_cursegp(); editor_status("Curseg and curside selected"); } } UpdateFlags |= UF_ED_STATE_CHANGED; } else editor_status("Click on non-texture ingored"); } // Allow specification of LargeView using mouse if (gameStates.input.keys.pressed[ KEY_LCTRL ] || gameStates.input.keys.pressed[ KEY_RCTRL ]) { ui_mouse_hide(); if ( (Mouse.dx!=0) && (Mouse.dy!=0) ) { GetMouseRotation( Mouse.dx, Mouse.dy, &MouseRotMat ); VmMatMul(&tempm,&LargeView.ev_matrix,&MouseRotMat); LargeView.ev_matrix = tempm; LargeView.ev_changed = 1; LargeView_index = -1; // say not one of the orthogonal views } } else { ui_mouse_show(); } if ( gameStates.input.keys.pressed[ KEY_Z ] ) { ui_mouse_hide(); if ( Mouse.dy!=0 ) { currentView->evDist += Mouse.dy*10000; currentView->ev_changed = 1; } } else { ui_mouse_show(); } } // _MARK_("end of editor");//Nuked to compile -KRB ClearWarnFunc(med_show_warning); //kill our camera tObject gameData.objs.viewer = gameData.objs.console; //reset viewer //@@ReleaseObject(camera_objnum); padnum = ui_pad_get_current(); close_editor(); ui_close(); }
int HandleTestKey(int key) { switch (key) { #ifdef SHOW_EXIT_PATH case KEY_DEBUGGED+KEY_1: create_special_path(); break; #endif case KEY_DEBUGGED+KEY_Y: do_controlcen_destroyed_stuff(NULL); break; case KEY_BACKSP: case KEY_CTRLED+KEY_BACKSP: case KEY_ALTED+KEY_BACKSP: case KEY_SHIFTED+KEY_BACKSP: case KEY_SHIFTED+KEY_ALTED+KEY_BACKSP: case KEY_CTRLED+KEY_ALTED+KEY_BACKSP: case KEY_SHIFTED+KEY_CTRLED+KEY_BACKSP: case KEY_SHIFTED+KEY_CTRLED+KEY_ALTED+KEY_BACKSP: Int3(); break; case KEY_DEBUGGED+KEY_S: digi_reset(); break; case KEY_DEBUGGED+KEY_P: if (Game_suspended & SUSP_ROBOTS) Game_suspended &= ~SUSP_ROBOTS; //robots move else Game_suspended |= SUSP_ROBOTS; //robots don't move break; case KEY_DEBUGGED+KEY_K: Players[Player_num].shields = 1; break; // a virtual kill case KEY_DEBUGGED+KEY_SHIFTED + KEY_K: Players[Player_num].shields = -1; break; // an actual kill case KEY_DEBUGGED+KEY_X: Players[Player_num].lives++; break; // Extra life cheat key. case KEY_DEBUGGED+KEY_H: if (Player_is_dead) return 0; Players[Player_num].flags ^= PLAYER_FLAGS_CLOAKED; if (Players[Player_num].flags & PLAYER_FLAGS_CLOAKED) { #ifdef NETWORK if (Game_mode & GM_MULTI) multi_send_cloak(); #endif ai_do_cloak_stuff(); Players[Player_num].cloak_time = GameTime64; } break; case KEY_DEBUGGED+KEY_R: cheats.robotfiringsuspended = !cheats.robotfiringsuspended; break; #ifdef EDITOR //editor-specific functions case KEY_E + KEY_DEBUGGED: window_set_visible(Game_wind, 0); // don't let the game do anything while we set the editor up init_editor(); window_close(Game_wind); break; case KEY_C + KEY_SHIFTED + KEY_DEBUGGED: if (!Player_is_dead && !( Game_mode & GM_MULTI )) move_player_2_segment(Cursegp,Curside); break; //move eye to curseg case KEY_DEBUGGED+KEY_W: draw_world_from_game(); break; #endif //#ifdef EDITOR case KEY_DEBUGGED+KEY_LAPOSTRO: Show_view_text_timer = 0x30000; object_goto_next_viewer(); break; case KEY_DEBUGGED+KEY_SHIFTED+KEY_LAPOSTRO: Viewer=ConsoleObject; break; case KEY_DEBUGGED+KEY_O: toggle_outline_mode(); break; case KEY_DEBUGGED+KEY_T: *Toggle_var = !*Toggle_var; break; case KEY_DEBUGGED + KEY_L: if (++Lighting_on >= 2) Lighting_on = 0; break; case KEY_DEBUGGED + KEY_SHIFTED + KEY_L: Beam_brightness=0x38000-Beam_brightness; break; case KEY_PAD5: slew_stop(); break; #ifndef NDEBUG case KEY_DEBUGGED + KEY_F11: play_test_sound(); break; case KEY_DEBUGGED + KEY_SHIFTED+KEY_F11: advance_sound(); play_test_sound(); break; #endif case KEY_DEBUGGED + KEY_M: Debug_spew = !Debug_spew; if (Debug_spew) { HUD_init_message_literal(HM_DEFAULT, "Debug Spew: ON" ); } else { HUD_init_message_literal(HM_DEFAULT, "Debug Spew: OFF" ); } break; case KEY_DEBUGGED + KEY_C: do_cheat_menu(); break; case KEY_DEBUGGED + KEY_SHIFTED + KEY_A: do_megawow_powerup(10); break; case KEY_DEBUGGED + KEY_A: { do_megawow_powerup(200); break; } case KEY_DEBUGGED+KEY_SPACEBAR: //KEY_F7: // Toggle physics flying slew_stop(); game_flush_inputs(); if ( ConsoleObject->control_type != CT_FLYING ) { fly_init(ConsoleObject); Game_suspended &= ~SUSP_ROBOTS; //robots move } else { slew_init(ConsoleObject); //start player slewing Game_suspended |= SUSP_ROBOTS; //robots don't move } break; case KEY_DEBUGGED+KEY_COMMA: Render_zoom = fixmul(Render_zoom,62259); break; case KEY_DEBUGGED+KEY_PERIOD: Render_zoom = fixmul(Render_zoom,68985); break; #ifndef NDEBUG case KEY_DEBUGGED+KEY_D: if ((GameArg.DbgUseDoubleBuffer = !GameArg.DbgUseDoubleBuffer)!=0) init_cockpit(); break; #endif #ifdef EDITOR case KEY_DEBUGGED+KEY_Q: stop_time(); dump_used_textures_all(); start_time(); break; #endif case KEY_DEBUGGED+KEY_B: { newmenu_item m; char text[FILENAME_LEN]=""; int item; m.type=NM_TYPE_INPUT; m.text_len = FILENAME_LEN; m.text = text; item = newmenu_do( NULL, "Briefing to play?", 1, &m, NULL, NULL ); if (item != -1) { do_briefing_screens(text,1); } break; } case KEY_DEBUGGED+KEY_SHIFTED+KEY_B: if (Player_is_dead) return 0; kill_and_so_forth(); break; case KEY_DEBUGGED+KEY_G: GameTime64 = (0x7fffffffffffffffLL) - (F1_0*10); HUD_init_message(HM_DEFAULT, "GameTime %li - Reset in 10 seconds!", GameTime64); break; default: return 0; break; } return 1; }
void init_editor() { void med_show_warning(char *s); // first, make sure we can find the files we need PHYSFSX_addRelToSearchPath("editor/data", 1); // look in source directory first (for work in progress) PHYSFSX_addRelToSearchPath("editor", 1); // then in editor directory PHYSFSX_addRelToSearchPath("editor.zip", 1); // then in a zip file PHYSFSX_addRelToSearchPath("editor.dxa", 1); // or addon pack ui_init(); init_med_functions(); // Must be called before medlisp_init ui_pad_read( 0, "segmove.pad" ); ui_pad_read( 1, "segsize.pad" ); ui_pad_read( 2, "curve.pad" ); ui_pad_read( 3, "texture.pad" ); ui_pad_read( 4, "object.pad" ); ui_pad_read( 5, "objmov.pad" ); ui_pad_read( 6, "group.pad" ); ui_pad_read( 7, "lighting.pad" ); ui_pad_read( 8, "test.pad" ); medkey_init(); game_flush_inputs(); editor_font = gr_init_font( "pc8x16.fnt" ); menubar_init( "MED.MNU" ); Draw_all_segments = 1; // Say draw all segments, not just connected ones if (!Cursegp) Cursegp = &Segments[0]; init_autosave(); // atexit(close_editor); Clear_window = 1; // do full window clear. InitCurve(); restore_effect_bitmap_icons(); if (!set_screen_mode(SCREEN_EDITOR)) { set_screen_mode(SCREEN_MENU); show_menus(); //force back into menu return; } load_palette(Current_level_palette,1,0); //Editor renders into full (320x200) game screen game_init_render_buffers(320, 200); gr_init_sub_canvas( &_canv_editor, &grd_curscreen->sc_canvas, 0, 0, SWIDTH, SHEIGHT ); Canv_editor = &_canv_editor; gr_set_current_canvas( Canv_editor ); init_editor_screen(); // load the main editor dialog gr_set_current_canvas( NULL ); gr_set_curfont(editor_font); set_warn_func(med_show_warning); // _MARK_("start of editor");//Nuked to compile -KRB //@@ //create a camera for viewing in the editor. copy position from ConsoleObject //@@ camera_objnum = obj_create(OBJ_CAMERA,0,ConsoleObject->segnum,&ConsoleObject->pos,&ConsoleObject->orient,0); //@@ Viewer = &Objects[camera_objnum]; //@@ slew_init(Viewer); //camera is slewing Viewer = ConsoleObject; slew_init(ConsoleObject); init_player_object(); Update_flags = UF_ALL; //set the wire-frame window to be the current view current_view = &LargeView; if (faded_in==0) { faded_in = 1; //gr_pal_fade_in( grd_curscreen->pal ); } gr_set_current_canvas( GameViewBox->canvas ); gr_set_curfont(editor_font); //gr_setcolor( CBLACK ); //gr_deaccent_canvas(); //gr_grey_canvas(); gr_set_curfont(editor_font); FNTScaleX = FNTScaleY = 1; // No font scaling! ui_pad_goto(padnum); ModeFlag = 0; gamestate_restore_check(); }
void HandleTestKey(int key) { switch (key) { case KEYDBGGED + KEY_0: ShowWeaponStatus (); break; #ifdef SHOW_EXIT_PATH case KEYDBGGED + KEY_1: MarkPathToExit (); break; #endif case KEYDBGGED + KEY_Y: DoReactorDestroyedStuff(NULL); break; case KEYDBGGED + KEY_ALTED + KEY_D: networkData.nNetLifeKills=4000; networkData.nNetLifeKilled=5; MultiAddLifetimeKills (); break; case KEY_BACKSPACE: case KEY_CTRLED + KEY_BACKSPACE: case KEY_ALTED + KEY_BACKSPACE: case KEY_ALTED + KEY_CTRLED + KEY_BACKSPACE: case KEY_SHIFTED + KEY_BACKSPACE: case KEY_SHIFTED + KEY_ALTED + KEY_BACKSPACE: case KEY_SHIFTED + KEY_CTRLED + KEY_BACKSPACE: case KEY_SHIFTED + KEY_CTRLED + KEY_ALTED + KEY_BACKSPACE: Int3 (); break; case KEY_CTRLED + KEY_ALTED + KEY_ENTER: exit (0); break; case KEYDBGGED + KEY_S: audio.Reset (); break; case KEYDBGGED + KEY_P: if (gameStates.app.bGameSuspended & SUSP_ROBOTS) gameStates.app.bGameSuspended &= ~SUSP_ROBOTS; //robots move else gameStates.app.bGameSuspended |= SUSP_ROBOTS; //robots don't move break; case KEYDBGGED + KEY_K: LOCALPLAYER.shields = 1; MultiSendShields (); break; // a virtual kill case KEYDBGGED + KEY_SHIFTED + KEY_K: LOCALPLAYER.shields = -1; MultiSendShields (); break; // an actual kill case KEYDBGGED + KEY_X: LOCALPLAYER.lives++; break; // Extra life cheat key. case KEYDBGGED + KEY_H: // if (!(gameData.app.nGameMode & GM_MULTI)) { LOCALPLAYER.flags ^= PLAYER_FLAGS_CLOAKED; if (LOCALPLAYER.flags & PLAYER_FLAGS_CLOAKED) { if (gameData.app.nGameMode & GM_MULTI) MultiSendCloak (); AIDoCloakStuff (); LOCALPLAYER.cloakTime = gameData.time.xGame; #if TRACE console.printf (CON_DBG, "You are cloaked!\n"); #endif } else #if TRACE console.printf (CON_DBG, "You are DE-cloaked!\n"); #endif // } break; case KEYDBGGED + KEY_R: gameStates.app.cheats.bRobotsFiring = !gameStates.app.cheats.bRobotsFiring; break; case KEYDBGGED + KEY_R + KEY_SHIFTED: KillAllRobots (1); break; //flythrough keys #if DBG case KEYDBGGED + KEY_LAPOSTRO: showViewTextTimer = 0x30000; ObjectGotoNextViewer (); break; case KEYDBGGED + KEY_CTRLED + KEY_LAPOSTRO: showViewTextTimer = 0x30000; ObjectGotoPrevViewer (); break; #endif case KEYDBGGED + KEY_SHIFTED + KEY_LAPOSTRO: gameData.objs.viewerP=gameData.objs.consoleP; break; #if DBG case KEYDBGGED + KEY_O: ToggleOutlineMode (); break; #endif case KEYDBGGED + KEY_T: *Toggle_var = !*Toggle_var; #if TRACE console.printf (CON_DBG, "Variable at %08x set to %i\n", Toggle_var, *Toggle_var); #endif break; case KEYDBGGED + KEY_L: if (++gameStates.render.nLighting >= 2) gameStates.render.nLighting = 0; break; case KEYDBGGED + KEY_SHIFTED + KEY_L: xBeamBrightness = 0x38000 - xBeamBrightness; break; case KEY_PAD5: slew_stop (); break; case KEYDBGGED + KEY_F4: { //tCollisionData hitData; //CFixVector p0 = {-0x1d99a7, -0x1b20000, 0x186ab7f}; //CFixVector p1 = {-0x217865, -0x1b20000, 0x187de3e}; //FindHitpoint(&hitData, &p0, 0x1b9, &p1, 0x40000, 0x0, NULL, -1); break; } case KEYDBGGED + KEY_M: gameStates.app.bDebugSpew = !gameStates.app.bDebugSpew; if (gameStates.app.bDebugSpew) { mopen(0, 8, 1, 78, 16, "Debug Spew"); HUDInitMessage("Debug Spew: ON"); } else { mclose(0); HUDInitMessage("Debug Spew: OFF"); } break; case KEYDBGGED + KEY_C: paletteManager.SaveEffectAndReset (); DoCheatMenu (); paletteManager.LoadEffect (); break; case KEYDBGGED + KEY_SHIFTED + KEY_A: DoMegaWowPowerup(10); break; case KEYDBGGED + KEY_A: { DoMegaWowPowerup(200); // if (gameData.app.nGameMode & GM_MULTI) { // MsgBox(NULL, 1, "Damn", "CHEATER!\nYou cannot use the\nmega-thing in network mode."); // gameData.multigame.msg.nReceiver = 100; // Send to everyone... // sprintf(gameData.multigame.msg.szMsg, "%s cheated!", LOCALPLAYER.callsign); // } else { // DoMegaWowPowerup (); // } break; } case KEYDBGGED + KEY_F: gameStates.render.bShowFrameRate = !gameStates.render.bShowFrameRate; break; case KEYDBGGED + KEY_SPACEBAR: //KEY_F7: // Toggle physics flying slew_stop (); GameFlushInputs (); if (gameData.objs.consoleP->info.controlType != CT_FLYING) { FlyInit(gameData.objs.consoleP); gameStates.app.bGameSuspended &= ~SUSP_ROBOTS; //robots move } else { slew_init(gameData.objs.consoleP); //start CPlayerData slewing gameStates.app.bGameSuspended |= SUSP_ROBOTS; //robots don't move } break; case KEYDBGGED + KEY_COMMA: gameStates.render.xZoom = FixMul(gameStates.render.xZoom, 62259); break; case KEYDBGGED + KEY_PERIOD: gameStates.render.xZoom = FixMul(gameStates.render.xZoom, 68985); break; case KEYDBGGED + KEY_P + KEY_SHIFTED: Debug_pause = 1; break; case KEYDBGGED + KEY_B: { CMenu m (1); char text [FILENAME_LEN] = ""; int item; m.AddInput (text, FILENAME_LEN); item = m.Menu (NULL, "Briefing to play?"); if (item != -1) briefing.Run (text, 1); break; } case KEYDBGGED + KEY_F5: ToggleMovieSaving (); break; case KEYDBGGED + KEY_SHIFTED + KEY_F5: { extern int Movie_fixed_frametime; Movie_fixed_frametime = !Movie_fixed_frametime; break; } case KEYDBGGED + KEY_ALTED + KEY_F5: gameData.time.xGame = I2X(0x7fff - 840); //will overflow in 14 minutes #if TRACE console.printf (CON_DBG, "gameData.time.xGame bashed to %d secs\n", X2I(gameData.time.xGame)); #endif break; case KEYDBGGED + KEY_SHIFTED + KEY_B: KillEverything (1); break; } }