summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/avp/avpview.c12
-rw-r--r--src/avp/davehook.cpp8
-rw-r--r--src/avp/gamecmds.cpp33
-rw-r--r--src/avp/support/consbind.cpp2
-rw-r--r--src/avp/support/rentrntq.cpp68
-rw-r--r--src/avp/win95/frontend/avp_userprofile.h10
-rw-r--r--src/fixer.h11
-rw-r--r--src/kshape.c890
-rw-r--r--src/main.c73
-rw-r--r--src/opengl.c86
10 files changed, 134 insertions, 1059 deletions
diff --git a/src/avp/avpview.c b/src/avp/avpview.c
index 2f0dbb5..08053dd 100644
--- a/src/avp/avpview.c
+++ b/src/avp/avpview.c
@@ -620,11 +620,7 @@ void ReflectObject(DISPLAYBLOCK *dPtr)
void CheckIfMirroringIsRequired(void);
void AvpShowViews(void)
{
- #if SOFTWARE_RENDERER
- FlushSoftwareZBuffer();
- #else
FlushD3DZBuffer();
- #endif
UpdateAllFMVTextures();
@@ -636,11 +632,6 @@ void AvpShowViews(void)
// GlobalAmbience=655;
// textprint("Global Ambience: %d\n",GlobalAmbience);
- #if PSX
- // For PSX, GlobalAmbience is used in the render files
- GlobalAmbience = Global_VDB_Ptr->VDB_Ambience >> 8;
- #endif
-
/* Prepare the View Descriptor Block for use in ShowView() */
PrepareVDBForShowView(Global_VDB_Ptr);
@@ -697,9 +688,6 @@ void AvpShowViews(void)
/* KJL 12:13:26 02/05/97 - divert rendering for AvP */
KRenderItems(Global_VDB_Ptr);
}
- #if 0
- RenderDungeon();
- #endif
PlatformSpecificShowViewExit(Global_VDB_Ptr, &ScreenDescriptorBlock);
diff --git a/src/avp/davehook.cpp b/src/avp/davehook.cpp
index d9f3b45..b49cf60 100644
--- a/src/avp/davehook.cpp
+++ b/src/avp/davehook.cpp
@@ -377,7 +377,7 @@ void DAVEHOOK_Maintain(void)
#if SupportWindows95
if ( bFirstFrame )
{
-// RE_ENTRANT_QUEUE_WinMain_FlushMessagesWithoutProcessing();
+ RE_ENTRANT_QUEUE_WinMain_FlushMessagesWithoutProcessing();
// this is a hack to ensure that none of the keypresses used
// in the menu get through to the first frame of the game and
// for example, switch to typing mode (for CR presses)
@@ -387,7 +387,7 @@ void DAVEHOOK_Maintain(void)
else
{
// Flush the WinProc messages:
-// RE_ENTRANT_QUEUE_WinMain_FlushMessages();
+ RE_ENTRANT_QUEUE_WinMain_FlushMessages();
}
#endif // SupportWindows95
}
@@ -407,10 +407,10 @@ void DAVEHOOK_ScreenModeChange_Cleanup(void)
// Run program-generated batch file:
#if !(PREDATOR_DEMO|MARINE_DEMO||ALIEN_DEMO||DEATHMATCH_DEMO)
- BatchFileProcessing :: Run("CONFIG.CFG");
+ BatchFileProcessing :: Run("config.cfg");
// Run user-generated batch file:
- BatchFileProcessing :: Run("STARTUP.CFG");
+ BatchFileProcessing :: Run("startup.cfg");
#endif
}
diff --git a/src/avp/gamecmds.cpp b/src/avp/gamecmds.cpp
index 9a71aaa..0cec53b 100644
--- a/src/avp/gamecmds.cpp
+++ b/src/avp/gamecmds.cpp
@@ -294,22 +294,6 @@ static void MakeRotatingLight(void)
{
MakeLightElement(&Player->ObWorld,LIGHTELEMENT_ROTATING);
}
-VECTORCH boing = {12345,12345,12345};
-VECTORCH boing2 = {23451,34512,45123};
-
-static void Trash_Frame_Rate(void)
-{
- int i=0;
-
- for (i=0; i<10000000; i++)
- {
- // Normalise(&boing);
- boing.vx += boing2.vx+FastRandom();
- boing.vy += boing2.vy;
- boing.vz += boing2.vz;
- }
-}
-
static void RestartMultiplayer(void)
{
@@ -547,14 +531,7 @@ void CreateGameSpecificConsoleCommands(void)
"RESTARTS A NETWORK GAME FROM SCRATCH",
RestartMultiplayer
);
- #if 0
- ConsoleCommand::Make
- (
- "NEWPLANET",
- "",
- NewPlanet
- );
- #endif
+
ConsoleCommand::Make
(
"PAINTBALL",
@@ -681,19 +658,13 @@ void CreateGameSpecificConsoleCommands(void)
#if 1
ConsoleCommand::Make
(
- "TRASH_FRAME_RATE",
- "",
- Trash_Frame_Rate
- );
-
- ConsoleCommand::Make
- (
"COMPLETE_LEVEL",
"",
CompleteLevel
);
#endif
#endif
+
/* KJL 15:52:41 29/03/98 - version info */
ConsoleCommand::Make
(
diff --git a/src/avp/support/consbind.cpp b/src/avp/support/consbind.cpp
index 97e6de6..62c3fcc 100644
--- a/src/avp/support/consbind.cpp
+++ b/src/avp/support/consbind.cpp
@@ -940,7 +940,7 @@ int KeyBinding :: bEcho = No;
void CONSBIND_WriteKeyBindingsToConfigFile(void)
{
#if !(PREDATOR_DEMO|MARINE_DEMO||ALIEN_DEMO||DEATHMATCH_DEMO)
- KeyBinding :: WriteToConfigFile("CONFIG.CFG");
+ KeyBinding :: WriteToConfigFile("config.cfg");
#endif
}
diff --git a/src/avp/support/rentrntq.cpp b/src/avp/support/rentrntq.cpp
index b00464e..ac71fdb 100644
--- a/src/avp/support/rentrntq.cpp
+++ b/src/avp/support/rentrntq.cpp
@@ -14,6 +14,8 @@
#include "3dc.h"
#include "gadget.h"
+#include "fixer.h"
+
#if SupportWindows95
#include "rentrntq.h"
@@ -33,68 +35,11 @@
/* Constants *******************************************************/
#define MAX_Q_MESSAGES (256)
-#if 0
- #if 1
- #define METACHAR_CHANGEFOCUS '~'
- #else
- #define METACHAR_CHANGEFOCUS '\r'
- #endif
-
- #define METAKEY_CHANGEFOCUS_VK (0xdf)
- /*
- DHM 14/1/98:
- ------------
-
- I have been asked to make this key the
-
- "you know, the tilde key, the one in the top left of everyone's
- keyboards, like Quake does"
-
- However, I have yet to find a keyboard for which the tilde key is in the
- top left.
-
- I obtained the value (0xdf) by experiment on my keyboard. According to
- the Petzold book:
-
- "Although all keys cause keystroke messages, the table does not
- include any symbol keys (such as the key with the / and ? symbols).
- These keys have virtual key codes of 128 and above, and they are often
- defined differently for international keyboards. You can determine the
- values of these virtual key codes using the KEYLOOK program that is shown
- later in this chapter, but normally you should not process keystroke
- messages for these keys."
-
- What about DirectInput?
-
- */
-#endif
-
/* Macros **********************************************************/
/* Imported function prototypes ************************************/
/* Imported data ***************************************************/
-#ifdef __cplusplus
- extern "C"
- {
-#endif
- #if 0
- extern OurBool DaveDebugOn;
- extern FDIEXTENSIONTAG FDIET_Dummy;
- extern IFEXTENSIONTAG IFET_Dummy;
- extern FDIQUAD FDIQuad_WholeScreen;
- extern FDIPOS FDIPos_Origin;
- extern FDIPOS FDIPos_ScreenCentre;
- extern IFOBJECTLOCATION IFObjLoc_Origin;
- extern UncompressedGlobalPlotAtomID UGPAID_StandardNull;
- extern IFCOLOUR IFColour_Dummy;
- extern IFVECTOR IFVec_Zero;
- #endif
-#ifdef __cplusplus
- };
-#endif
-
-
/* Exported globals ************************************************/
@@ -127,6 +72,11 @@
static struct Q_Entry OurQ[MAX_Q_MESSAGES];
static unsigned int NumQMessages = 0;
+extern "C" {
+ void RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_CHAR(char Ch);
+ void RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(WPARAM wParam);
+};
+
/* Exported function definitions ***********************************/
/* Functions callable within the Windows procedure */
void RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_CHAR
@@ -269,7 +219,9 @@ void RE_ENTRANT_QUEUE_WinMain_FlushMessages(void)
}
break;
-
+
+ default:
+ break;
}
}
}
diff --git a/src/avp/win95/frontend/avp_userprofile.h b/src/avp/win95/frontend/avp_userprofile.h
index dd4355f..2f37092 100644
--- a/src/avp/win95/frontend/avp_userprofile.h
+++ b/src/avp/win95/frontend/avp_userprofile.h
@@ -145,9 +145,9 @@ typedef struct
-
-#define USER_PROFILES_PATH "User_Profiles\\"
-#define USER_PROFILES_WILDCARD_NAME "User_Profiles\\*.prf"
+/* TODO: dir separator */
+#define USER_PROFILES_PATH "User_Profiles/"
+#define USER_PROFILES_WILDCARD_NAME "User_Profiles/*.prf"
#define USER_PROFILES_SUFFIX ".prf"
@@ -174,10 +174,8 @@ extern int CheatMode_Species;
extern int CheatMode_Environment;
-extern int EdmondsTest();
-
#ifdef __cplusplus
}; // extern "C"
#endif
-#endif \ No newline at end of file
+#endif
diff --git a/src/fixer.h b/src/fixer.h
index 42e088e..3240cc5 100644
--- a/src/fixer.h
+++ b/src/fixer.h
@@ -91,6 +91,17 @@ typedef struct SYSTEMTIME
int wDay;
} SYSTEMTIME;
+#define VK_BACK 1
+#define VK_END 2
+#define VK_HOME 3
+#define VK_LEFT 4
+#define VK_UP 5
+#define VK_RIGHT 6
+#define VK_DOWN 7
+#define VK_INSERT 8
+#define VK_DELETE 9
+#define VK_TAB 10
+
#define INVALID_HANDLE_VALUE -1
#define GENERIC_WRITE 0x0001
#define CREATE_ALWAYS 0x0002
diff --git a/src/kshape.c b/src/kshape.c
index 5e204f9..33ebda4 100644
--- a/src/kshape.c
+++ b/src/kshape.c
@@ -7611,893 +7611,3 @@ void RenderStarfield(void)
}
}
}
-
-
-
-
-
-
-#if 0
-/* KJL 17:07:52 07/11/98 - experiment! */
-extern unsigned char DebouncedKeyboardInput[];
-#include "dungeon\angband.h"
-char array[MAX_WID+1][MAX_HGT+1];
-extern cave_type cave[MAX_HGT][MAX_WID];
-void RenderDungeon(void)
-{
- int x,y;
- int maxX=MAX_WID-1,maxY=MAX_HGT-1;
- static int notMade=1;
-
- if (notMade || DebouncedKeyboardInput[KEY_G])
- {
- for (x=0; x<=maxX; x++)
- for (y=0; y<=maxY; y++)
- {
- cave[y][x].feat = FEAT_WALL_OUTER;
- }
- generate_cave();
- for (x=0; x<=maxX; x++)
- for (y=0; y<=maxY; y++)
- {
- array[x][y] = 1;
- if (cave[y][x].feat == FEAT_FLOOR)
- array[x][y] = 0;
- }
- notMade = 0;
- }
- for (x=0; x<=maxX; x++)
- for (y=0; y<=maxY; y++)
- {
- if (!array[x][y])
- {
-
- if (x>0)
- {
- if (array[x-1][y]) RenderWallY(x,y);
- }
- else
- {
- RenderWallY(0,y);
- }
- if (x<maxX)
- {
- if (array[x+1][y]) RenderWallY(x+1,y);
- }
- else
- {
- RenderWallY(maxX+1,y);
- }
- if (y>0)
- {
- if (array[x][y-1]) RenderWallX(x,y);
- }
- else
- {
- RenderWallX(x,0);
- }
- if (y<maxY)
- {
- if (array[x][y+1]) RenderWallX(x,y+1);
- }
- else
- {
- RenderWallX(x,maxY+1);
- }
- RenderFloor(x,y);
- }
-
- }
-}
-void RenderFloor(int x,int y)
-{
- int mirrorUV[]=
- {
- 127<<16, 0,
- 127<<16, 127<<16,
- 0, 127<<16,
- 0, 0
- };
- POLYHEADER fakeHeader;
- {
- extern int CloudyImageNumber;
- fakeHeader.PolyFlags = 0;
- fakeHeader.PolyColour = CloudyImageNumber;
- }
-
- {
- {
- VECTORCH translatedPts[4] =
- {
- {0,1000, 0},
- {0,1000, 1000},
- {1000,1000, 1000},
- {1000,1000, 0},
-
- };
- int i;
-
- for (i=0; i<4; i++)
- {
-
- translatedPts[i].vx+=x*1000;
- translatedPts[i].vz+=y*1000;
- TranslatePointIntoViewspace(&translatedPts[i]);
- VerticesBuffer[i].X = translatedPts[i].vx;
- VerticesBuffer[i].Y = translatedPts[i].vy;
- VerticesBuffer[i].Z = translatedPts[i].vz;
- VerticesBuffer[i].U = mirrorUV[i*2];
- VerticesBuffer[i].V = mirrorUV[i*2+1];
-
-
- VerticesBuffer[i].R = 255;
- VerticesBuffer[i].G = 0;
- VerticesBuffer[i].B = 0;
- VerticesBuffer[i].SpecularR = 0;
- VerticesBuffer[i].SpecularG = 0;
- VerticesBuffer[i].SpecularB = 0;
-
- }
- RenderPolygon.NumberOfVertices=4;
- RenderPolygon.TranslucencyMode = TRANSLUCENCY_OFF;
- }
-
- GouraudTexturedPolygon_ClipWithZ();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeX();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveX();
- if(RenderPolygon.NumberOfVertices<3) return;
- D3D_ZBufferedGouraudTexturedPolygon_Output(&fakeHeader,RenderPolygon.Vertices);
- }
-
-}
-void RenderWallY(int x,int y)
-{
- int mirrorUV[]=
- {
- 127<<16, 0,
- 127<<16, 127<<16,
- 0, 127<<16,
- 0, 0
- };
- POLYHEADER fakeHeader;
- {
- extern int CloudyImageNumber;
- fakeHeader.PolyFlags = 0;
- fakeHeader.PolyColour = CloudyImageNumber;
- }
-
- {
- {
- VECTORCH translatedPts[4] =
- {
- {0,0, 0},
- {0,0, 1000},
- {0,0+ 1000, 1000},
- {0,0+ 1000, 0},
-
- };
- int i;
-
- for (i=0; i<4; i++)
- {
-
- translatedPts[i].vx+=x*1000;
- translatedPts[i].vz+=y*1000;
- TranslatePointIntoViewspace(&translatedPts[i]);
- VerticesBuffer[i].X = translatedPts[i].vx;
- VerticesBuffer[i].Y = translatedPts[i].vy;
- VerticesBuffer[i].Z = translatedPts[i].vz;
- VerticesBuffer[i].U = mirrorUV[i*2];
- VerticesBuffer[i].V = mirrorUV[i*2+1];
-
-
- VerticesBuffer[i].R = 255;
- VerticesBuffer[i].G = 255;
- VerticesBuffer[i].B = 255;
- VerticesBuffer[i].SpecularR = 0;
- VerticesBuffer[i].SpecularG = 0;
- VerticesBuffer[i].SpecularB = 0;
-
- }
- RenderPolygon.NumberOfVertices=4;
- RenderPolygon.TranslucencyMode = TRANSLUCENCY_OFF;
- }
-
- GouraudTexturedPolygon_ClipWithZ();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeX();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveX();
- if(RenderPolygon.NumberOfVertices<3) return;
- D3D_ZBufferedGouraudTexturedPolygon_Output(&fakeHeader,RenderPolygon.Vertices);
- }
-
-}
-void RenderWallX(int x,int y)
-{
- int mirrorUV[]=
- {
- 127<<16, 0,
- 127<<16, 127<<16,
- 0, 127<<16,
- 0, 0
- };
- POLYHEADER fakeHeader;
- {
- extern int CloudyImageNumber;
- fakeHeader.PolyFlags = 0;
- fakeHeader.PolyColour = CloudyImageNumber;
- }
-
- {
- {
- VECTORCH translatedPts[4] =
- {
- {0,0, 0},
- {1000,0, 0},
- {1000, 1000, 0},
- {0, 1000, 0},
-
- };
- int i;
-
- for (i=0; i<4; i++)
- {
- translatedPts[i].vx+=x*1000;
- translatedPts[i].vz+=y*1000;
- TranslatePointIntoViewspace(&translatedPts[i]);
- VerticesBuffer[i].X = translatedPts[i].vx;
- VerticesBuffer[i].Y = translatedPts[i].vy;
- VerticesBuffer[i].Z = translatedPts[i].vz;
- VerticesBuffer[i].U = mirrorUV[i*2];
- VerticesBuffer[i].V = mirrorUV[i*2+1];
-
-
- VerticesBuffer[i].R = 255;
- VerticesBuffer[i].G = 255;
- VerticesBuffer[i].B = 255;
- VerticesBuffer[i].SpecularR = 0;
- VerticesBuffer[i].SpecularG = 0;
- VerticesBuffer[i].SpecularB = 0;
-
- }
- RenderPolygon.NumberOfVertices=4;
- RenderPolygon.TranslucencyMode = TRANSLUCENCY_OFF;
- }
-
- GouraudTexturedPolygon_ClipWithZ();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeX();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithNegativeY();
- if(RenderPolygon.NumberOfVertices<3) return;
- GouraudTexturedPolygon_ClipWithPositiveX();
- if(RenderPolygon.NumberOfVertices<3) return;
- D3D_ZBufferedGouraudTexturedPolygon_Output(&fakeHeader,RenderPolygon.Vertices);
- }
-
-}
-#endif
-#if 0
-static void ZBufferedTexturedPolygon_Output(POLYHEADER *inputPolyPtr,RENDERVERTEX *renderVerticesPtr)
-{
- int *itemDataPtr;
-
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*5 + ITrmSize);
-
- if(itemDataPtr)
- {
- POLYHEADER *outputPolyPtr = (POLYHEADER*) itemDataPtr;
- struct KItem * const currentItemPtr = &KItemList[ItemCount];
-
- currentItemPtr->PolyPtr = outputPolyPtr;
-
- {
- int maxZ = smallint;
- int minZ = bigint;
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- int z = vertices->Z;
-
- if(z > maxZ) maxZ = z;
- if(z < minZ) minZ = z;
- vertices++;
- }
- while(--i);
-
- if (inputPolyPtr->PolyFlags & iflag_sortnearz) currentItemPtr->SortKey = minZ;
- else if (inputPolyPtr->PolyFlags & iflag_sortfarz) currentItemPtr->SortKey = maxZ +10;
- else currentItemPtr->SortKey = maxZ;
- }
-
- ItemCount++;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_ZB_2dTexturedPolygon;
- outputPolyPtr->PolyNormalIndex = inputPolyPtr->PolyNormalIndex;
- outputPolyPtr->PolyFlags = inputPolyPtr->PolyFlags;
- if(Global_ShapeNormals)
- outputPolyPtr->PolyColour = OldLightingModelForFlatShading((int *)inputPolyPtr);
- else
- outputPolyPtr->PolyColour = 0;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- {
- *itemDataPtr++ = ProjectedAndClampedX(vertices);
- *itemDataPtr++ = ProjectedAndClampedY(vertices);
- *itemDataPtr++ = vertices->U;
- *itemDataPtr++ = vertices->V;
- {
- float *fDataPtr = (float*)itemDataPtr;
- *fDataPtr = 1.0/((float)(vertices->Z));
- itemDataPtr++;
- }
- vertices++;
- }
- while(--i);
- }
- /* Write out the Item Terminator */
- *itemDataPtr = Term;
- }
-}
-/* TEXTURED POLYGONS */
-static void TexturedPolygon_Construct(POLYHEADER *polyPtr)
-{
- int *texture_defn_ptr;
- RENDERVERTEX *renderVerticesPtr = VerticesBuffer;
- int i = RenderPolygon.NumberOfVertices;
-
-
- /* get ptr to uv coords for this polygon */
- {
- int texture_defn_index = (polyPtr->PolyColour >> TxDefn);
- texture_defn_ptr = Global_ShapeTextures[texture_defn_index];
- }
-
- VertexNumberPtr = &polyPtr->Poly1stPt;
-
- /* If this texture is animated the UV array must be calculated */
- if(polyPtr->PolyFlags & iflag_txanim)
- {
- /* Create the UV array */
- int uv_array[maxpolypts * 2];
- CreateTxAnimUVArray(texture_defn_ptr, uv_array, (int*)polyPtr);
- texture_defn_ptr = uv_array;
-
- do
- {
- renderVerticesPtr->X = RotatedPts[*VertexNumberPtr].vx;
- renderVerticesPtr->Y = RotatedPts[*VertexNumberPtr].vy;
- renderVerticesPtr->Z = RotatedPts[*VertexNumberPtr].vz;
-
- renderVerticesPtr->U = texture_defn_ptr[0];
- renderVerticesPtr->V = texture_defn_ptr[1];
-
- renderVerticesPtr++;
- VertexNumberPtr++;
-
- texture_defn_ptr += 2;
- }
- while(--i);
- }
- else
- {
- do
- {
- renderVerticesPtr->X = RotatedPts[*VertexNumberPtr].vx;
- renderVerticesPtr->Y = RotatedPts[*VertexNumberPtr].vy;
- renderVerticesPtr->Z = RotatedPts[*VertexNumberPtr].vz;
-
- renderVerticesPtr->U = texture_defn_ptr[0] << 16;
- renderVerticesPtr->V = texture_defn_ptr[1] << 16;
-
- renderVerticesPtr++;
- VertexNumberPtr++;
-
- texture_defn_ptr += 2;
- }
- while(--i);
- }
-
-}
-static void TexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
-{
- int *itemDataPtr;
-
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*4 + ITrmSize);
-
- if(itemDataPtr)
- {
- POLYHEADER *outputPolyPtr = (POLYHEADER*) itemDataPtr;
- struct KItem * const currentItemPtr = &KItemList[ItemCount];
-
- currentItemPtr->PolyPtr = outputPolyPtr;
-
- {
- int maxZ = smallint;
- int minZ = bigint;
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- int z = vertices->Z;
-
- if(z > maxZ) maxZ = z;
- if(z < minZ) minZ = z;
- vertices++;
- }
- while(--i);
-
- if (inputPolyPtr->PolyFlags & iflag_sortnearz) currentItemPtr->SortKey = minZ;
- else if (inputPolyPtr->PolyFlags & iflag_sortfarz) currentItemPtr->SortKey = maxZ +10;
- else currentItemPtr->SortKey = maxZ;
- }
-
- ItemCount++;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_2dTexturedPolygon;
- outputPolyPtr->PolyNormalIndex = inputPolyPtr->PolyNormalIndex;
- outputPolyPtr->PolyFlags = inputPolyPtr->PolyFlags;
- if(Global_ShapeNormals)
- outputPolyPtr->PolyColour = OldLightingModelForFlatShading((int *)inputPolyPtr);
- else
- outputPolyPtr->PolyColour = 0;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- {
- *itemDataPtr++ = ProjectedAndClampedX(vertices);
- *itemDataPtr++ = ProjectedAndClampedY(vertices);
- *itemDataPtr++ = vertices->U;
- *itemDataPtr++ = vertices->V;
- vertices++;
- }
- while(--i);
- }
- /* Write out the Item Terminator */
- *itemDataPtr = Term;
- }
-}
-static void ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr,RENDERVERTEX *renderVerticesPtr)
-{
- POLYHEADER *outputPolyPtr;
- int *itemDataPtr;
-
- struct KItem * const currentItemPtr = &KItemList[ItemCount];
-
- {
- int maxZ = smallint;
- int minZ = bigint;
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- int z = vertices->Z;
-
- if(z > maxZ) maxZ = z;
- if(z < minZ) minZ = z;
- vertices++;
- }
- while(--i);
-
- if (inputPolyPtr->PolyFlags & iflag_sortnearz) currentItemPtr->SortKey = minZ;
- else if (inputPolyPtr->PolyFlags & iflag_sortfarz) currentItemPtr->SortKey = maxZ +10;
- else currentItemPtr->SortKey = maxZ;
- }
-
- /* draw in 3d */
- {
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*6 + ITrmSize);
- outputPolyPtr = (POLYHEADER*) itemDataPtr;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_ZB_Gouraud3dTexturedPolygon;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- #if 1
- {
- float oneOverZ;
- oneOverZ = (1.0)/vertices->Z;
- {
- int x = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
- if (x<Global_VDB_Ptr->VDB_ClipLeft)
- {
- x=Global_VDB_Ptr->VDB_ClipLeft;
- }
- else if (x>Global_VDB_Ptr->VDB_ClipRight)
- {
- x=Global_VDB_Ptr->VDB_ClipRight;
- }
-
- *itemDataPtr++=x;
- }
- {
- int y = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
- if (y<Global_VDB_Ptr->VDB_ClipUp)
- {
- y=Global_VDB_Ptr->VDB_ClipUp;
- }
- else if (y>Global_VDB_Ptr->VDB_ClipDown)
- {
- y=Global_VDB_Ptr->VDB_ClipDown;
- }
- *itemDataPtr++=y;
- }
- {
- float *fDataPtr = (float*)itemDataPtr;
-
- *fDataPtr++ = (float)(vertices->U>>16);
- *fDataPtr++ = (float)(vertices->V>>16);
- *fDataPtr++ = oneOverZ;
- itemDataPtr = (int*)fDataPtr;
- }
- *itemDataPtr++ = vertices->I;
- vertices++;
- }
- #else
- {
- *itemDataPtr++ = ProjectedAndClampedX(vertices);
- *itemDataPtr++ = ProjectedAndClampedY(vertices);
- {
- float uf,vf,zf;
- float *fDataPtr = (float*)itemDataPtr;
-
- zf = (vertices->Z);
-
- uf = vertices->U>>16;
- *fDataPtr++ = uf;
-
- vf = vertices->V>>16;
- *fDataPtr++ = vf;
- zf = 1.0/zf;
- *fDataPtr++ = zf;
- itemDataPtr = (int*)fDataPtr;
- }
- *itemDataPtr++ = vertices->I;
- vertices++;
- }
- #endif
- while(--i);
- }
- }
-
- /* Write out the Item Terminator */
- *itemDataPtr = Term;
-
- currentItemPtr->PolyPtr = outputPolyPtr;
-
- outputPolyPtr->PolyNormalIndex = inputPolyPtr->PolyNormalIndex;
- outputPolyPtr->PolyFlags = inputPolyPtr->PolyFlags;
- outputPolyPtr->PolyColour = inputPolyPtr->PolyColour;
-
- ItemCount++;
-}
-static void GouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
-{
- int *itemDataPtr;
-
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*3 + ITrmSize);
-
- if(itemDataPtr)
- {
- POLYHEADER *outputPolyPtr = (POLYHEADER*) itemDataPtr;
- struct KItem * const currentItemPtr = &KItemList[ItemCount];
-
- currentItemPtr->PolyPtr = outputPolyPtr;
-
- {
-
- int maxZ = smallint;
- int minZ = bigint;
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- int z = vertices->Z;
-
- if(z > maxZ) maxZ = z;
- if(z < minZ) minZ = z;
- vertices++;
- }
- while(--i);
-
- if (inputPolyPtr->PolyFlags & iflag_sortnearz) currentItemPtr->SortKey = minZ;
- else if (inputPolyPtr->PolyFlags & iflag_sortfarz) currentItemPtr->SortKey = maxZ +10;
- else currentItemPtr->SortKey = maxZ;
- }
-
- ItemCount++;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_GouraudPolygon;
- outputPolyPtr->PolyNormalIndex = inputPolyPtr->PolyNormalIndex;
- outputPolyPtr->PolyFlags = inputPolyPtr->PolyFlags;
-
- #if 1//debug
- if (inputPolyPtr->PolyItemType != I_GouraudPolygon)
- {
- int c = GetSin((inputPolyPtr->PolyColour>>5)&4095);
- if (c<0) c=-c;
-
- inputPolyPtr->PolyColour+=NormalFrameTime;
-
- if (VideoModeType==VideoModeType_8) c<<=6;
-
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- vertices->I = c;
- vertices++;
- }
- while(--i);
- }
-
- outputPolyPtr->PolyColour = 0xff;
- }
- else
- #endif
- outputPolyPtr->PolyColour = inputPolyPtr->PolyColour;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- {
- *itemDataPtr++ = ProjectedAndClampedX(vertices);
- *itemDataPtr++ = ProjectedAndClampedY(vertices);
- *itemDataPtr++ = vertices->I;
- vertices++;
- }
- while(--i);
- }
- /* Write out the Item Terminator */
- *itemDataPtr = Term;
- }
-}
-static void CloakedTexturedPolygon_Construct(POLYHEADER *polyPtr)
-{
- int cloakedU[] = { 248-8,256-8,256-8,248-8 };
- int cloakedV[] = { 1,1,8,8 };
-
- int *texture_defn_ptr;
- RENDERVERTEX *renderVerticesPtr = VerticesBuffer;
- int i = RenderPolygon.NumberOfVertices;
-
-
- /* get ptr to uv coords for this polygon */
- {
- int texture_defn_index = (polyPtr->PolyColour >> TxDefn);
- texture_defn_ptr = Global_ShapeTextures[texture_defn_index];
- }
-
- VertexNumberPtr = &polyPtr->Poly1stPt;
-
- while(i--)
- {
- renderVerticesPtr->X = RotatedPts[*VertexNumberPtr].vx;
- renderVerticesPtr->Y = RotatedPts[*VertexNumberPtr].vy;
- renderVerticesPtr->Z = RotatedPts[*VertexNumberPtr].vz;
-
- renderVerticesPtr->U = cloakedU[i];
- renderVerticesPtr->V = cloakedV[i];
-
- renderVerticesPtr++;
- VertexNumberPtr++;
- }
-}
- void GouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr,RENDERVERTEX *renderVerticesPtr)
-{
- POLYHEADER *outputPolyPtr;
- int *itemDataPtr;
- int drawIn2D;
-
- struct KItem * const currentItemPtr = &KItemList[ItemCount];
-
- {
- int maxZ = smallint;
- int minZ = bigint;
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- do
- {
- int z = vertices->Z;
-
- if(z > maxZ) maxZ = z;
- if(z < minZ) minZ = z;
- vertices++;
- }
- while(--i);
-
- if (inputPolyPtr->PolyFlags & iflag_sortnearz) currentItemPtr->SortKey = minZ;
- else if (inputPolyPtr->PolyFlags & iflag_sortfarz) currentItemPtr->SortKey = maxZ +10;
- else currentItemPtr->SortKey = maxZ;
-
- drawIn2D = (maxZ*4 < minZ*5);
- }
-
- #if !Saturn
- /* KJL 15:49:56 07/04/97 - draw all in 3D will become an option */
- if ((ScanDrawMode == ScanDrawDirectDraw) && (drawIn2D))
- #endif
- {
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*5 + ITrmSize);
- outputPolyPtr = (POLYHEADER*) itemDataPtr;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_Gouraud2dTexturedPolygon;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- {
- #if 1
- {
- int x = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
- if (x<Global_VDB_Ptr->VDB_ClipLeft)
- {
- x=Global_VDB_Ptr->VDB_ClipLeft;
- }
- else if (x>Global_VDB_Ptr->VDB_ClipRight)
- {
- x=Global_VDB_Ptr->VDB_ClipRight;
- }
-
- *itemDataPtr++=x;
- }
- {
- int y = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
- if (y<Global_VDB_Ptr->VDB_ClipUp)
- {
- y=Global_VDB_Ptr->VDB_ClipUp;
- }
- else if (y>Global_VDB_Ptr->VDB_ClipDown)
- {
- y=Global_VDB_Ptr->VDB_ClipDown;
- }
- *itemDataPtr++=y;
- }
- #endif
- #if Saturn
- *itemDataPtr++ = vertices->R;
- *itemDataPtr++ = vertices->G;
- *itemDataPtr++ = vertices->B;
- #else
- *itemDataPtr++ = vertices->U;
- *itemDataPtr++ = vertices->V;
- *itemDataPtr++ = vertices->I;
- #endif
- vertices++;
- }
- while(--i);
- }
- }
- #if !Saturn
- else /* draw in 3d */
- {
- itemDataPtr = AllocateItemData(IHdrSize + RenderPolygon.NumberOfVertices*6 + ITrmSize);
- outputPolyPtr = (POLYHEADER*) itemDataPtr;
-
- /* Write out the Item Header */
- outputPolyPtr->PolyItemType = I_Gouraud3dTexturedPolygon;
-
- /* Write out the Item Points Array */
- {
- int i = RenderPolygon.NumberOfVertices;
- RENDERVERTEX *vertices = renderVerticesPtr;
-
- itemDataPtr = &outputPolyPtr->Poly1stPt;
-
- do
- {
- float oneOverZ,uf,vf;
- uf = vertices->U>>16;
- vf = vertices->V>>16;
-
- oneOverZ = (1.0)/vertices->Z;
- {
- int x = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
- if (x<Global_VDB_Ptr->VDB_ClipLeft)
- {
- x=Global_VDB_Ptr->VDB_ClipLeft;
- }
- else if (x>Global_VDB_Ptr->VDB_ClipRight)
- {
- x=Global_VDB_Ptr->VDB_ClipRight;
- }
-
- *itemDataPtr++=x;
- }
- uf = uf*oneOverZ;
- {
- int y = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
- if (y<Global_VDB_Ptr->VDB_ClipUp)
- {
- y=Global_VDB_Ptr->VDB_ClipUp;
- }
- else if (y>Global_VDB_Ptr->VDB_ClipDown)
- {
- y=Global_VDB_Ptr->VDB_ClipDown;
- }
- *itemDataPtr++=y;
- }
- vf = vf*oneOverZ;
- {
- float *fDataPtr = (float*)itemDataPtr;
-
- *fDataPtr++ = uf;
- *fDataPtr++ = vf;
- *fDataPtr++ = oneOverZ;
- itemDataPtr = (int*)fDataPtr;
- }
- *itemDataPtr++ = vertices->I;
- vertices++;
- }
- while(--i);
- }
- }
- #endif
- /* Write out the Item Terminator */
- *itemDataPtr = Term;
-
- currentItemPtr->PolyPtr = outputPolyPtr;
-
- outputPolyPtr->PolyNormalIndex = inputPolyPtr->PolyNormalIndex;
- outputPolyPtr->PolyFlags = inputPolyPtr->PolyFlags;
- outputPolyPtr->PolyColour = inputPolyPtr->PolyColour;
-
- ItemCount++;
-}
-
-#endif \ No newline at end of file
diff --git a/src/main.c b/src/main.c
index 82b201c..b34c8c1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -348,11 +348,53 @@ static int KeySymToKey(int keysym)
}
}
-static void handle_keypress(int key, int press)
+static void handle_keypress(int key, int unicode, int press)
{
+ void RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_CHAR(char Ch);
+ void RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(int wParam);
+
if (key == -1)
return;
+ if (press) {
+ switch(key) {
+ case KEY_BACKSPACE:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_BACK);
+ break;
+ case KEY_END:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_END);
+ break;
+ case KEY_HOME:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_HOME);
+ break;
+ case KEY_LEFT:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_LEFT);
+ break;
+ case KEY_UP:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_UP);
+ break;
+ case KEY_RIGHT:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_RIGHT);
+ break;
+ case KEY_DOWN:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_DOWN);
+ break;
+ case KEY_INS:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_INSERT);
+ break;
+ case KEY_DEL:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_DELETE);
+ break;
+ case KEY_TAB:
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_KEYDOWN(VK_TAB);
+ break;
+ default:
+ if (unicode && !(unicode & 0xFF80))
+ RE_ENTRANT_QUEUE_WinProc_AddMessage_WM_CHAR(unicode);
+ break;
+ }
+ }
+
if (press && !KeyboardInput[key]) {
DebouncedKeyboardInput[key] = 1;
DebouncedGotAnyKey = 1;
@@ -387,7 +429,7 @@ static void handle_buttonpress(int button, int press)
KeyboardInput[key] = press;
}
-
+
void CheckForWindowsMessages()
{
SDL_Event event;
@@ -413,10 +455,10 @@ void CheckForWindowsMessages()
case SDL_MOUSEBUTTONUP:
break;
case SDL_KEYDOWN:
- handle_keypress(KeySymToKey(event.key.keysym.sym), 1);
+ handle_keypress(KeySymToKey(event.key.keysym.sym), event.key.keysym.unicode, 1);
break;
case SDL_KEYUP:
- handle_keypress(KeySymToKey(event.key.keysym.sym), 0);
+ handle_keypress(KeySymToKey(event.key.keysym.sym), 0, 0);
break;
case SDL_QUIT:
// SDL_Quit();
@@ -431,17 +473,17 @@ void CheckForWindowsMessages()
if (wantmouse) {
if (buttons & SDL_BUTTON(1))
- handle_keypress(KEY_LMOUSE, 1);
+ handle_keypress(KEY_LMOUSE, 0, 1);
else
- handle_keypress(KEY_LMOUSE, 0);
+ handle_keypress(KEY_LMOUSE, 0, 0);
if (buttons & SDL_BUTTON(2))
- handle_keypress(KEY_MMOUSE, 1);
+ handle_keypress(KEY_MMOUSE, 0, 1);
else
- handle_keypress(KEY_MMOUSE, 0);
+ handle_keypress(KEY_MMOUSE, 0, 0);
if (buttons & SDL_BUTTON(3))
- handle_keypress(KEY_RMOUSE, 1);
+ handle_keypress(KEY_RMOUSE, 0, 1);
else
- handle_keypress(KEY_RMOUSE, 0);
+ handle_keypress(KEY_RMOUSE, 0, 0);
MouseVelX = DIV_FIXED(x, NormalFrameTime);
MouseVelY = DIV_FIXED(y, NormalFrameTime);
@@ -512,6 +554,11 @@ int main(int argc, char *argv[])
GetPathFromRegistry();
+{
+ extern int DebuggingCommandsActive;
+ DebuggingCommandsActive = 1;
+}
+
#if MARINE_DEMO
ffInit("fastfile/mffinfo.txt","fastfile/");
#elif ALIEN_DEMO
@@ -560,9 +607,7 @@ int main(int argc, char *argv[])
LoadSounds("PLAYER");
{
- extern int DebuggingCommandsActive;
// AvP.Network = I_Host; /* for exploring */
- DebuggingCommandsActive = 1;
}
AvP.CurrentEnv = AvP.StartingEnv = 0; /* are these even used? */
@@ -581,12 +626,12 @@ int main(int argc, char *argv[])
// SetLevelToLoad(AVP_ENVIRONMENT_TEMPLE); /* starting alien level */
AvP.PlayerType = I_Marine;
-// SetLevelToLoad(AVP_ENVIRONMENT_DERELICT); /* starting marine level */
+ SetLevelToLoad(AVP_ENVIRONMENT_DERELICT); /* starting marine level */
// AvP.PlayerType = I_Predator;
// SetLevelToLoad(AVP_ENVIRONMENT_WATERFALL); /* starting predator level */
- SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_MP); /* multiplayer */
+// SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_MP); /* multiplayer */
// SetLevelToLoad(AVP_ENVIRONMENT_SUBWAY_MP);
// SetLevelToLoad(AVP_ENVIRONMENT_LEADWORKS_COOP); /* coop/skirmish */
diff --git a/src/opengl.c b/src/opengl.c
index 7a73d22..375262f 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -2,7 +2,6 @@
#include <stdlib.h>
#include <string.h>
-#include <SDL.h>
#include <GL/gl.h>
#include <GL/glext.h>
@@ -17,6 +16,7 @@
#include "krender.h"
#include "kshape.h"
#include "prototyp.h"
+#include "lighting.h"
#include "bh_types.h"
#include "showcmds.h"
#include "d3d_hud.h"
@@ -24,6 +24,7 @@
#include "avp_userprofile.h"
#include "aw.h"
+int LightIntensityAtPoint(VECTORCH *pointPtr);
extern IMAGEHEADER ImageHeaderArray[];
extern VIEWDESCRIPTORBLOCK *Global_VDB_Ptr;
@@ -163,8 +164,7 @@ typedef struct TriangleArray
TriangleArray tarr;
static void DrawTriangles_T2F_C4UB_V4F()
-{
-
+{
#define OUTPUT_VERTEX(d) \
{ \
glColor4ubv (&tarr.c[(d) * 4]); \
@@ -209,8 +209,7 @@ static void DrawTriangles_T2F_C4UB_V4F()
}
static void DrawTriangles_T2F_V4F()
-{
-
+{
#define OUTPUT_VERTEX(d) \
{ \
glTexCoord2fv (&tarr.t[(d) * 4]); \
@@ -254,8 +253,7 @@ static void DrawTriangles_T2F_V4F()
}
static void DrawTriangles_C4UB_V4F()
-{
-
+{
#define OUTPUT_VERTEX(d) \
{ \
glColor4ubv (&tarr.c[(d) * 4]); \
@@ -622,9 +620,7 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice
}
tarr.elements = RenderPolygon.NumberOfVertices;
- DrawTriangles_T2F_C4UB_V4F();
-
-
+ DrawTriangles_T2F_C4UB_V4F();
}
void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
@@ -788,7 +784,6 @@ void D3D_Decal_Output(DECAL *decalPtr, RENDERVERTEX *renderVerticesPtr)
glColor4ub(r, g, b, a);
- SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
RENDERVERTEX *vertices = &renderVerticesPtr[i];
@@ -825,19 +820,17 @@ void D3D_Decal_Output(DECAL *decalPtr, RENDERVERTEX *renderVerticesPtr)
zvalue = vertices->Z+HeadUpDisplayZOffset;
z = 1.0 - 2*ZNear/zvalue;
-// zvalue = vertices->Z+HeadUpDisplayZOffset;
-// zvalue = ((zvalue-ZNear)/zvalue);
-
-#if 0
- glTexCoord4f(s*rhw, t*rhw, 0, rhw);
- glVertex3f(x, y, z);
-#else
- glTexCoord2f(s, t);
- glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
-#endif
+ tarr.v[4*i+0] = x/rhw;
+ tarr.v[4*i+1] = y/rhw;
+ tarr.v[4*i+2] = z/rhw;
+ tarr.v[4*i+3] = 1/rhw;
+
+ tarr.t[4*i+0] = s;
+ tarr.t[4*i+1] = t;
}
- glEnd();
+ tarr.elements = RenderPolygon.NumberOfVertices;
+ DrawTriangles_T2F_V4F();
}
void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr)
@@ -982,7 +975,6 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER
CheckBoundTextureIsCorrect(NULL); /* disable texturing */
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_OFF);
- SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
RENDERVERTEX *vertices = &renderVerticesPtr[i];
@@ -992,7 +984,7 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
-#if 1
+
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
x1=Global_VDB_Ptr->VDB_ClipLeft;
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
@@ -1004,7 +996,6 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER
} else if (y1>Global_VDB_Ptr->VDB_ClipDown) {
y1=Global_VDB_Ptr->VDB_ClipDown;
}
-#endif
x = x1;
y = y1;
@@ -1015,15 +1006,21 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER
zvalue = vertices->Z+HeadUpDisplayZOffset;
z = 1.0 - 2*ZNear/zvalue;
-// zvalue = vertices->Z+HeadUpDisplayZOffset;
-// zvalue = ((zvalue-ZNear)/zvalue);
-
rhw = 1.0/(float)vertices->Z;
- glColor4ub(vertices->R, vertices->G, vertices->B, vertices->A);
- glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
+ tarr.v[4*i+0] = x/rhw;
+ tarr.v[4*i+1] = y/rhw;
+ tarr.v[4*i+2] = z/rhw;
+ tarr.v[4*i+3] = 1/rhw;
+
+ tarr.c[4*i+0] = vertices->R;
+ tarr.c[4*i+1] = vertices->G;
+ tarr.c[4*i+2] = vertices->B;
+ tarr.c[4*i+3] = vertices->A;
}
- glEnd();
+
+ tarr.elements = RenderPolygon.NumberOfVertices;
+ DrawTriangles_C4UB_V4F();
}
void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVerticesPtr)
@@ -1038,7 +1035,6 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
CheckTranslucencyModeIsCorrect(RenderPolygon.TranslucencyMode);
CheckBoundTextureIsCorrect(NULL);
- SelectPolygonBeginType(RenderPolygon.NumberOfVertices);
for (i = 0; i < RenderPolygon.NumberOfVertices; i++) {
RENDERVERTEX *vertices = &renderVerticesPtr[i];
int x1, y1;
@@ -1047,7 +1043,7 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
x1 = (vertices->X*(Global_VDB_Ptr->VDB_ProjX+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreX;
y1 = (vertices->Y*(Global_VDB_Ptr->VDB_ProjY+1))/vertices->Z+Global_VDB_Ptr->VDB_CentreY;
-#if 1
+
if (x1<Global_VDB_Ptr->VDB_ClipLeft) {
x1=Global_VDB_Ptr->VDB_ClipLeft;
} else if (x1>Global_VDB_Ptr->VDB_ClipRight) {
@@ -1059,7 +1055,6 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
} else if (y1>Global_VDB_Ptr->VDB_ClipDown) {
y1=Global_VDB_Ptr->VDB_ClipDown;
}
-#endif
x = x1;
y = y1;
@@ -1069,20 +1064,25 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *
zvalue = vertices->Z+HeadUpDisplayZOffset;
z = 1.0 - 2*ZNear/zvalue;
-
-// zvalue = vertices->Z+HeadUpDisplayZOffset;
-// zvalue = ((zvalue-ZNear)/zvalue);
-
+
rhw = 1.0/(float)vertices->Z;
+ tarr.v[4*i+0] = x/rhw;
+ tarr.v[4*i+1] = y/rhw;
+ tarr.v[4*i+2] = z/rhw;
+ tarr.v[4*i+3] = 1/rhw;
+
+ tarr.c[4*i+0] = vertices->R;
+ tarr.c[4*i+1] = vertices->G;
+ tarr.c[4*i+2] = vertices->B;
if (flags & iflag_transparent)
- glColor4ub(vertices->R, vertices->G, vertices->B, vertices->A);
+ tarr.c[4*i+3] = vertices->A;
else
- glColor4ub(vertices->R, vertices->G, vertices->B, 255);
-
- glVertex4f(x/rhw, y/rhw, z/rhw, 1/rhw);
+ tarr.c[4*i+3] = 255;
}
- glEnd();
+
+ tarr.elements = RenderPolygon.NumberOfVertices;
+ DrawTriangles_C4UB_V4F();
}
void D3D_PlayerOnFireOverlay()