Browse Source

Added basic movement

Thomas Buck 10 years ago
parent
commit
c70c37a4bf
4 changed files with 611 additions and 665 deletions
  1. 2
    4
      include/Game.h
  2. 2
    12
      include/TombRaider.h
  3. 604
    602
      src/Game.cpp
  4. 3
    47
      src/TombRaider.cpp

+ 2
- 4
include/Game.h View File

@@ -42,8 +42,6 @@ public:
42 42
 
43 43
     void display();
44 44
 
45
-    void percentCallback(int percent);
46
-
47 45
     World mWorld;
48 46
     entity_t *mLara;
49 47
     Render *mRender;
@@ -58,8 +56,8 @@ private:
58 56
     void processMoveable(int index, int i, int *ent,
59 57
                             std::vector<skeletal_model_t *> &cache2,
60 58
                             std::vector<unsigned int> &cache, int object_id);
61
-    void processModel(int index);
62
-    void processRoom(int index);
59
+    void processModels();
60
+    void processRooms();
63 61
     void setupTextureColor(texture_tri_t *r_tri, float *colorf);
64 62
 
65 63
     bool mLoaded;

+ 2
- 12
include/TombRaider.h View File

@@ -129,16 +129,11 @@ public:
129 129
     /*!
130 130
      * \brief Loads TombRaider 1-5 pak into memory
131 131
      * and does some processing.
132
-     *
133
-     * At 10% all textures are loaded. The exact figure
134
-     * '10' will always be passed to allow for texture
135
-     * caching while meshes load for TR4.
136 132
      * \param filename points to valid TombRaider pak
137
-     * \param percent load progress callback
138 133
      * \returns 0 on success, < 0 on error
139 134
      * \sa TombRaider::loadTR5()
140 135
      */
141
-    int Load(char *filename, void (*percent)(int, void *), void *obj);
136
+    int Load(char *filename);
142 137
 
143 138
     /*!
144 139
      * \brief Makes a clamped 0.0 to 1.0 texel from coord pair
@@ -659,15 +654,10 @@ private:
659 654
 
660 655
     /*!
661 656
      * \brief Loads a TR5 pak into memory.
662
-     *
663
-     * At 10% all textures are loaded
664
-     * the exact figure '10' will always be passed to
665
-     * allow for texture caching while meshes load.
666 657
      * \param f valid FILE
667
-     * \param percent callback for loading progress
668 658
      * \returns 0 on success, < 0 on error
669 659
      */
670
-    int loadTR5(FILE *f, void (*percent)(int, void *), void *obj);
660
+    int loadTR5(FILE *f);
671 661
 
672 662
     static void print(const char *methodName, const char *s, ...) __attribute__((format(printf, 2, 3)));
673 663
 

+ 604
- 602
src/Game.cpp
File diff suppressed because it is too large
View File


+ 3
- 47
src/TombRaider.cpp View File

@@ -393,7 +393,7 @@ int TombRaider::checkMime(char *filename) {
393 393
 }
394 394
 
395 395
 
396
-int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
396
+int TombRaider::Load(char *filename)
397 397
 {
398 398
     FILE *f;
399 399
     int i, j, l;
@@ -413,9 +413,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
413 413
     }
414 414
 
415 415
 
416
-    if (percent)
417
-        (*percent)(1, obj);
418
-
419 416
     mReset = false;
420 417
 
421 418
     Fread(&mPakVersion, sizeof(mPakVersion), 1, f);
@@ -451,7 +448,7 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
451 448
             {
452 449
                 printDebug("Load", "This is really a TR5 pak");
453 450
                 mEngineVersion = TR_VERSION_5;
454
-                return loadTR5(f, percent, obj);
451
+                return loadTR5(f);
455 452
             }
456 453
 
457 454
             break;
@@ -459,9 +456,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
459 456
             mEngineVersion = TR_VERSION_UNKNOWN;
460 457
     }
461 458
 
462
-    if (percent)
463
-        (*percent)(5, obj);
464
-
465 459
     printDebug("Load", "mEngineVersion = 0x%x", mPakVersion);
466 460
 
467 461
     if (mEngineVersion == TR_VERSION_UNKNOWN)
@@ -509,9 +503,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
509 503
                 sz);
510 504
         usz = foo;
511 505
 
512
-        if (percent)
513
-            (*percent)(6, obj);
514
-
515 506
         printDebug("LoadTR4", "textile decompress  [%s]",
516 507
                 (zerr == Z_OK) ? "OK" : "ERROR");
517 508
 
@@ -559,9 +550,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
559 550
                 sz);
560 551
         usz = foo;
561 552
 
562
-        if (percent)
563
-            (*percent)(7, obj);
564
-
565 553
         //     printDebug("Load", "TR4 textile decompress  [%s]",
566 554
         //    (zerr == Z_OK) ? "OK" : "ERROR");
567 555
 
@@ -642,9 +630,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
642 630
             delete [] compressed_data;
