|
@@ -154,614 +154,6 @@ int OpenRaider::command(const char *command) {
|
154
|
154
|
return returnValue;
|
155
|
155
|
}
|
156
|
156
|
|
157
|
|
-int OpenRaider::command(const char *command, std::vector<char *> *args) {
|
158
|
|
- assert(command != NULL);
|
159
|
|
- assert(command[0] != '\0');
|
160
|
|
- assert(args != NULL);
|
161
|
|
-
|
162
|
|
- if (strcmp(command, "set") == 0) {
|
163
|
|
- if (args->size() != 2) {
|
164
|
|
- getConsole().print("Invalid use of set-command");
|
165
|
|
- return -1;
|
166
|
|
- } else {
|
167
|
|
- return set(args->at(0), args->at(1));
|
168
|
|
- }
|
169
|
|
- } else if (strcmp(command, "bind") == 0) {
|
170
|
|
- if (args->size() != 2) {
|
171
|
|
- getConsole().print("Invalid use of bind-command");
|
172
|
|
- return -2;
|
173
|
|
- } else {
|
174
|
|
- return bind(args->at(0), args->at(1));
|
175
|
|
- }
|
176
|
|
- } else if (strcmp(command, "quit") == 0) {
|
177
|
|
- exit(0);
|
178
|
|
- } else if (strcmp(command, "load") == 0) {
|
179
|
|
- if (!mRunning) {
|
180
|
|
- getConsole().print("Use load command interactively!");
|
181
|
|
- return -999;
|
182
|
|
- }
|
183
|
|
- char *tmp = bufferString("%s/%s", mPakDir, args->at(0));
|
184
|
|
- int error = getGame().loadLevel(tmp);
|
185
|
|
- delete [] tmp;
|
186
|
|
- return error;
|
187
|
|
- } else if (strcmp(command, "sshot") == 0) {
|
188
|
|
- if (!mRunning) {
|
189
|
|
- getConsole().print("Use sshot command interactively!");
|
190
|
|
- return -999;
|
191
|
|
- }
|
192
|
|
- char *filename = bufferString("%s/sshots/%s", mBaseDir, VERSION);
|
193
|
|
- bool console = (args->size() > 0) && (strcmp(args->at(0), "console") == 0);
|
194
|
|
- bool menu = (args->size() > 0) && (strcmp(args->at(0), "menu") == 0);
|
195
|
|
- if (!console) {
|
196
|
|
- getConsole().setVisible(false);
|
197
|
|
- if (menu)
|
198
|
|
- getMenu().setVisible(true);
|
199
|
|
- frame();
|
200
|
|
- frame(); // Double buffered
|
201
|
|
- }
|
202
|
|
- getRender().screenShot(filename);
|
203
|
|
- if (!console) {
|
204
|
|
- getConsole().setVisible(true);
|
205
|
|
- if (menu)
|
206
|
|
- getMenu().setVisible(false);
|
207
|
|
- }
|
208
|
|
- getConsole().print("Screenshot stored...");
|
209
|
|
- delete filename;
|
210
|
|
- } else if (strcmp(command, "mode") == 0) {
|
211
|
|
- if (args->size() > 0) {
|
212
|
|
- char *mode = args->at(0);
|
213
|
|
- if (strcmp(mode, "wireframe") == 0) {
|
214
|
|
- if (getGame().isLoaded()) {
|
215
|
|
- getRender().setMode(Render::modeWireframe);
|
216
|
|
- getConsole().print("Wireframe mode");
|
217
|
|
- } else {
|
218
|
|
- getConsole().print("Load a level to set this mode!");
|
219
|
|
- return -3;
|
220
|
|
- }
|
221
|
|
- } else if (strcmp(mode, "solid") == 0) {
|
222
|
|
- if (getGame().isLoaded()) {
|
223
|
|
- getRender().setMode(Render::modeSolid);
|
224
|
|
- getConsole().print("Solid mode");
|
225
|
|
- } else {
|
226
|
|
- getConsole().print("Load a level to set this mode!");
|
227
|
|
- return -4;
|
228
|
|
- }
|
229
|
|
- } else if (strcmp(mode, "texture") == 0) {
|
230
|
|
- if (getGame().isLoaded()) {
|
231
|
|
- getRender().setMode(Render::modeTexture);
|
232
|
|
- getConsole().print("Texture mode");
|
233
|
|
- } else {
|
234
|
|
- getConsole().print("Load a level to set this mode!");
|
235
|
|
- return -5;
|
236
|
|
- }
|
237
|
|
- } else if (strcmp(mode, "vertexlight") == 0) {
|
238
|
|
- if (getGame().isLoaded()) {
|
239
|
|
- getRender().setMode(Render::modeVertexLight);
|
240
|
|
- getConsole().print("Vertexlight mode");
|
241
|
|
- } else {
|
242
|
|
- getConsole().print("Load a level to set this mode!");
|
243
|
|
- return -6;
|
244
|
|
- }
|
245
|
|
- } else if (strcmp(mode, "titlescreen") == 0) {
|
246
|
|
- getRender().setMode(Render::modeLoadScreen);
|
247
|
|
- getConsole().print("Titlescreen mode");
|
248
|
|
- } else {
|
249
|
|
- getConsole().print("Invalid use of mode command (%s)!", mode);
|
250
|
|
- return -7;
|
251
|
|
- }
|
252
|
|
- } else {
|
253
|
|
- getConsole().print("Invalid use of mode command!");
|
254
|
|
- return -8;
|
255
|
|
- }
|
256
|
|
- } else if (strcmp(command, "move") == 0) {
|
257
|
|
- if (!mRunning) {
|
258
|
|
- getConsole().print("Use move command interactively!");
|
259
|
|
- return -999;
|
260
|
|
- }
|
261
|
|
- if (args->size() > 0) {
|
262
|
|
- if (getGame().isLoaded()) {
|
263
|
|
- char *move = args->at(0);
|
264
|
|
- if (strcmp(move, "walk") == 0) {
|
265
|
|
- getGame().mLara->moveType = worldMoveType_walk;
|
266
|
|
- getConsole().print("Lara is walking...");
|
267
|
|
- } else if (strcmp(move, "fly") == 0) {
|
268
|
|
- getGame().mLara->moveType = worldMoveType_fly;
|
269
|
|
- getConsole().print("Lara is flying...");
|
270
|
|
- } else if (strcmp(move, "noclip") == 0) {
|
271
|
|
- getGame().mLara->moveType = worldMoveType_noClipping;
|
272
|
|
- getConsole().print("Lara is noclipping...");
|
273
|
|
- } else {
|
274
|
|
- getConsole().print("Invalid use of move command (%s)!", move);
|
275
|
|
- return -9;
|
276
|
|
- }
|
277
|
|
- } else {
|
278
|
|
- getConsole().print("Load a level to change the movement type!");
|
279
|
|
- return -10;
|
280
|
|
- }
|
281
|
|
- } else {
|
282
|
|
- getConsole().print("Invalid use of move command!");
|
283
|
|
- return -11;
|
284
|
|
- }
|
285
|
|
- } else if (strcmp(command, "sound") == 0) {
|
286
|
|
- if ((!mRunning) || (!getGame().isLoaded())) {
|
287
|
|
- getConsole().print("Use sound command interactively!");
|
288
|
|
- return -999;
|
289
|
|
- }
|
290
|
|
- if (args->size() > 0) {
|
291
|
|
- getSound().play(atoi(args->at(0)));
|
292
|
|
- } else {
|
293
|
|
- getConsole().print("Invalid use of sound command!");
|
294
|
|
- return -12;
|
295
|
|
- }
|
296
|
|
- } else if (strcmp(command, "animate") == 0) {
|
297
|
|
- if ((!mRunning) || (!getGame().isLoaded())) {
|
298
|
|
- getConsole().print("Use animate command interactively!");
|
299
|
|
- return -999;
|
300
|
|
- }
|
301
|
|
- if (args->size() > 0) {
|
302
|
|
- char c = args->at(0)[0];
|
303
|
|
- if (c == 'n') {
|
304
|
|
- // Step all skeletal models to their next animation
|
305
|
|
- if (getRender().getFlags() & Render::fAnimateAllModels) {
|
306
|
|
- for (unsigned int i = 0; i < getRender().mModels.size(); i++) {
|
307
|
|
- SkeletalModel *m = getRender().mModels[i];
|
308
|
|
- if (m->getAnimation() < ((int)m->model->animation.size() - 1))
|
309
|
|
- m->setAnimation(m->getAnimation() + 1);
|
310
|
|
- else
|
311
|
|
- if (m->getAnimation() != 0)
|
312
|
|
- m->setAnimation(0);
|
313
|
|
- }
|
314
|
|
- } else {
|
315
|
|
- getConsole().print("Animations need to be enabled!");
|
316
|
|
- }
|
317
|
|
- } else if (c == 'p') {
|
318
|
|
- // Step all skeletal models to their previous animation
|
319
|
|
- if (getRender().getFlags() & Render::fAnimateAllModels) {
|
320
|
|
- for (unsigned int i = 0; i < getRender().mModels.size(); i++) {
|
321
|
|
- SkeletalModel *m = getRender().mModels[i];
|
322
|
|
- if (m->getAnimation() > 0)
|
323
|
|
- m->setAnimation(m->getAnimation() - 1);
|
324
|
|
- else
|
325
|
|
- if (m->model->animation.size() > 0)
|
326
|
|
- m->setAnimation(m->model->animation.size() - 1);
|
327
|
|
- }
|
328
|
|
- } else {
|
329
|
|
- getConsole().print("Animations need to be enabled!");
|
330
|
|
- }
|
331
|
|
- } else {
|
332
|
|
- // Enable or disable animating all skeletal models
|
333
|
|
- bool b;
|
334
|
|
- if (readBool(args->at(0), &b) < 0) {
|
335
|
|
- getConsole().print("Pass BOOL to animate command!");
|
336
|
|
- return -13;
|
337
|
|
- }
|
338
|
|
- if (b)
|
339
|
|
- getRender().setFlags(Render::fAnimateAllModels);
|
340
|
|
- else
|
341
|
|
- getRender().clearFlags(Render::fAnimateAllModels);
|
342
|
|
- getConsole().print(b ? "Animating all models" : "No longer animating all models");
|
343
|
|
- }
|
344
|
|
- } else {
|
345
|
|
- getConsole().print("Invalid use of animate command!");
|
346
|
|
- return -14;
|
347
|
|
- }
|
348
|
|
-
|
349
|
|
- } else if (strcmp(command, "light") == 0) {
|
350
|
|
- if (args->size() > 0) {
|
351
|
|
- bool b;
|
352
|
|
- if (readBool(args->at(0), &b) < 0) {
|
353
|
|
- getConsole().print("Pass BOOL to light command!");
|
354
|
|
- return -15;
|
355
|
|
- }
|
356
|
|
- if (b)
|
357
|
|
- getRender().setFlags(Render::fGL_Lights);
|
358
|
|
- else
|
359
|
|
- getRender().clearFlags(Render::fGL_Lights);
|
360
|
|
- getConsole().print("GL-Lights are now %s", b ? "on" : "off");
|
361
|
|
- } else {
|
362
|
|
- getConsole().print("Invalid use of light-command!");
|
363
|
|
- return -16;
|
364
|
|
- }
|
365
|
|
- } else if (strcmp(command, "fog") == 0) {
|
366
|
|
- if (args->size() > 0) {
|
367
|
|
- bool b;
|
368
|
|
- if (readBool(args->at(0), &b) < 0) {
|
369
|
|
- getConsole().print("Pass BOOL to fog command!");
|
370
|
|
- return -17;
|
371
|
|
- }
|
372
|
|
- if (b)
|
373
|
|
- getRender().setFlags(Render::fFog);
|
374
|
|
- else
|
375
|
|
- getRender().clearFlags(Render::fFog);
|
376
|
|
- getConsole().print("Fog is now %s", b ? "on" : "off");
|
377
|
|
- } else {
|
378
|
|
- getConsole().print("Invalid use of fog-command!");
|
379
|
|
- return -18;
|
380
|
|
- }
|
381
|
|
- } else if (strcmp(command, "hop") == 0) {
|
382
|
|
- if (args->size() > 0) {
|
383
|
|
- bool b;
|
384
|
|
- if (readBool(args->at(0), &b) < 0) {
|
385
|
|
- getConsole().print("Pass BOOL to hop command!");
|
386
|
|
- return -19;
|
387
|
|
- }
|
388
|
|
- if (b)
|
389
|
|
- getWorld().setFlag(World::fEnableHopping);
|
390
|
|
- else
|
391
|
|
- getWorld().clearFlag(World::fEnableHopping);
|
392
|
|
- getConsole().print("Room hopping is now %s", b ? "on" : "off");
|
393
|
|
- } else {
|
394
|
|
- getConsole().print("Invalid use of hop-command!");
|
395
|
|
- return -20;
|
396
|
|
- }
|
397
|
|
- } else if (strcmp(command, "viewmodel") == 0) {
|
398
|
|
- if ((!mRunning) || (!getGame().isLoaded())) {
|
399
|
|
- getConsole().print("Use viewmodel command interactively!");
|
400
|
|
- return -999;
|
401
|
|
- }
|
402
|
|
- if (getGame().mLara) {
|
403
|
|
- SkeletalModel *smdl = static_cast<SkeletalModel *>(getGame().mLara->tmpHook);
|
404
|
|
- skeletal_model_t *mdl = getWorld().getModel(atoi(args->at(0)));
|
405
|
|
- if (smdl)
|
406
|
|
- smdl->setModel(mdl);
|
407
|
|
- }
|
408
|
|
- //m_render.ViewModel(LARA, atoi(cmd));
|
409
|
|
- } else if (strcmp(command, "pos") == 0) {
|
410
|
|
- if (getGame().mLara) {
|
411
|
|
- getConsole().print("Position:");
|
412
|
|
- getConsole().print(" Room %i (0x%X)", getGame().mLara->room, getWorld().getRoomInfo(getGame().mLara->room));
|
413
|
|
- getConsole().print(" %.1fx %.1fy %.1fz", getGame().mLara->pos[0], getGame().mLara->pos[1], getGame().mLara->pos[2]);
|
414
|
|
- getConsole().print(" %.1f Yaw %.1f Pitch", OR_RAD_TO_DEG(getGame().mLara->angles[1]), OR_RAD_TO_DEG(getGame().mLara->angles[2]));
|
415
|
|
- } else {
|
416
|
|
- getConsole().print("Load a level to get Laras position!");
|
417
|
|
- return -21;
|
418
|
|
- }
|
419
|
|
- } else if (strcmp(command, "vmodel") == 0) {
|
420
|
|
- if (args->size() > 0) {
|
421
|
|
- bool b;
|
422
|
|
- if (readBool(args->at(0), &b) < 0) {
|
423
|
|
- getConsole().print("Pass BOOL to vmodel command!");
|
424
|
|
- return -22;
|
425
|
|
- }
|
426
|
|
- if (b)
|
427
|
|
- getRender().setFlags(Render::fViewModel);
|
428
|
|
- else
|
429
|
|
- getRender().clearFlags(Render::fViewModel);
|
430
|
|
- getConsole().print("Viewmodel is now %s", b ? "on" : "off");
|
431
|
|
- } else {
|
432
|
|
- getConsole().print("Invalid use of vmodel-command!");
|
433
|
|
- return -23;
|
434
|
|
- }
|
435
|
|
- } else if (strcmp(command, "ralpha") == 0) {
|
436
|
|
- if (args->size() > 0) {
|
437
|
|
- bool b;
|
438
|
|
- if (readBool(args->at(0), &b) < 0) {
|
439
|
|
- getConsole().print("Pass BOOL to ralpha command!");
|
440
|
|
- return -24;
|
441
|
|
- }
|
442
|
|
- if (b)
|
443
|
|
- getRender().setFlags(Render::fRoomAlpha);
|
444
|
|
- else
|
445
|
|
- getRender().clearFlags(Render::fRoomAlpha);
|
446
|
|
- getConsole().print("Room Alpha is now %s", b ? "on" : "off");
|
447
|
|
- } else {
|
448
|
|
- getConsole().print("Invalid use of ralpha-command!");
|
449
|
|
- return -25;
|
450
|
|
- }
|
451
|
|
- } else if (strcmp(command, "portal") == 0) {
|
452
|
|
- if (args->size() > 0) {
|
453
|
|
- bool b;
|
454
|
|
- if (readBool(args->at(0), &b) < 0) {
|
455
|
|
- getConsole().print("Pass BOOL to portal command!");
|
456
|
|
- return -26;
|
457
|
|
- }
|
458
|
|
- if (b)
|
459
|
|
- getRender().setFlags(Render::fPortals);
|
460
|
|
- else
|
461
|
|
- getRender().clearFlags(Render::fPortals);
|
462
|
|
- getConsole().print("Portals are now %s", b ? "on" : "off");
|
463
|
|
- } else {
|
464
|
|
- getConsole().print("Invalid use of portal-command!");
|
465
|
|
- return -27;
|
466
|
|
- }
|
467
|
|
- } else if (strcmp(command, "vis") == 0) {
|
468
|
|
- if (args->size() > 0) {
|
469
|
|
- bool b;
|
470
|
|
- if (readBool(args->at(0), &b) < 0) {
|
471
|
|
- getConsole().print("Pass BOOL to vis command!");
|
472
|
|
- return -28;
|
473
|
|
- }
|
474
|
|
- if (b)
|
475
|
|
- getRender().setFlags(Render::fUsePortals);
|
476
|
|
- else
|
477
|
|
- getRender().clearFlags(Render::fUsePortals);
|
478
|
|
- getConsole().print("Portals are now %s", b ? "on" : "off");
|
479
|
|
- } else {
|
480
|
|
- getConsole().print("Invalid use of vis-command!");
|
481
|
|
- return -29;
|
482
|
|
- }
|
483
|
|
- } else if (strcmp(command, "upf") == 0) {
|
484
|
|
- if (args->size() > 0) {
|
485
|
|
- bool b;
|
486
|
|
- if (readBool(args->at(0), &b) < 0) {
|
487
|
|
- getConsole().print("Pass BOOL to upf command!");
|
488
|
|
- return -30;
|
489
|
|
- }
|
490
|
|
- if (b)
|
491
|
|
- getRender().setFlags(Render::fUpdateRoomListPerFrame);
|
492
|
|
- else
|
493
|
|
- getRender().clearFlags(Render::fUpdateRoomListPerFrame);
|
494
|
|
- getConsole().print("URLPF is now %s", b ? "on" : "off");
|
495
|
|
- } else {
|
496
|
|
- getConsole().print("Invalid use of upf-command!");
|
497
|
|
- return -31;
|
498
|
|
- }
|
499
|
|
- } else if (strcmp(command, "sprite") == 0) {
|
500
|
|
- if (args->size() > 0) {
|
501
|
|
- bool b;
|
502
|
|
- if (readBool(args->at(0), &b) < 0) {
|
503
|
|
- getConsole().print("Pass BOOL to sprite command!");
|
504
|
|
- return -34;
|
505
|
|
- }
|
506
|
|
- if (b)
|
507
|
|
- getRender().setFlags(Render::fSprites);
|
508
|
|
- else
|
509
|
|
- getRender().clearFlags(Render::fSprites);
|
510
|
|
- getConsole().print("Sprites are now %s", b ? "on" : "off");
|
511
|
|
- } else {
|
512
|
|
- getConsole().print("Invalid use of sprite-command!");
|
513
|
|
- return -35;
|
514
|
|
- }
|
515
|
|
- } else if (strcmp(command, "roommodel") == 0) {
|
516
|
|
- if (args->size() > 0) {
|
517
|
|
- bool b;
|
518
|
|
- if (readBool(args->at(0), &b) < 0) {
|
519
|
|
- getConsole().print("Pass BOOL to roommodel command!");
|
520
|
|
- return -36;
|
521
|
|
- }
|
522
|
|
- if (b)
|
523
|
|
- getRender().setFlags(Render::fRoomModels);
|
524
|
|
- else
|
525
|
|
- getRender().clearFlags(Render::fRoomModels);
|
526
|
|
- getConsole().print("Roommodels are now %s", b ? "on" : "off");
|
527
|
|
- } else {
|
528
|
|
- getConsole().print("Invalid use of roommodel-command!");
|
529
|
|
- return -37;
|
530
|
|
- }
|
531
|
|
- } else if (strcmp(command, "entmodel") == 0) {
|
532
|
|
- if (args->size() > 0) {
|
533
|
|
- bool b;
|
534
|
|
- if (readBool(args->at(0), &b) < 0) {
|
535
|
|
- getConsole().print("Pass BOOL to entmodel command!");
|
536
|
|
- return -38;
|
537
|
|
- }
|
538
|
|
- if (b)
|
539
|
|
- getRender().setFlags(Render::fEntityModels);
|
540
|
|
- else
|
541
|
|
- getRender().clearFlags(Render::fEntityModels);
|
542
|
|
- getConsole().print("Entmodels are now %s", b ? "on" : "off");
|
543
|
|
- } else {
|
544
|
|
- getConsole().print("Invalid use of entmodel-command!");
|
545
|
|
- return -39;
|
546
|
|
- }
|
547
|
|
- } else if (strcmp(command, "oneroom") == 0) {
|
548
|
|
- if (args->size() > 0) {
|
549
|
|
- bool b;
|
550
|
|
- if (readBool(args->at(0), &b) < 0) {
|
551
|
|
- getConsole().print("Pass BOOL to oneroom command!");
|
552
|
|
- return -40;
|
553
|
|
- }
|
554
|
|
- if (b)
|
555
|
|
- getRender().setFlags(Render::fOneRoom);
|
556
|
|
- else
|
557
|
|
- getRender().clearFlags(Render::fOneRoom);
|
558
|
|
- getConsole().print("Rendering one room is now %s", b ? "on" : "off");
|
559
|
|
- } else {
|
560
|
|
- getConsole().print("Invalid use of oneroom-command!");
|
561
|
|
- return -41;
|
562
|
|
- }
|
563
|
|
- } else if (strcmp(command, "allrooms") == 0) {
|
564
|
|
- if (args->size() > 0) {
|
565
|
|
- bool b;
|
566
|
|
- if (readBool(args->at(0), &b) < 0) {
|
567
|
|
- getConsole().print("Pass BOOL to allrooms command!");
|
568
|
|
- return -42;
|
569
|
|
- }
|
570
|
|
- if (b)
|
571
|
|
- getRender().setFlags(Render::fAllRooms);
|
572
|
|
- else
|
573
|
|
- getRender().clearFlags(Render::fAllRooms);
|
574
|
|
- getConsole().print("Rendering all rooms is now %s", b ? "on" : "off");
|
575
|
|
- } else {
|
576
|
|
- getConsole().print("Invalid use of allrooms-command!");
|
577
|
|
- return -43;
|
578
|
|
- }
|
579
|
|
- } else if (strcmp(command, "ponytail") == 0) {
|
580
|
|
- if (args->size() > 0) {
|
581
|
|
- bool b;
|
582
|
|
- if (readBool(args->at(0), &b) < 0) {
|
583
|
|
- getConsole().print("Pass BOOL to ponytail command!");
|
584
|
|
- return -44;
|
585
|
|
- }
|
586
|
|
- if (b)
|
587
|
|
- getRender().setFlags(Render::fRenderPonytail);
|
588
|
|
- else
|
589
|
|
- getRender().clearFlags(Render::fRenderPonytail);
|
590
|
|
- getConsole().print("Ponytail is now %s", b ? "on" : "off");
|
591
|
|
- } else {
|
592
|
|
- getConsole().print("Invalid use of ponytail-command!");
|
593
|
|
- return -45;
|
594
|
|
- }
|
595
|
|
- } else if (strcmp(command, "pigtail") == 0) {
|
596
|
|
- if ((!mRunning) || (!getGame().isLoaded())) {
|
597
|
|
- getConsole().print("Use pigtail command interactively!");
|
598
|
|
- return -999;
|
599
|
|
- }
|
600
|
|
- if (args->size() > 0) {
|
601
|
|
- bool b;
|
602
|
|
- if (readBool(args->at(0), &b) < 0) {
|
603
|
|
- getConsole().print("Pass BOOL to pigtail command!");
|
604
|
|
- return -46;
|
605
|
|
- }
|
606
|
|
- SkeletalModel *tmp = static_cast<SkeletalModel *>(getGame().mLara->tmpHook);
|
607
|
|
- tmp->model->pigtails = b;
|
608
|
|
- if (b) {
|
609
|
|
- tmp->model->ponyOff -= 20;
|
610
|
|
- tmp->model->ponytail[1] -= 32;
|
611
|
|
- } else {
|
612
|
|
- tmp->model->ponyOff += 20;
|
613
|
|
- tmp->model->ponytail[1] += 32;
|
614
|
|
- }
|
615
|
|
- getConsole().print("Pigtail is now %s", b ? "on" : "off");
|
616
|
|
- } else {
|
617
|
|
- getConsole().print("Invalid use of pigtail-command!");
|
618
|
|
- return -47;
|
619
|
|
- }
|
620
|
|
- } else if (strcmp(command, "ponypos") == 0) {
|
621
|
|
- if ((!mRunning) || (!getGame().isLoaded())) {
|
622
|
|
- getConsole().print("Use ponypos command interactively!");
|
623
|
|
- return -999;
|
624
|
|
- }
|
625
|
|
- if (args->size() > 3) {
|
626
|
|
- SkeletalModel *tmp = static_cast<SkeletalModel *>(getGame().mLara->tmpHook);
|
627
|
|
- tmp->model->ponytail[0] = (float)atof(args->at(0));
|
628
|
|
- tmp->model->ponytail[1] = (float)atof(args->at(1));
|
629
|
|
- tmp->model->ponytail[2] = (float)atof(args->at(2));
|
630
|
|
- tmp->model->ponytailAngle = (float)atof(args->at(3));
|
631
|
|
- } else {
|
632
|
|
- getConsole().print("Invalid use of ponypos-command!");
|
633
|
|
- return -48;
|
634
|
|
- }
|
635
|
|
- } else if (strcmp(command, "help") == 0) {
|
636
|
|
- if (args->size() == 0) {
|
637
|
|
- getConsole().print("Available commands:");
|
638
|
|
- getConsole().print(" load - load a level");
|
639
|
|
- getConsole().print(" set - set a parameter");
|
640
|
|
- getConsole().print(" bind - bind a keyboard/mouse action");
|
641
|
|
- getConsole().print(" sshot - make a screenshot");
|
642
|
|
- getConsole().print(" move - [walk|fly|noclip]");
|
643
|
|
- getConsole().print(" sound - INT - Test play sound");
|
644
|
|
- getConsole().print(" mode - MODE - Render mode");
|
645
|
|
- getConsole().print(" animate - [BOOL|n|p] - Animate models");
|
646
|
|
- getConsole().print(" light - BOOL - GL Lights");
|
647
|
|
- getConsole().print(" fog - BOOL - GL Fog");
|
648
|
|
- getConsole().print(" hop - BOOL - Room hop");
|
649
|
|
- getConsole().print(" viewmodel - INT - Change Laras model");
|
650
|
|
- getConsole().print(" pos - Print position info");
|
651
|
|
- getConsole().print(" vmodel - BOOL - View Model");
|
652
|
|
- getConsole().print(" ralpha - BOOL - Room Alpha");
|
653
|
|
- getConsole().print(" portal - BOOL");
|
654
|
|
- getConsole().print(" vis - BOOL - Use Portals");
|
655
|
|
- getConsole().print(" upf - BOOL - Update Room List Per Frame");
|
656
|
|
- getConsole().print(" sprite - BOOL");
|
657
|
|
- getConsole().print(" roommodel - BOOL");
|
658
|
|
- getConsole().print(" entmodel - BOOL");
|
659
|
|
- getConsole().print(" oneroom - BOOL");
|
660
|
|
- getConsole().print(" allrooms - BOOL");
|
661
|
|
- getConsole().print(" ponytail - BOOL");
|
662
|
|
- getConsole().print(" pigtail - BOOL");
|
663
|
|
- getConsole().print(" ponypos - FLOAT FLOAT FLOAT FLOAT - x y z angle");
|
664
|
|
- getConsole().print(" help - print command help");
|
665
|
|
- getConsole().print(" quit - exit OpenRaider");
|
666
|
|
- getConsole().print("Use help COMMAND to get additional info");
|
667
|
|
- } else if (args->size() == 1) {
|
668
|
|
- return help(args->at(0));
|
669
|
|
- } else {
|
670
|
|
- getConsole().print("Invalid use of help-command");
|
671
|
|
- return -49;
|
672
|
|
- }
|
673
|
|
- } else {
|
674
|
|
- getConsole().print("Unknown command: %s ", command);
|
675
|
|
- return -50;
|
676
|
|
- }
|
677
|
|
-
|
678
|
|
- return 0;
|
679
|
|
-}
|
680
|
|
-
|
681
|
|
-int OpenRaider::help(const char *cmd) {
|
682
|
|
- assert(cmd != NULL);
|
683
|
|
- assert(cmd[0] != '\0');
|
684
|
|
-
|
685
|
|
- if (strcmp(cmd, "set") == 0) {
|
686
|
|
- getConsole().print("set-Command Usage:");
|
687
|
|
- getConsole().print(" set VAR VAL");
|
688
|
|
- getConsole().print("Available Variables:");
|
689
|
|
- getConsole().print(" basedir STRING");
|
690
|
|
- getConsole().print(" pakdir STRING");
|
691
|
|
- getConsole().print(" audiodir STRING");
|
692
|
|
- getConsole().print(" datadir STRING");
|
693
|
|
- getConsole().print(" font STRING");
|
694
|
|
- getConsole().print(" gldriver STRING");
|
695
|
|
- getConsole().print(" size \"INTxINT\"");
|
696
|
|
- getConsole().print(" fullscreen BOOL");
|
697
|
|
- getConsole().print(" audio BOOL");
|
698
|
|
- getConsole().print(" volume BOOL");
|
699
|
|
- getConsole().print(" mouse_x FLOAT");
|
700
|
|
- getConsole().print(" mouse_y FLOAT");
|
701
|
|
- getConsole().print(" fps BOOL");
|
702
|
|
- getConsole().print("Enclose STRINGs with \"\"!");
|
703
|
|
- getConsole().print("size expects a STRING in the specified format");
|
704
|
|
- } else if (strcmp(cmd, "bind") == 0) {
|
705
|
|
- getConsole().print("bind-Command Usage:");
|
706
|
|
- getConsole().print(" bind ACTION KEY");
|
707
|
|
- getConsole().print("Available Actions:");
|
708
|
|
- getConsole().print(" menu");
|
709
|
|
- getConsole().print(" console");
|
710
|
|
- getConsole().print(" forward");
|
711
|
|
- getConsole().print(" backward");
|
712
|
|
- getConsole().print(" left");
|
713
|
|
- getConsole().print(" right");
|
714
|
|
- getConsole().print(" jump");
|
715
|
|
- getConsole().print(" crouch");
|
716
|
|
- getConsole().print(" use");
|
717
|
|
- getConsole().print(" holster");
|
718
|
|
- getConsole().print("Key-Format:");
|
719
|
|
- getConsole().print(" 'a' or '1' for character/number keys");
|
720
|
|
- getConsole().print(" \"leftctrl\" for symbols and special keys");
|
721
|
|
- } else if (strcmp(cmd, "load") == 0) {
|
722
|
|
- getConsole().print("load-Command Usage:");
|
723
|
|
- getConsole().print(" load levelfile.name");
|
724
|
|
- } else if (strcmp(cmd, "game") == 0) {
|
725
|
|
- getConsole().print("Use \"game help\" for more info");
|
726
|
|
- } else if (strcmp(cmd, "sshot") == 0) {
|
727
|
|
- getConsole().print("sshot-Command Usage:");
|
728
|
|
- getConsole().print(" sshot [console|menu]");
|
729
|
|
- getConsole().print("Add console/menu to capture them too");
|
730
|
|
- } else if (strcmp(cmd, "sound") == 0) {
|
731
|
|
- getConsole().print("sound-Command Usage:");
|
732
|
|
- getConsole().print(" sound INT");
|
733
|
|
- getConsole().print("Where INT is a valid sound ID integer");
|
734
|
|
- } else if (strcmp(cmd, "move") == 0) {
|
735
|
|
- getConsole().print("move-Command Usage:");
|
736
|
|
- getConsole().print(" move COMMAND");
|
737
|
|
- getConsole().print("Where COMMAND is one of the following:");
|
738
|
|
- getConsole().print(" walk");
|
739
|
|
- getConsole().print(" fly");
|
740
|
|
- getConsole().print(" noclip");
|
741
|
|
- } else if (strcmp(cmd, "mode") == 0) {
|
742
|
|
- getConsole().print("mode-Command Usage:");
|
743
|
|
- getConsole().print(" mode MODE");
|
744
|
|
- getConsole().print("Where MODE is one of the following:");
|
745
|
|
- getConsole().print(" wireframe");
|
746
|
|
- getConsole().print(" solid");
|
747
|
|
- getConsole().print(" texture");
|
748
|
|
- getConsole().print(" vertexlight");
|
749
|
|
- getConsole().print(" titlescreen");
|
750
|
|
- } else if (strcmp(cmd, "animate") == 0) {
|
751
|
|
- getConsole().print("animate-Command Usage:");
|
752
|
|
- getConsole().print(" animate [n|p|BOOL]");
|
753
|
|
- getConsole().print("Where the commands have the following meaning:");
|
754
|
|
- getConsole().print(" BOOL to (de)activate animating all models");
|
755
|
|
- getConsole().print(" n to step all models to their next animation");
|
756
|
|
- getConsole().print(" p to step all models to their previous animation");
|
757
|
|
- } else {
|
758
|
|
- getConsole().print("No help available for %s", cmd);
|
759
|
|
- return -1;
|
760
|
|
- }
|
761
|
|
-
|
762
|
|
- return 0;
|
763
|
|
-}
|
764
|
|
-
|
765
|
157
|
char *OpenRaider::expandDirectoryNames(const char *s) {
|
766
|
158
|
assert(s != NULL);
|
767
|
159
|
assert(s[0] != '\0');
|