2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
14 * $Source: /cvs/cvsroot/d2x/main/editor/kfuncs.c,v $
17 * $Date: 2004-12-19 13:54:27 $
21 * $Log: not supported by cvs2svn $
22 * Revision 1.1.1.1 1999/06/14 22:03:23 donut
23 * Import of d1x 1.37 source.
25 * Revision 2.1 1995/03/08 16:07:23 yuan
26 * Added segment sizing default functions.
28 * Revision 2.0 1995/02/27 11:34:45 john
29 * Version 2.0! No anonymous unions, Watcom 10.0, with no need
32 * Revision 1.112 1995/01/12 12:10:31 yuan
33 * Added coop object capability.
35 * Revision 1.111 1994/11/27 23:17:16 matt
36 * Made changes for new mprintf calling convention
38 * Revision 1.110 1994/11/23 12:17:22 mike
39 * bind retmap functions.
41 * Revision 1.109 1994/11/19 15:20:54 mike
42 * rip out unused code and data.
44 * Revision 1.108 1994/11/17 11:39:02 matt
45 * Ripped out code to load old mines
47 * Revision 1.107 1994/10/27 10:06:12 mike
50 * Revision 1.106 1994/10/18 15:31:43 mike
51 * Bind mine correction function to test keypad, key=1.
53 * Revision 1.105 1994/09/26 23:22:06 matt
54 * Added functions to keep player's starting position from getting messed up
56 * Revision 1.104 1994/09/24 14:15:41 mike
57 * Custom colored object support.
59 * Revision 1.103 1994/09/23 18:03:54 yuan
60 * Finished wall checking code.
62 * Revision 1.102 1994/09/22 19:03:52 mike
63 * Test function test_shortpos on ctrl-keypad3
65 * Revision 1.101 1994/09/20 14:35:56 mike
66 * Bind functions to keypad 2, 3.
68 * Revision 1.100 1994/09/15 22:58:10 matt
69 * Made new objects be oriented to their segment
70 * Added keypad function to flip an object upside-down
72 * Revision 1.99 1994/09/14 16:50:50 yuan
73 * Added load mine only function
75 * Revision 1.98 1994/08/25 21:57:52 mike
78 * Revision 1.97 1994/08/16 18:10:52 yuan
79 * Maded C place you in the center of a segment.
81 * Revision 1.96 1994/08/15 17:48:01 yuan
82 * Added external walls.
84 * Revision 1.95 1994/08/13 17:32:38 mike
87 * Revision 1.94 1994/08/05 21:17:57 matt
88 * Allow two doors to be linked together
90 * Revision 1.93 1994/08/05 18:18:52 matt
91 * Made object rotation have 4x resolution, and SHIFT+rotate do old resolution.
93 * Revision 1.92 1994/08/03 10:31:06 mike
94 * Add texture map propagation without uv assignment.
96 * Revision 1.91 1994/08/02 14:17:00 mike
97 * Clean up dialog boxes, add one for Matt.
99 * Revision 1.90 1994/07/30 17:04:47 mike
100 * Bind key for max_depth on path testing.
106 static char rcsid[] = "$Id: kfuncs.c,v 1.1 2004-12-19 13:54:27 btb Exp $";
113 #include "editor/kdefs.h"
115 #include "editor/editor.h"
119 #include "gamesave.h"
120 #include "editor/eobject.h"
121 #include "editor/medwall.h"
123 // Test function prototypes (replace Test1, 2 and 3 with whatever function
124 // you wish to test.)
125 extern void test_create_path();
126 extern void test_create_all_paths();
127 extern void test_create_path_many();
128 extern void create_all_paths();
129 extern void test_create_all_anchors();
130 // extern void make_curside_bottom_side();
131 extern void move_object_to_mouse_click();
132 extern void test_create_n_segment_path();
134 extern void set_all_modes_to_hover(void);
136 extern void check_for_overlapping_segments(void);
137 extern void init_replacements();
139 extern void do_replacements(void);
140 extern void do_replacements_all(void);
145 // for (i=Highest_segment_index+1; i<MAX_SEGMENTS; i++)
146 // Segments[i].segnum = -1;
149 mprintf((0, "Initializing replacement list.\n"));
157 // mprintf((0, "\nCalling check_for_overlapping_segments.\n"));
158 // check_for_overlapping_segments();
160 mprintf((0, "Going to do texture replacements.\n"));
166 //extern fix fcd_test(void);
167 //extern void test_shortpos(void);
171 Int3(); // Are you sure you want to do this?
172 // This will replace all textures in your replacement list
174 // If you don't want to do this, set eip to the return statement
177 mprintf((0, "Going to do texture replacements.\n"));
178 do_replacements_all();
183 FUNCTION med_functions[] = {
186 { "med-test-1", 0, Test1 },
187 { "med-test-2", 0, Test2 },
188 { "med-test-3", 0, Test3 },
191 { "med-help", 0, DoHelp },
194 { "med-curve-init", 0, InitCurve },
195 { "med-curve-generate", 0, GenerateCurve },
196 { "med-curve-decrease-r4", 0, DecreaseR4 },
197 { "med-curve-increase-r4", 0, IncreaseR4 },
198 { "med-curve-decrease-r1", 0, DecreaseR1 },
199 { "med-curve-increase-r1", 0, IncreaseR1 },
200 { "med-curve-delete", 0, DeleteCurve },
201 { "med-curve-set", 0, SetCurve },
204 { "med-mine-save", 0, SaveMine },
205 //{ "med-mine-load", 0, LoadMine },
206 { "med-mine-menu", 0, MineMenu },
207 { "med-mine-create-new", 0, CreateNewMine },
208 //{ "med-mine-load-old", 0, LoadOldMine },
209 { "med-situation-save", 0, SaveSituation },
210 { "med-situation-load", 0, LoadSituation },
211 { "med-restore-game-state", 0, RestoreGameState },
212 //{ "load-mine-only", 0, LoadMineOnly },
215 { "med-game-save", 0, SaveGameData },
216 { "med-game-load", 0, LoadGameData },
219 { "med-view-zoom-out", 0, ZoomOut },
220 { "med-view-zoom-in", 0, ZoomIn },
221 { "med-view-move-away", 0, MoveAway },
222 { "med-view-move-closer", 0, MoveCloser },
223 { "med-view-toggle-chase", 0, ToggleChaseMode },
226 { "med-build-bridge", 0, CreateBridge },
227 { "med-build-joint", 0, FormJoint },
228 { "med-build-adj-joint", 0, CreateAdjacentJoint },
229 { "med-build-sloppy-adj-joint", 0, CreateSloppyAdjacentJoint },
230 { "med-build-sloppy-adj-joint-group", 0, CreateSloppyAdjacentJointsGroup },
231 { "med-build-adj-joints-segment", 0, CreateAdjacentJointsSegment },
232 { "med-build-adj-joints-all", 0, CreateAdjacentJointsAll },
235 { "med-segment-bottom", 0, ToggleBottom }, //make_curside_bottom_side },
236 { "med-segment-show-bottom", 0, ToggleBottom },
239 { "med-segmove-decrease-heading", 0, DecreaseHeading },
240 { "med-segmove-increase-heading", 0, IncreaseHeading },
241 { "med-segmove-decrease-pitch", 0, DecreasePitch },
242 { "med-segmove-increase-pitch", 0, IncreasePitch },
243 { "med-segmove-decrease-bank", 0, DecreaseBank },
244 { "med-segmove-increase-bank", 0, IncreaseBank },
247 { "med-segsel-next-segment", 0, SelectCurrentSegForward },
248 { "med-segsel-prev-segment", 0, SelectCurrentSegBackward },
249 { "med-segsel-next-side", 0, SelectNextSide },
250 { "med-segsel-prev-side", 0, SelectPrevSide },
251 { "med-segsel-set-marked", 0, CopySegToMarked },
252 { "med-segsel-bottom", 0, SelectBottom },
253 { "med-segsel-front", 0, SelectFront },
254 { "med-segsel-top", 0, SelectTop },
255 { "med-segsel-back", 0, SelectBack },
256 { "med-segsel-left", 0, SelectLeft },
257 { "med-segsel-right", 0, SelectRight },
260 { "med-segsize-increase-length", 0, IncreaseSegLength },
261 { "med-segsize-decrease-length", 0, DecreaseSegLength },
262 { "med-segsize-decrease-width", 0, DecreaseSegWidth },
263 { "med-segsize-increase-width", 0, IncreaseSegWidth },
264 { "med-segsize-increase-height", 0, IncreaseSegHeight },
265 { "med-segsize-decrease-height", 0, DecreaseSegHeight },
267 { "med-segsize-increase-length-big", 0, IncreaseSegLengthBig },
268 { "med-segsize-decrease-length-big", 0, DecreaseSegLengthBig },
269 { "med-segsize-decrease-width-big", 0, DecreaseSegWidthBig },
270 { "med-segsize-increase-width-big", 0, IncreaseSegWidthBig },
271 { "med-segsize-increase-height-big", 0, IncreaseSegHeightBig },
272 { "med-segsize-decrease-height-big", 0, DecreaseSegHeightBig },
273 { "med-segsize-toggle-mode", 0, ToggleSegSizeMode },
274 { "med-segsize-perturb-curside", 0, PerturbCurside },
275 { "med-segsize-perturb-curside-big", 0, PerturbCursideBig },
276 { "med-segsize-increase-length-default", 0, IncreaseSegLengthDefault },
277 { "med-segsize-decrease-length-default", 0, DecreaseSegLengthDefault },
278 { "med-segsize-increase-width-default", 0, IncreaseSegWidthDefault },
279 { "med-segsize-decrease-width-default", 0, DecreaseSegWidthDefault },
280 { "med-segsize-increase-height-default", 0, IncreaseSegHeightDefault },
281 { "med-segsize-decrease-height-default", 0, DecreaseSegHeightDefault },
284 { "med-tmap-assign", 0, AssignTexture },
285 { "med-tmap-assign2", 0, AssignTexture2 },
286 { "med-tmap-clear2", 0, ClearTexture2 },
287 { "med-tmap-propogate", 0, PropagateTextures },
288 { "med-tmap-propogate-move", 0, PropagateTexturesMove },
289 { "med-tmap-propogate-move-uvs", 0, PropagateTexturesMoveUVs },
290 { "med-tmap-propogate-move-uvs", 0, PropagateTexturesMoveUVs },
291 { "med-tmap-propogate-uvs", 0, PropagateTexturesUVs },
292 { "med-tmap-propogate-selected", 0, PropagateTexturesSelected },
295 { "med-wall-add-blastable", 0, wall_add_blastable },
296 { "med-wall-add-door", 0, wall_add_door },
297 { "med-wall-add-closed", 0, wall_add_closed_wall },
298 { "med-wall-add-external", 0, wall_add_external_wall },
299 { "med-wall-add-illusion", 0, wall_add_illusion },
300 { "med-wall-restore-all", 0, wall_restore_all },
301 { "med-wall-remove", 0, wall_remove },
302 { "do-wall-dialog", 0, do_wall_dialog },
303 { "med-link-doors", 0, wall_link_doors },
304 { "med-unlink-door", 0, wall_unlink_door },
305 { "check-walls", 0, check_walls },
306 { "delete-all-walls", 0, delete_all_walls },
309 { "do-centers-dialog", 0, do_centers_dialog },
312 //{ "med-trigger-add-damage", 0, trigger_add_damage },
313 //{ "med-trigger-add-exit", 0, trigger_add_exit },
314 //{ "med-trigger-control", 0, trigger_control },
315 //{ "med-trigger-remove", 0, trigger_remove },
316 //{ "med-bind-wall-to-control", 0, bind_wall_to_control_trigger },
317 { "do-trigger-dialog", 0, do_trigger_dialog },
320 //--//{ "med-macro-menu", 0, MacroMenu },
321 //--//{ "med-macro-play-fast", 0, MacroPlayFast },
322 //--//{ "med-macro-play-normal", 0, MacroPlayNormal },
323 //--//{ "med-macro-record-all", 0, MacroRecordAll },
324 //--//{ "med-macro-record-keys", 0, MacroRecordKeys },
325 //--//{ "med-macro-save", 0, MacroSave },
326 //--//{ "med-macro-load", 0, MacroLoad },
329 { "med-update", 0, medlisp_update_screen },
330 { "med-segment-add", 0, AttachSegment },
331 { "med-segment-delete", 0, medlisp_delete_segment },
332 { "med-segment-scale", 3, medlisp_scale_segment },
333 { "med-segment-rotate", 3, medlisp_rotate_segment },
334 { "med-dos-shell", 0, DosShell },
335 //{ "med-lisp-call", 0, CallLisp },
336 { "med-editor-exit", 0, ExitEditor },
337 { "med-segment-exchange", 0, ExchangeMarkandCurseg },
338 { "med-segment-mark", 0, CopySegToMarked },
339 { "med-about", 0, ShowAbout },
340 { "med-mark-start", 0, MarkStart },
341 { "med-mark-end", 0, MarkEnd },
344 { "med-group-load", 0, LoadGroup },
345 { "med-group-save", 0, SaveGroup },
346 { "med-move-group", 0, MoveGroup },
347 { "med-copy-group", 0, CopyGroup },
348 { "med-rotate-group", 0, RotateGroup },
349 { "med-segment-add-new", 0, AttachSegmentNew },
350 { "med-mark-groupseg", 0, MarkGroupSegment },
351 { "med-next-group", 0, NextGroup },
352 { "med-prev-group", 0, PrevGroup },
353 { "med-delete-group", 0, DeleteGroup },
354 { "med-create-group", 0, CreateGroup },
355 { "med-ungroup-segment", 0, UngroupSegment },
356 { "med-group-segment", 0, GroupSegment },
357 { "med-degroup-group", 0, Degroup },
358 { "med-subtract-from-group", 0, SubtractFromGroup },
361 { "med-autosave-undo", 0, UndoCommand },
362 { "med-autosave-toggle", 0, ToggleAutosave },
365 { "med-tass-flip-x", 0, TexFlipX },
366 { "med-tass-flip-y", 0, TexFlipY },
367 { "med-tass-slide-up", 0, TexSlideUp },
368 { "med-tass-slide-left", 0, TexSlideLeft },
369 { "med-tass-set-default", 0, TexSetDefault },
370 { "med-tass-slide-right", 0, TexSlideRight },
371 { "med-tass-rotate-left", 0, TexRotateLeft },
372 { "med-tass-slide-down", 0, TexSlideDown },
373 { "med-tass-stretch-down", 0, TexStretchDown },
374 { "med-tass-stretch-up", 0, TexStretchUp },
375 { "med-tass-rotate-right", 0, TexRotateRight },
376 { "med-tass-select-active-edge", 0, TexSelectActiveEdge },
377 { "med-tass-rotate-90-degrees", 0, TexRotate90Degrees },
378 { "med-tass-increase-tiling", 0, TexIncreaseTiling },
379 { "med-tass-decrease-tiling", 0, TexDecreaseTiling },
380 { "med-tass-slide-up-big", 0, TexSlideUpBig },
381 { "med-tass-slide-left-big", 0, TexSlideLeftBig },
382 { "med-tass-slide-right-big", 0, TexSlideRightBig },
383 { "med-tass-rotate-left-big", 0, TexRotateLeftBig },
384 { "med-tass-slide-down-big", 0, TexSlideDownBig },
385 { "med-tass-rotate-right-big", 0, TexRotateRightBig },
388 { "med-obj-set-player", 0, SetPlayerPosition },
389 { "med-obj-place-object", 0, ObjectPlaceObject },
390 { "med-obj-place-object-tmap", 0, ObjectPlaceObjectTmap },
391 { "med-obj-move-nearer", 0, ObjectMoveNearer },
392 { "med-obj-move-further", 0, ObjectMoveFurther },
393 { "med-obj-delete-object", 0, ObjectDelete },
394 { "med-obj-move-forward", 0, ObjectMoveForward },
395 { "med-obj-move-left", 0, ObjectMoveLeft },
396 { "med-obj-set-default", 0, ObjectSetDefault },
397 { "med-obj-move-right", 0, ObjectMoveRight },
398 { "med-obj-move-back", 0, ObjectMoveBack },
399 { "med-obj-move-down", 0, ObjectMoveDown },
400 { "med-obj-move-up", 0, ObjectMoveUp },
401 { "med-obj-select-next-in-segment", 0, ObjectSelectNextinSegment },
402 { "med-obj-decrease-bank", 0, ObjectDecreaseBank },
403 { "med-obj-increase-bank", 0, ObjectIncreaseBank },
404 { "med-obj-decrease-pitch", 0, ObjectDecreasePitch },
405 { "med-obj-increase-pitch", 0, ObjectIncreasePitch },
406 { "med-obj-decrease-heading", 0, ObjectDecreaseHeading },
407 { "med-obj-increase-heading", 0, ObjectIncreaseHeading },
408 { "med-obj-decrease-bank-big", 0, ObjectDecreaseBankBig },
409 { "med-obj-increase-bank-big", 0, ObjectIncreaseBankBig },
410 { "med-obj-decrease-pitch-big", 0, ObjectDecreasePitchBig },
411 { "med-obj-increase-pitch-big", 0, ObjectIncreasePitchBig },
412 { "med-obj-decrease-heading-big", 0, ObjectDecreaseHeadingBig },
413 { "med-obj-increase-heading-big", 0, ObjectIncreaseHeadingBig },
414 { "med-obj-reset", 0, ObjectResetObject },
415 { "med-obj-flip", 0, ObjectFlipObject },
416 { "med-obj-make-coop", 0, ObjectMakeCoop },
417 //{ "med-obj-place-hostage", 0, ObjectPlaceHostage },
420 { "med-obj-select-next-type", 0, objpage_goto_next_object },
424 { "med-light-select-next-vertex", 0, LightSelectNextVertex },
425 { "med-light-select-next-edge", 0, LightSelectNextEdge },
426 { "med-light-copy-intensity-side", 0, LightCopyIntensity },
427 { "med-light-copy-intensity-segment", 0, LightCopyIntensitySegment },
428 { "med-light-decrease-light-vertex", 0, LightDecreaseLightVertex },
429 { "med-light-increase-light-vertex", 0, LightIncreaseLightVertex },
430 { "med-light-decrease-light-side", 0, LightDecreaseLightSide },
431 { "med-light-increase-light-side", 0, LightIncreaseLightSide },
432 { "med-light-decrease-light-segment", 0, LightDecreaseLightSegment },
433 { "med-light-increase-light-segment", 0, LightIncreaseLightSegment },
434 { "med-light-set-maximum", 0, LightSetMaximum },
435 { "med-light-set-default", 0, LightSetDefault },
436 { "med-light-assign-default-all", 0, LightSetDefaultAll },
437 { "med-light-ambient-lighting", 0, LightAmbientLighting },
440 { "med-seguvs-fix-bogus-uvs-on-side", 0, fix_bogus_uvs_on_side},
441 { "med-seguvs-fix-bogus-uvs-all", 0, fix_bogus_uvs_all},
442 { "med-seguvs-smooth-lighting-all", 0, set_average_light_on_all},
443 { "med-seguvs-smooth-lighting-all-quick", 0, set_average_light_on_all_quick},
444 { "med-seguvs-smooth-lighting", 0, set_average_light_on_curside},
446 // Miscellaneous, please neaten and catagorize me!
448 { "med-increase-draw-depth", 0, IncreaseDrawDepth },
449 { "med-decrease-draw-depth", 0, DecreaseDrawDepth },
450 { "med-goto-game", 0, GotoGame },
451 { "med-goto-game-screen", 0, GotoGameScreen },
452 { "med-drop-into-debugger", 0, DropIntoDebugger },
453 // { "med-sync-large-view", 0, SyncLargeView },
454 { "med-create-default-new-segment", 0, CreateDefaultNewSegment },
455 { "med-create-default-new-segment-and-attach", 0, CreateDefaultNewSegmentandAttach },
456 { "med-clear-selected-list", 0, ClearSelectedList },
457 { "med-clear-found-list", 0, ClearFoundList },
458 { "med-sort-selected-list", 0, SortSelectedList },
459 { "med-set-player-from-curseg", 0, SetPlayerFromCursegAndRotate },
460 { "med-set-player-from-curseg-minus-one", 0, SetPlayerFromCursegMinusOne },
461 { "med-find-concave-segs", 0, FindConcaveSegs },
462 { "med-select-next-found-seg", 0, SelectNextFoundSeg },
463 { "med-select-prev-found-seg", 0, SelectPreviousFoundSeg },
464 { "med-stop-slew", 0, slew_stop },
465 //{ "med-reset-orientation", 0, do_reset_orient },
466 { "med-game-zoom-out", 0, GameZoomOut },
467 { "med-game-zoom-in", 0, GameZoomIn },
468 { "med-keypad-goto-prev", 0, med_keypad_goto_prev },
469 { "med-keypad-goto-next", 0, med_keypad_goto_next },
470 { "med-keypad-goto", 1, med_keypad_goto },
472 // John's temporary function page stuff
473 // { "med-set-function-page", 1, medtmp_set_page },
476 { "med-fuelcen-create", 0, fuelcen_create_from_curseg },
477 { "med-repaircen-create", 0, repaircen_create_from_curseg },
478 { "med-controlcen-create", 0, controlcen_create_from_curseg },
479 { "med-robotmaker-create", 0, robotmaker_create_from_curseg },
480 { "med-fuelcen-reset-all", 0, fuelcen_reset_all },
481 { "med-fuelcen-delete", 0, fuelcen_delete_from_curseg },
484 { "do-robot-dialog", 0, do_robot_dialog },
485 { "do-object-dialog", 0, do_object_dialog },
486 { "do-hostage-dialog", 0, do_hostage_dialog },
489 { "rename-level", 0, get_level_name },
491 // The terminating marker
494 void init_med_functions()
496 func_init(med_functions, (sizeof(med_functions)/sizeof(FUNCTION))-1 );