mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2024-12-02 17:02:17 +00:00
187 lines
4.2 KiB
C++
187 lines
4.2 KiB
C++
|
/*
|
||
|
===========================================================================
|
||
|
|
||
|
Doom 3 BFG Edition GPL Source Code
|
||
|
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||
|
|
||
|
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||
|
|
||
|
Doom 3 BFG Edition 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 3 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
Doom 3 BFG Edition 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 Doom 3 BFG Edition Source Code. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below.
|
||
|
|
||
|
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
||
|
|
||
|
===========================================================================
|
||
|
*/
|
||
|
|
||
|
#include "Precompiled.h"
|
||
|
#include "globaldata.h"
|
||
|
|
||
|
#include <stdlib.h>
|
||
|
#include <stdarg.h>
|
||
|
#include <sys/types.h>
|
||
|
|
||
|
#include "i_video.h"
|
||
|
#include "i_system.h"
|
||
|
|
||
|
#include "doomstat.h"
|
||
|
#include "v_video.h"
|
||
|
#include "m_argv.h"
|
||
|
#include "d_main.h"
|
||
|
|
||
|
#include "doomdef.h"
|
||
|
|
||
|
//#include <d3d8.h> // SMF
|
||
|
//#include <xgraphics.h> // SMF
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void I_ShutdownGraphics(void)
|
||
|
{
|
||
|
// VVTODO: Shutdown Graphics
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// I_StartFrame
|
||
|
//
|
||
|
void I_StartFrame (void)
|
||
|
{
|
||
|
// er?
|
||
|
}
|
||
|
|
||
|
static void I_CombineMouseEvent(const event_t* in, event_t* out)
|
||
|
{
|
||
|
if (fabs((float)in->data1) > fabs((float)out->data1))
|
||
|
out->data1 = in->data1;
|
||
|
if (fabs((float)in->data2) > fabs((float)out->data2))
|
||
|
out->data2 = in->data2;
|
||
|
if (fabs((float)in->data3) > fabs((float)out->data3))
|
||
|
out->data3 = in->data3;
|
||
|
}
|
||
|
|
||
|
void I_GetEvents( controller_t *controller )
|
||
|
{
|
||
|
event_t e_mouse, e_joystick;
|
||
|
int numEvents;
|
||
|
|
||
|
e_mouse.type = ev_mouse;
|
||
|
e_mouse.data1 = e_mouse.data2 = e_mouse.data3 = 0;
|
||
|
e_joystick.type = ev_joystick;
|
||
|
e_joystick.data1 = e_joystick.data2 = e_joystick.data3 = 0;
|
||
|
|
||
|
numEvents = I_PollMouseInputEvents( controller );
|
||
|
if (numEvents)
|
||
|
{
|
||
|
int i;
|
||
|
event_t e;
|
||
|
|
||
|
// right thumb stick
|
||
|
for (i = 0; i < numEvents; ++i)
|
||
|
{
|
||
|
I_ReturnMouseInputEvent(i, &e);
|
||
|
if (e.type == ev_mouse)
|
||
|
I_CombineMouseEvent(&e, &e_mouse);
|
||
|
else if (e.type == ev_joystick)
|
||
|
I_CombineMouseEvent(&e, &e_joystick);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
numEvents = I_PollJoystickInputEvents( controller );
|
||
|
if (numEvents)
|
||
|
{
|
||
|
int i;
|
||
|
event_t e;
|
||
|
for (i = 0; i < numEvents; ++i)
|
||
|
{
|
||
|
I_ReturnJoystickInputEvent(i, &e);
|
||
|
if (e.type == ev_keydown || e.type == ev_keyup) {
|
||
|
D_PostEvent(&e);
|
||
|
} else if (e.type == ev_joystick) {
|
||
|
I_CombineMouseEvent(&e, &e_joystick);
|
||
|
} else if (e.type == ev_mouse) {
|
||
|
I_CombineMouseEvent(&e, &e_mouse);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
D_PostEvent(&e_mouse);
|
||
|
D_PostEvent(&e_joystick);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// I_UpdateNoBlit
|
||
|
//
|
||
|
void I_UpdateNoBlit (void)
|
||
|
{
|
||
|
// what is this?
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// I_FinishUpdate
|
||
|
//
|
||
|
void I_FinishUpdate (void)
|
||
|
{
|
||
|
// DHM - These buffers are not used
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// I_ReadScreen
|
||
|
//
|
||
|
void I_ReadScreen (byte* scr)
|
||
|
{
|
||
|
memcpy(scr, ::g->screens[0], SCREENWIDTH*SCREENHEIGHT);
|
||
|
}
|
||
|
|
||
|
inline unsigned int I_PackColor( unsigned int a, unsigned int r, unsigned int g, unsigned int b ) {
|
||
|
unsigned int color = 0;
|
||
|
|
||
|
color |= (r & 255) << 24;
|
||
|
color |= (g & 255) << 16;
|
||
|
color |= (b & 255) << 8;
|
||
|
color |= (a & 255);
|
||
|
|
||
|
return color;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// I_SetPalette
|
||
|
//
|
||
|
void I_SetPalette (byte* palette)
|
||
|
{
|
||
|
|
||
|
int i;
|
||
|
|
||
|
// set the X colormap entries
|
||
|
for (i=0 ; i<256 ; i++)
|
||
|
{
|
||
|
int r,b,g;
|
||
|
r = gammatable[::g->usegamma][*palette++];
|
||
|
g = gammatable[::g->usegamma][*palette++];
|
||
|
b = gammatable[::g->usegamma][*palette++];
|
||
|
::g->XColorMap[i] = I_PackColor(0xff, r, g, b);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void I_InitGraphics()
|
||
|
{
|
||
|
}
|
||
|
|