643 631
         }
644 632
 
645
-        if (percent)
646
-            (*percent)(9, obj);
647
-
648 633
         // Read the sizes of the level data
649 634
         Fread(&usz, sizeof(usz), 1, f);
650 635
         Fread(&sz, sizeof(sz), 1, f);
@@ -721,9 +706,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
721 706
         }
722 707
     }
723 708
 
724
-    if (percent)
725
-        (*percent)(10, obj);
726
-
727 709
     /* 32-bit unknown - seems to always be 0 */
728 710
     Fread(&_unknown_t, sizeof(_unknown_t), 1, f);
729 711
     printDebug("Load", "_unknown_t = 0x%x", _unknown_t);
@@ -739,11 +721,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
739 721
     /* Extract room details */
740 722
     for (i = 0; i < _num_rooms; ++i)
741 723
     {
742
-        if (percent)
743
-        {
744
-            (*percent)(11 + (int)(((float)i/(float)_num_rooms)*70.0), obj);
745
-        }
746
-
747 724
         /* Read RoomInfo */
748 725
         //! \fixme endian check needed
749 726
         Fread(&_rooms[i].info, sizeof(tr2_room_info_t), 1, f);
@@ -1204,9 +1181,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
1204 1181
     //! \fixme endian
1205 1182
 
1206 1183
 
1207
-    if (percent)
1208
-        (*percent)(80, obj);
1209
-
1210 1184
     printDebug("Load", "_num_state_changes = %u", _num_state_changes);
1211 1185
 
1212 1186
     if (_num_state_changes > 0)
@@ -1355,9 +1329,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
1355 1329
     }
1356 1330
 
1357 1331
 
1358
-    if (percent)
1359
-        (*percent)(90, obj);
1360
-
1361 1332
     if (mEngineVersion == TR_VERSION_4)
1362 1333
     {
1363 1334
         unsigned char zzbuf[4];
@@ -1922,9 +1893,6 @@ int TombRaider::Load(char *filename, void (*percent)(int, void *), void *obj)
1922 1893
 
1923 1894
     fclose(f);
1924 1895
 
1925
-    if (percent)
1926
-        (*percent)(100, obj);
1927
-
1928 1896
     return 0;
1929 1897
 }
1930 1898
 
@@ -5000,7 +4968,7 @@ unsigned char *TombRaider::getTexTile(int texture)
5000 4968
 
5001 4969
 
5002 4970
 //! \fixme Move these data about to make full use in the class  ;)
5003
-int TombRaider::loadTR5(FILE *f, void (*percent)(int, void *), void *obj)
4971
+int TombRaider::loadTR5(FILE *f)
5004 4972
 {
5005 4973
     unsigned int level_data_sz, riffOffset, seperator0;
5006 4974
     unsigned int portalOffset, nextRoomOffset, thisRoomOffset;
@@ -5012,9 +4980,6 @@ int TombRaider::loadTR5(FILE *f, void (*percent)(int, void *), void *obj)
5012 4980
     u_int8_t *meshData;
5013 4981
     char check[32];
5014 4982
 
5015
-    if (percent)
5016
-        (*percent)(5, obj);
5017
-
5018 4983
     printDebug("Load", "mEngineVersion = 0x%x", mPakVersion);
5019 4984
 
5020 4985
     if (mEngineVersion != TR_VERSION_5)
@@ -5108,9 +5073,6 @@ int TombRaider::loadTR5(FILE *f, void (*percent)(int, void *), void *obj)
5108 5073
             sz);
5109 5074
     usz = foo;
5110 5075
 
5111
-    if (percent)
5112
-        (*percent)(7, obj);
5113
-
5114 5076
     printDebug("LoadTR5", "textile decompress  [%s]",
5115 5077
             (zerr == Z_OK) ? "OK" : "ERROR");
5116 5078
 
@@ -5185,9 +5147,6 @@ int TombRaider::loadTR5(FILE *f, void (*percent)(int, void *), void *obj)
5185 5147
         delete [] compressed_data;
5186 5148
     }
5187 5149
 
5188
-    if (percent)
5189
-        (*percent)(10, obj);
5190
-
5191 5150
     // Mongoose 2002.01.08, Michiel has discovered the
5192 5151
     //   first 4 bytes here are 2 bitu16 flags for Lara type and weather
5193 5152
     u_int16_t laraType, weather;
@@ -5230,9 +5189,6 @@ int TombRaider::loadTR5(FILE *f, void (*percent)(int, void *), void *obj)
5230 5189
 
5231 5190
     for (i = 0; i < _num_rooms; ++i)
5232 5191
     {
5233
-        if (percent)
5234
-            (*percent)(11 + (int)(((float)i/(float)_num_rooms)*90.0), obj);
5235
-
5236 5192
         thisRoomOffset = ftell(f);
5237 5193
 
5238 5194
         Fread(&mRoomsTR5[i].checkXELA, 4, 1, f);

Loading…
Cancel
Save