summaryrefslogtreecommitdiff
path: root/src/doom/g_game.c
diff options
context:
space:
mode:
authorSimon Howard2011-09-24 16:30:24 +0000
committerSimon Howard2011-09-24 16:30:24 +0000
commit73f27119add06b37dadc4a62343e1301585a828f (patch)
tree05fcb8054d2d6aaf4b1d4282bad5adb395d89c4f /src/doom/g_game.c
parent90bb584b4b9c8e04204732d5b19f228631b174b2 (diff)
downloadchocolate-doom-73f27119add06b37dadc4a62343e1301585a828f.tar.gz
chocolate-doom-73f27119add06b37dadc4a62343e1301585a828f.tar.bz2
chocolate-doom-73f27119add06b37dadc4a62343e1301585a828f.zip
Rework mouse speed box drawing code and move to common code, so that it
can be added to other games. Subversion-branch: /branches/v2-branch Subversion-revision: 2395
Diffstat (limited to 'src/doom/g_game.c')
-rw-r--r--src/doom/g_game.c114
1 files changed, 3 insertions, 111 deletions
diff --git a/src/doom/g_game.c b/src/doom/g_game.c
index d7f86b20..433e35e3 100644
--- a/src/doom/g_game.c
+++ b/src/doom/g_game.c
@@ -152,6 +152,9 @@ boolean singledemo; // quit after playing a demo from cmdlin
boolean precache = true; // if true, load all graphics at start
boolean testcontrols = false; // Invoked by setup to test controls
+int testcontrols_mousespeed;
+
+
wbstartstruct_t wminfo; // parms for world map / intermission
@@ -229,8 +232,6 @@ static boolean *joybuttons = &joyarray[1]; // allow [-1]
static int savegameslot;
static char savedescription[32];
-static int testcontrols_mousespeed;
-
#define BODYQUESIZE 32
mobj_t* bodyque[BODYQUESIZE];
@@ -239,115 +240,6 @@ int bodyqueslot;
int vanilla_savegame_limit = 1;
int vanilla_demo_limit = 1;
-
-#define MOUSE_SPEED_BOX_WIDTH 16
-#define COLOR_RED 0xb0
-#define COLOR_BLACK 0x00
-#define COLOR_WHITE 0x04
-#define COLOR_YELLOW 0xe7
-
-void G_DrawMouseSpeedBox(void)
-{
- extern int usemouse;
- int i;
- int box_x, box_y;
- int original_speed;
- int x, y;
- int redline_x;
- int linelen;
- char *lumpname;
- int color;
-
- // If the mouse is turned off or acceleration is turned off, don't
- // draw the box at all.
-
- if (!usemouse || fabs(mouse_acceleration - 1) < 0.01)
- {
- return;
- }
-
- // Calculate box position
-
- box_x = SCREENWIDTH - MOUSE_SPEED_BOX_WIDTH * 8;
- box_y = SCREENHEIGHT - 9;
-
- // Draw the box.
-
- x = box_x;
-
- for (i=0; i<MOUSE_SPEED_BOX_WIDTH; ++i)
- {
- if (i == 0)
- {
- lumpname = "M_LSLEFT";
- }
- else if (i == MOUSE_SPEED_BOX_WIDTH - 1)
- {
- lumpname = "M_LSRGHT";
- }
- else
- {
- lumpname = "M_LSCNTR";
- }
-
- V_DrawPatchDirect(x, box_y,
- W_CacheLumpName(DEH_String(lumpname), PU_CACHE));
- x += 8;
- }
-
- // Calculate the position of the red line. This is 1/3 of the way
- // along the box.
-
- redline_x = (MOUSE_SPEED_BOX_WIDTH / 3) * 8;
-
- // Undo acceleration and get back the original mouse speed
-
- if (testcontrols_mousespeed < mouse_threshold)
- {
- original_speed = testcontrols_mousespeed;
- }
- else
- {
- original_speed = testcontrols_mousespeed - mouse_threshold;
- original_speed = (int) (original_speed / mouse_acceleration);
- original_speed += mouse_threshold;
- }
-
- // Calculate line length
-
- linelen = (original_speed * redline_x) / mouse_threshold;
-
- // Draw horizontal "thermometer"
-
- for (x=0; x<(MOUSE_SPEED_BOX_WIDTH - 1) * 8; ++x)
- {
- if (x < linelen)
- {
- if (x < redline_x)
- {
- color = COLOR_WHITE;
- }
- else
- {
- color = COLOR_YELLOW;
- }
- }
- else
- {
- color = COLOR_BLACK;
- }
-
- I_VideoBuffer[(box_y - 4) * SCREENWIDTH + box_x + x + 1] = color;
- }
-
- // Draw red line
-
- for (y=box_y - 8; y<box_y; ++y)
- {
- I_VideoBuffer[y * SCREENWIDTH + box_x + redline_x] = COLOR_RED;
- }
-}
-
int G_CmdChecksum (ticcmd_t* cmd)
{
size_t i;