diff --git a/code/game/VehicleHalfTrack.cpp b/code/game/VehicleHalfTrack.cpp new file mode 100644 index 00000000..2eeed3a1 --- /dev/null +++ b/code/game/VehicleHalfTrack.cpp @@ -0,0 +1,51 @@ +/* +=========================================================================== +Copyright (C) 2018 the OpenMoHAA team + +This file is part of OpenMoHAA source code. + +OpenMoHAA source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +OpenMoHAA source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with OpenMoHAA source code; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +#include "vehicle.h" +#include "player.h" + +CLASS_DECLARATION(DrivableVehicle, VehicleHalfTrack, "VehicleHalfTrack") +{ + { &EV_Damage, &VehicleHalfTrack::EventDamage }, + { &EV_Killed, &VehicleHalfTrack::Killed }, + { NULL, NULL } +}; + +VehicleHalfTrack::VehicleHalfTrack() +{ + // FIXME: STUB +} + +void VehicleHalfTrack::Think() +{ + // FIXME: STUB +} + +void VehicleHalfTrack::Postthink() +{ + // FIXME: STUB +} + +void VehicleHalfTrack::Killed(Event* ev) +{ + // FIXME: STUB +} diff --git a/code/game/VehicleTank.cpp b/code/game/VehicleTank.cpp new file mode 100644 index 00000000..05eaa1d6 --- /dev/null +++ b/code/game/VehicleTank.cpp @@ -0,0 +1,77 @@ +/* +=========================================================================== +Copyright (C) 2018 the OpenMoHAA team + +This file is part of OpenMoHAA source code. + +OpenMoHAA source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +OpenMoHAA source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with OpenMoHAA source code; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +#include "vehicle.h" +#include "player.h" + +CLASS_DECLARATION(DrivableVehicle, VehicleTank, "VehicleTank") +{ + { &EV_Damage, &VehicleTank::EventDamage }, + { NULL, NULL } +}; + +VehicleTank::VehicleTank() +{ + // FIXME: STUB +} + +VehicleTank::~VehicleTank() +{ + // FIXME: STUB +} + +qboolean VehicleTank::Drive(usercmd_t *ucmd) +{ + // FIXME: STUB + return false; +} + +void VehicleTank::EventDamage(Event *ev) +{ + // FIXME: STUB +} + +void VehicleTank::Think() +{ + // FIXME: STUB +} + +void VehicleTank::Postthink() +{ + // FIXME: STUB +} + +void VehicleTank::CalculateOriginOffset() +{ + // FIXME: STUB +} + +void VehicleTank::UpdateSound() +{ + // FIXME: STUB +} + +void VehicleTank::AttachDriverSlot(Event* ev) +{ + // FIXME: STUB +} + diff --git a/code/game/VehicleWheelsX2.cpp b/code/game/VehicleWheelsX2.cpp new file mode 100644 index 00000000..01d97aed --- /dev/null +++ b/code/game/VehicleWheelsX2.cpp @@ -0,0 +1,63 @@ +/* +=========================================================================== +Copyright (C) 2018 the OpenMoHAA team + +This file is part of OpenMoHAA source code. + +OpenMoHAA source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +OpenMoHAA source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with OpenMoHAA source code; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +#include "vehicle.h" +#include "player.h" + +CLASS_DECLARATION(DrivableVehicle, VehicleWheelsX2, "VehicleWheelsX2") +{ + { &EV_Damage, &VehicleWheelsX2::EventDamage }, + { &EV_Killed, &VehicleWheelsX2::Killed }, + { NULL, NULL } +}; + +VehicleWheelsX2::VehicleWheelsX2() +{ + // FIXME: STUB +} + +void VehicleWheelsX2::UpdateVariables(Vector *acceleration, Vector *vpn, Vector *vup, Vector *vright, Vector *t_vpn, Vector *t_vup, Vector *t_vright) +{ + // FIXME: STUB +} + +float VehicleWheelsX2::TorqueLookup(int rpm) +{ + // FIXME: STUB + return 0.f; +} + +void VehicleWheelsX2::Think() +{ + // FIXME: STUB +} + +void VehicleWheelsX2::Postthink() +{ + // FIXME: STUB +} + +void VehicleWheelsX2::Killed(Event* ev) +{ + // FIXME: STUB +} + diff --git a/code/game/VehicleWheelsX4.cpp b/code/game/VehicleWheelsX4.cpp new file mode 100644 index 00000000..fc91611d --- /dev/null +++ b/code/game/VehicleWheelsX4.cpp @@ -0,0 +1,62 @@ +/* +=========================================================================== +Copyright (C) 2018 the OpenMoHAA team + +This file is part of OpenMoHAA source code. + +OpenMoHAA source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +OpenMoHAA source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with OpenMoHAA source code; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +#include "vehicle.h" +#include "player.h" + +CLASS_DECLARATION(DrivableVehicle, VehicleWheelsX4, "VehicleWheelsX4") +{ + { &EV_Damage, &VehicleWheelsX4::EventDamage }, + { &EV_Killed, &VehicleWheelsX4::Killed }, + { NULL, NULL } +}; + +VehicleWheelsX4::VehicleWheelsX4() +{ + // FIXME: STUB +} + +void VehicleWheelsX4::UpdateVariables(Vector *acceleration, Vector *vpn, Vector *vup, Vector *vright, Vector *t_vpn, Vector *t_vup, Vector *t_vright) +{ + // FIXME: STUB +} + +float VehicleWheelsX4::TorqueLookup(int rpm) +{ + // FIXME: STUB + return 0.f; +} + +void VehicleWheelsX4::Think() +{ + // FIXME: STUB +} + +void VehicleWheelsX4::Postthink() +{ + // FIXME: STUB +} + +void VehicleWheelsX4::Killed(Event* ev) +{ + // FIXME: STUB +} diff --git a/code/game/vehicle.cpp b/code/game/vehicle.cpp index 368deff1..eaae227f 100644 --- a/code/game/vehicle.cpp +++ b/code/game/vehicle.cpp @@ -1,6 +1,6 @@ /* =========================================================================== -Copyright (C) 2015 the OpenMoHAA team +Copyright (C) 2018 the OpenMoHAA team This file is part of OpenMoHAA source code. diff --git a/code/game/vehicle.h b/code/game/vehicle.h index 6064ff4c..ce82ea5d 100644 --- a/code/game/vehicle.h +++ b/code/game/vehicle.h @@ -796,15 +796,78 @@ inline void Vehicle::Archive } class DrivableVehicle : public Vehicle - { - public: +{ +public: - CLASS_PROTOTYPE( DrivableVehicle ); + CLASS_PROTOTYPE(DrivableVehicle); - DrivableVehicle( void ); + DrivableVehicle(void); - virtual void Killed( Event *ev ); - }; + virtual void Killed(Event* ev); +}; + +class VehicleWheelsX4 : public DrivableVehicle +{ +private: + wheel_s m_sWheels[4]; + +public: + CLASS_PROTOTYPE(VehicleWheelsX4); + + VehicleWheelsX4(); + + virtual void UpdateVariables(Vector *acceleration, Vector *vpn, Vector *vup, Vector *vright, Vector *t_vpn, Vector *t_vup, Vector *t_vright) override; + virtual float TorqueLookup(int rpm) override; + virtual void Think() override; + virtual void Postthink() override; + virtual void Killed(Event* ev) override; +}; + +class VehicleWheelsX2 : public DrivableVehicle +{ +private: + wheel_s m_sWheels[2]; + +public: + CLASS_PROTOTYPE(VehicleWheelsX2); + + VehicleWheelsX2(); + + virtual void UpdateVariables(Vector *acceleration, Vector *vpn, Vector *vup, Vector *vright, Vector *t_vpn, Vector *t_vup, Vector *t_vright) override; + virtual float TorqueLookup(int rpm) override; + virtual void Think() override; + virtual void Postthink() override; + virtual void Killed(Event* ev) override; +}; + +class VehicleTank : public DrivableVehicle +{ +public: + CLASS_PROTOTYPE(VehicleTank); + + VehicleTank(); + ~VehicleTank(); + + virtual qboolean Drive(usercmd_t *ucmd) override; + void EventDamage(Event *ev); + virtual void Think() override; + virtual void Postthink() override; + virtual void CalculateOriginOffset() override; + virtual void UpdateSound(); + virtual void AttachDriverSlot(Event* ev); +}; + +class VehicleHalfTrack : public DrivableVehicle +{ +public: + CLASS_PROTOTYPE(VehicleHalfTrack); + + VehicleHalfTrack(); + + virtual void Think() override; + virtual void Postthink() override; + virtual void Killed(Event* ev) override; +}; typedef SafePtr VehiclePtr; diff --git a/code/qcommon/files.cpp b/code/qcommon/files.cpp index de46314b..ab38b69b 100644 --- a/code/qcommon/files.cpp +++ b/code/qcommon/files.cpp @@ -302,6 +302,34 @@ static char *fs_serverReferencedPakNames[MAX_SEARCH_PATHS]; // pk3 names char lastValidBase[MAX_OSPATH]; char lastValidGame[MAX_OSPATH]; +static const char* fs_originalPaks_main[] = +{ + "Pak0.pk3", + "Pak1.pk3", + "Pak2.pk3", + "Pak3.pk3", + "Pak4.pk3", + "Pak5.pk3", + "Pak6.pk3" +}; + +static const char* fs_originalPaks_mainta[] = +{ + "pak1.pk3", + "pak2.pk3", + "pak3.pk3", + "pak4.pk3", + "pak5.pk3" +}; + +static const char* fs_originalPaks_maintt[] = +{ + "pak1.pk3", + "pak2.pk3", + "pak3.pk3", + "pak4.pk3" +}; + #ifdef FS_MISSING FILE* missingFiles = NULL; #endif @@ -2669,15 +2697,39 @@ void FS_TouchFile_f( void ) { //=========================================================================== -static int QDECL paksort( const void *a, const void *b ) { +static int QDECL paksort(const void *a, const void *b) { char *aa, *bb; aa = *(char **)a; bb = *(char **)b; + const char* f1 = COM_SkipPath(aa); + const char* f2 = COM_SkipPath(bb); + return FS_PathCmp( aa, bb ); } +static void FS_SortOriginalPaks(char **pakfiles, int numfiles, const char** originalPaks, int numOriginalPaks) +{ + int i, j; + int numSorted = numfiles; + char* tmp; + + for (i = numfiles - 1; i >= 0; i--) + { + for (j = 0; j < numOriginalPaks; j++) + { + if (!stricmp(pakfiles[i], originalPaks[j])) + { + tmp = pakfiles[numSorted - 1]; + pakfiles[numSorted - 1] = pakfiles[i]; + pakfiles[i] = tmp; + numSorted--; + } + } + } +} + /* ================ FS_AddGameDirectory @@ -2686,7 +2738,11 @@ Sets fs_gamedir, adds the directory to the head of the path, then loads the zip headers ================ */ -void FS_AddGameDirectory( const char *path, const char *dir ) { +void FS_AddGameDirectory(const char *path, const char *dir) { + FS_AddGameDirectory2(path, dir, false); +} + +void FS_AddGameDirectory2( const char *path, const char *dir, qboolean original_paks_priority) { searchpath_t *sp; int i; searchpath_t *search; @@ -2710,7 +2766,23 @@ void FS_AddGameDirectory( const char *path, const char *dir ) { pakfiles = Sys_ListFiles( pakfile, ".pk3", NULL, &numfiles, qfalse ); - qsort( pakfiles, numfiles, sizeof(char*), paksort ); + qsort(pakfiles, numfiles, sizeof(char*), paksort); + + if (original_paks_priority) + { + if (!stricmp(dir, "main")) + { + FS_SortOriginalPaks(pakfiles, numfiles, fs_originalPaks_main, sizeof(fs_originalPaks_main)/sizeof(fs_originalPaks_main[0])); + } + else if (!stricmp(dir, "mainta")) + { + FS_SortOriginalPaks(pakfiles, numfiles, fs_originalPaks_mainta, sizeof(fs_originalPaks_mainta) / sizeof(fs_originalPaks_mainta[0])); + } + else if (!stricmp(dir, "maintt")) + { + FS_SortOriginalPaks(pakfiles, numfiles, fs_originalPaks_maintt, sizeof(fs_originalPaks_maintt) / sizeof(fs_originalPaks_maintt[0])); + } + } for ( i = 0 ; i < numfiles ; i++ ) { pakfile = FS_BuildOSPath( path, dir, pakfiles[i] ); diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index cf69e1cc..38e93ddc 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -604,7 +604,8 @@ qboolean FS_ConditionalRestart( int checksumFeed ); void FS_Restart( int checksumFeed ); // shutdown and restart the filesystem so changes to fs_gamedir can take effect -void FS_AddGameDirectory( const char *path, const char *dir ); +void FS_AddGameDirectory(const char *path, const char *dir); +void FS_AddGameDirectory2(const char *path, const char *dir, qboolean original_paks_priority); char **FS_ListFilteredFiles( const char *path, const char *extension, char *filter, qboolean wantSubs, int *numfiles ); char **FS_ListFiles( const char *directory, const char *extension, qboolean wantSubs, int *numfiles ); diff --git a/ida/ida.h b/ida/ida.h index a71f91db..e6e0b2fa 100644 --- a/ida/ida.h +++ b/ida/ida.h @@ -5894,6 +5894,66 @@ typedef struct { fontheader_t *pFontDebugStrings; } trGlobals_t; +typedef struct srfMarkFragment_s { + public: + surfaceType_t surfaceType; + int iIndex; + int numVerts; + polyVert_t *verts; +} srfMarkFragment_t; + +typedef struct lmEditPoly_s { + srfMarkFragment_t surf; + shader_t *shader; + int viewCount; + polyVert_t verts[8]; + mnode_t *pLeafs[8]; + int iNumLeafs; +} lmEditPoly_t; + +typedef struct lmEditMarkDef_s { + shader_t *markShader; + vec3_t vPos; + vec3_t vProjection; + float fRadius; + float fHeightScale; + float fWidthScale; + float fRotation; + float color[4]; + qboolean bDoLighting; + lmEditPoly_t *pMarkEditPolys; + int iNumEditPolys; + vec3_t vPathCorners[4]; +} lmEditMarkDef_t; + +typedef struct lmPoly_s { + srfMarkFragment_t surf; + shader_t *shader; + int viewCount; +} lmPoly_t; + +typedef struct { + qboolean bLevelMarksLoaded; + char szDCLFilename[256]; + lmPoly_t *pMarkFragments; + qboolean bAutoApplySettings; + lmEditPoly_t *pFreeEditPolys; + lmEditMarkDef_t activeMarkDefs; + lmEditMarkDef_t *pFreeMarkDefs; + lmEditMarkDef_t *pCurrentMark; + qboolean bPathLayingMode; + treadMark_t treadMark; + lmEditMarkDef_t *pTreadMarkStartDecal; + lmEditMarkDef_t *pTreadMarkEndDecal; +} lmGlobals_t; + +struct poolInfo_s { + int iFreeHead; + int iCur; + int nFree; +}; +typedef struct poolInfo_s poolInfo_t; + typedef unsigned char color4ub_t[4]; typedef struct stageVars { unsigned char colors[1000][4]; diff --git a/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj b/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj index 31e88665..07ae2c36 100644 --- a/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj +++ b/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj @@ -106,6 +106,7 @@ + diff --git a/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj.filters b/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj.filters index 87f990e2..25ef031c 100644 --- a/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj.filters +++ b/misc/msvc12_13/MOHConverterLibrary/MOHConverterLibrary.vcxproj.filters @@ -18,9 +18,6 @@ - - Source Files - global @@ -132,6 +129,9 @@ global + + Source Files + @@ -284,14 +284,17 @@ global - - Header Files - global global + + Header Files + + + Header Files + \ No newline at end of file diff --git a/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj b/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj index 8128a4ba..3d3d0318 100644 --- a/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj +++ b/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj @@ -122,9 +122,11 @@ + + @@ -256,11 +258,14 @@ + + + diff --git a/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj.filters b/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj.filters index 1afbc596..19200424 100644 --- a/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj.filters +++ b/misc/msvc12_13/MOHConverterWorker/MOHConverterWorker.vcxproj.filters @@ -444,6 +444,12 @@ global + + Source Files + + + Source Files + @@ -788,5 +794,14 @@ global + + Source Files + + + Header Files + + + Header Files + \ No newline at end of file diff --git a/misc/msvc12_13/game/game.vcxproj b/misc/msvc12_13/game/game.vcxproj index 63ee6cc1..1c9dc14d 100644 --- a/misc/msvc12_13/game/game.vcxproj +++ b/misc/msvc12_13/game/game.vcxproj @@ -270,9 +270,13 @@ + + + + diff --git a/misc/msvc12_13/game/game.vcxproj.filters b/misc/msvc12_13/game/game.vcxproj.filters index ca7aa172..471166f4 100644 --- a/misc/msvc12_13/game/game.vcxproj.filters +++ b/misc/msvc12_13/game/game.vcxproj.filters @@ -426,6 +426,18 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + diff --git a/misc/msvc12_13/omohconverter/omohconverter.vcxproj b/misc/msvc12_13/omohconverter/omohconverter.vcxproj index c4dcd720..2d5a7488 100644 --- a/misc/msvc12_13/omohconverter/omohconverter.vcxproj +++ b/misc/msvc12_13/omohconverter/omohconverter.vcxproj @@ -181,6 +181,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -203,6 +204,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -225,6 +227,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll $(SolutionDir)..\..\build_increment.bat $(SolutionDir)..\..\$(ProjectName) @@ -250,6 +253,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll $(SolutionDir)..\..\build_increment.bat $(SolutionDir)..\..\$(ProjectName) @@ -278,6 +282,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -303,6 +308,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -328,6 +334,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -353,6 +360,7 @@ winmm.lib;$(SolutionDir)..\..\..\build\$(Configuration)\$(PlatformShortName)\MOHConverterLibrary_$(PlatformShortName).lib;%(AdditionalDependencies) + MOHConverterLibrary_x64.dll @@ -434,27 +442,8 @@ - - - - - - - - - - - - - - - - - - - diff --git a/misc/msvc12_13/omohconverter/omohconverter.vcxproj.filters b/misc/msvc12_13/omohconverter/omohconverter.vcxproj.filters index 24ea3e5a..45d52f54 100644 --- a/misc/msvc12_13/omohconverter/omohconverter.vcxproj.filters +++ b/misc/msvc12_13/omohconverter/omohconverter.vcxproj.filters @@ -242,75 +242,18 @@ global - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - global - - Header Files - - - Header Files - global - - Header Files - Header Files - - Header Files - - - Header Files - - - Header Files - Header Files - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files -