Selaa lähdekoodia

Added basic movement

Thomas Buck 10 vuotta sitten
vanhempi
commit
c70c37a4bf
4 muutettua tiedostoa jossa 611 lisäystä ja 665 poistoa
  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 Näytä tiedosto

42
 
42
 
43
     void display();
43
     void display();
44
 
44
 
45
-    void percentCallback(int percent);
46
-
47
     World mWorld;
45
     World mWorld;
48
     entity_t *mLara;
46
     entity_t *mLara;
49
     Render *mRender;
47
     Render *mRender;
58
     void processMoveable(int index, int i, int *ent,
56
     void processMoveable(int index, int i, int *ent,
59
                             std::vector<skeletal_model_t *> &cache2,
57
                             std::vector<skeletal_model_t *> &cache2,
60
                             std::vector<unsigned int> &cache, int object_id);
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
     void setupTextureColor(texture_tri_t *r_tri, float *colorf);
61
     void setupTextureColor(texture_tri_t *r_tri, float *colorf);
64
 
62
 
65
     bool mLoaded;
63
     bool mLoaded;

+ 2
- 12
include/TombRaider.h Näytä tiedosto

129
     /*!
129
     /*!
130
      * \brief Loads TombRaider 1-5 pak into memory
130
      * \brief Loads TombRaider 1-5 pak into memory
131
      * and does some processing.
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
      * \param filename points to valid TombRaider pak
132
      * \param filename points to valid TombRaider pak
137
-     * \param percent load progress callback
138
      * \returns 0 on success, < 0 on error
133
      * \returns 0 on success, < 0 on error
139
      * \sa TombRaider::loadTR5()
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
      * \brief Makes a clamped 0.0 to 1.0 texel from coord pair
139
      * \brief Makes a clamped 0.0 to 1.0 texel from coord pair
659
 
654
 
660
     /*!
655
     /*!
661
      * \brief Loads a TR5 pak into memory.
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
      * \param f valid FILE
657
      * \param f valid FILE
667
-     * \param percent callback for loading progress
668
      * \returns 0 on success, < 0 on error
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
     static void print(const char *methodName, const char *s, ...) __attribute__((format(printf, 2, 3)));
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
Näytä tiedosto


+ 3
- 47
src/TombRaider.cpp Näytä tiedosto

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

Loading…
Peruuta
Tallenna