Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
wolf3d
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
wolf3d
Commits
f4003e54
Commit
f4003e54
authored
Sep 27, 2001
by
Steven Fuller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added (ingame) mouse support.
parent
a6765d8f
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
184 additions
and
95 deletions
+184
-95
Makefile
src/Makefile
+2
-1
TODO
src/TODO
+1
-1
vi_comm.c
src/vi_comm.c
+11
-53
vi_comm.h
src/vi_comm.h
+2
-0
vi_sdl.c
src/vi_sdl.c
+165
-39
wl_menu.c
src/wl_menu.c
+1
-1
wl_play.c
src/wl_play.c
+2
-0
No files found.
src/Makefile
View file @
f4003e54
...
...
@@ -34,7 +34,8 @@ NASM = nasm
.SUFFIXES
:
.asm
all
:
swolf3d xwolf3d sdlwolf3d
#all: swolf3d xwolf3d sdlwolf3d
all
:
sdlwolf3d
$(SOBJS)
:
version.h id_heads.h wl_def.h
$(XOBJS)
:
version.h id_heads.h wl_def.h
...
...
src/TODO
View file @
f4003e54
...
...
@@ -36,7 +36,7 @@ P M - position pushwall sounds
P M - id_ca.c cache code: fix/readd/rewrite the "garbage collection" system
P M - rewrite id_ca.c: uniform memory handling system
P M - either move id_heads into wl_def or split header files apart
P R - rewrite fmopl.c to avoid licensing issues
P R - rewrite fmopl.c to avoid licensing issues
(or provide as a separate patch? may not be advisable since id owns copyright on wolf code)
P R - remove CA_LoadAllSounds now that the sound code does everything
B I - README, etc.
B M - Code Documentation
...
...
src/vi_comm.c
View file @
f4003e54
...
...
@@ -16,6 +16,7 @@ boolean JoysPresent[MaxJoys];
// Global variables
boolean
Keyboard
[
NumCodes
];
boolean
InternalKeyboard
[
NumCodes
];
boolean
Paused
;
char
LastASCII
;
ScanCode
LastScan
;
...
...
@@ -81,12 +82,15 @@ void keyboard_handler(int code, int press)
if
(
press
==
0
)
{
Keyboard
[
k
]
=
false
;
InternalKeyboard
[
k
]
=
false
;
}
else
// Make code
{
LastCode
=
CurCode
;
CurCode
=
LastScan
=
k
;
Keyboard
[
k
]
=
true
;
InternalKeyboard
[
k
]
=
true
;
if
(
k
==
sc_CapsLock
)
{
...
...
@@ -137,19 +141,6 @@ boolean IN_UserInput(longword delay)
//===========================================================================
/*
===================
=
= IN_MouseButtons
=
===================
*/
byte
IN_MouseButtons
()
{
return
0
;
}
/*
===================
=
...
...
@@ -163,29 +154,6 @@ byte IN_JoyButtons()
return
0
;
}
///////////////////////////////////////////////////////////////////////////
//
// INL_GetMouseDelta() - Gets the amount that the mouse has moved from the
// mouse driver
//
///////////////////////////////////////////////////////////////////////////
static
void
INL_GetMouseDelta
(
int
*
x
,
int
*
y
)
{
*
x
=
0
;
*
y
=
0
;
}
///////////////////////////////////////////////////////////////////////////
//
// INL_GetMouseButtons() - Gets the status of the mouse buttons from the
// mouse driver
//
///////////////////////////////////////////////////////////////////////////
static
word
INL_GetMouseButtons
(
void
)
{
return
0
;
}
///////////////////////////////////////////////////////////////////////////
//
// IN_GetJoyAbs() - Reads the absolute position of the specified joystick
...
...
@@ -239,16 +207,6 @@ static void INL_ShutKbd(void)
{
}
///////////////////////////////////////////////////////////////////////////
//
// INL_StartMouse() - Detects and sets up the mouse
//
///////////////////////////////////////////////////////////////////////////
static
boolean
INL_StartMouse
(
void
)
{
return
false
;
}
///////////////////////////////////////////////////////////////////////////
//
// INL_ShutMouse() - Cleans up after the mouse
...
...
@@ -297,22 +255,22 @@ static void INL_ShutJoy(word joy)
///////////////////////////////////////////////////////////////////////////
void
IN_Startup
(
void
)
{
boolean
checkjoys
,
checkmouse
;
boolean
checkjoys
;
word
i
;
if
(
IN_Started
)
return
;
checkjoys
=
true
;
checkmouse
=
true
;
if
(
MS_CheckParm
(
"nojoy"
))
checkjoys
=
false
;
if
(
MS_CheckParm
(
"nomouse"
))
checkmouse
=
false
;
MousePresent
=
false
;
else
MousePresent
=
true
;
INL_StartKbd
();
MousePresent
=
checkmouse
?
INL_StartMouse
()
:
false
;
for
(
i
=
0
;
i
<
MaxJoys
;
i
++
)
JoysPresent
[
i
]
=
checkjoys
?
INL_StartJoy
(
i
)
:
false
;
...
...
@@ -410,8 +368,8 @@ IN_CheckAck();
realdelta
=
true
;
break
;
case
ctrl_Mouse
:
IN
L
_GetMouseDelta
(
&
dx
,
&
dy
);
buttons
=
IN
L_Get
MouseButtons
();
IN_GetMouseDelta
(
&
dx
,
&
dy
);
buttons
=
IN
_
MouseButtons
();
realdelta
=
true
;
break
;
}
...
...
src/vi_comm.h
View file @
f4003e54
...
...
@@ -166,7 +166,9 @@ extern char *IN_GetScanName(ScanCode);
byte
IN_MouseButtons
();
byte
IN_JoyButtons
();
void
IN_GetMouseDelta
(
int
*
dx
,
int
*
dy
);
void
INL_GetJoyDelta
(
word
joy
,
int
*
dx
,
int
*
dy
);
void
IN_StartAck
();
boolean
IN_CheckAck
();
...
...
src/vi_sdl.c
View file @
f4003e54
...
...
@@ -6,7 +6,8 @@ byte *gfxbuf = NULL;
SDL_Surface
*
surface
;
void
keyboard_handler
(
int
code
,
int
press
);
extern
void
keyboard_handler
(
int
code
,
int
press
);
extern
boolean
InternalKeyboard
[
NumCodes
];
int
main
(
int
argc
,
char
*
argv
[])
{
...
...
@@ -105,9 +106,10 @@ void VL_Startup()
}
gfxbuf
=
surface
->
pixels
;
SDL_WM_SetCaption
(
GAMENAME
,
GAMENAME
);
if
(
surface
->
flags
&
SDL_FULLSCREEN
)
SDL_ShowCursor
(
0
);
SDL_WM_SetCaption
(
GAMENAME
,
GAMENAME
);
}
/*
...
...
@@ -175,6 +177,78 @@ void VL_GetPalette(byte *palette)
static
int
XKeysymToScancode
(
unsigned
int
keysym
)
{
switch
(
keysym
)
{
case
SDLK_KP_ENTER
:
case
SDLK_RETURN
:
return
sc_Enter
;
case
SDLK_ESCAPE
:
return
sc_Escape
;
case
SDLK_SPACE
:
return
sc_Space
;
case
SDLK_BACKSPACE
:
return
sc_BackSpace
;
case
SDLK_TAB
:
return
sc_Tab
;
case
SDLK_LALT
:
return
sc_Alt
;
case
SDLK_LCTRL
:
return
sc_Control
;
case
SDLK_CAPSLOCK
:
return
sc_CapsLock
;
case
SDLK_LSHIFT
:
return
sc_LShift
;
case
SDLK_RSHIFT
:
return
sc_RShift
;
case
SDLK_UP
:
case
SDLK_KP8
:
return
sc_UpArrow
;
case
SDLK_DOWN
:
case
SDLK_KP2
:
return
sc_DownArrow
;
case
SDLK_LEFT
:
case
SDLK_KP4
:
return
sc_LeftArrow
;
case
SDLK_RIGHT
:
case
SDLK_KP6
:
return
sc_RightArrow
;
case
SDLK_HOME
:
return
sc_Home
;
case
SDLK_END
:
return
sc_End
;
case
SDLK_PAGEUP
:
return
sc_PgUp
;
case
SDLK_PAGEDOWN
:
return
sc_PgDn
;
case
SDLK_INSERT
:
return
sc_Insert
;
case
SDLK_DELETE
:
return
sc_Delete
;
case
SDLK_F1
:
return
sc_F1
;
case
SDLK_F2
:
return
sc_F2
;
case
SDLK_F3
:
return
sc_F3
;
case
SDLK_F4
:
return
sc_F4
;
case
SDLK_F5
:
return
sc_F5
;
case
SDLK_F6
:
return
sc_F6
;
case
SDLK_F7
:
return
sc_F7
;
case
SDLK_F8
:
return
sc_F8
;
case
SDLK_F9
:
return
sc_F9
;
case
SDLK_F10
:
return
sc_F10
;
case
SDLK_F11
:
return
sc_F11
;
case
SDLK_F12
:
return
sc_F12
;
case
SDLK_1
:
return
sc_1
;
case
SDLK_2
:
...
...
@@ -183,69 +257,72 @@ static int XKeysymToScancode(unsigned int keysym)
return
sc_3
;
case
SDLK_4
:
return
sc_4
;
case
SDLK_5
:
return
sc_5
;
case
SDLK_6
:
return
sc_6
;
case
SDLK_7
:
return
sc_7
;
case
SDLK_8
:
return
sc_8
;
case
SDLK_9
:
return
sc_9
;
case
SDLK_0
:
return
sc_0
;
case
SDLK_a
:
return
sc_A
;
case
SDLK_b
:
return
sc_B
;
case
SDLK_c
:
return
sc_C
;
case
SDLK_d
:
return
sc_D
;
case
SDLK_e
:
return
sc_E
;
case
SDLK_f
:
return
sc_F
;
case
SDLK_g
:
return
sc_G
;
case
SDLK_h
:
return
sc_H
;
case
SDLK_i
:
return
sc_I
;
case
SDLK_j
:
return
sc_J
;
case
SDLK_k
:
return
sc_K
;
case
SDLK_l
:
return
sc_L
;
case
SDLK_m
:
return
sc_M
;
case
SDLK_n
:
return
sc_N
;
case
SDLK_o
:
return
sc_O
;
case
SDLK_p
:
return
sc_P
;
case
SDLK_q
:
return
sc_Q
;
case
SDLK_r
:
return
sc_R
;
case
SDLK_s
:
return
sc_S
;
case
SDLK_t
:
return
sc_T
;
case
SDLK_u
:
return
sc_U
;
case
SDLK_v
:
return
sc_V
;
case
SDLK_w
:
return
sc_W
;
case
SDLK_x
:
return
sc_X
;
case
SDLK_y
:
return
sc_Y
;
case
SDLK_F8
:
return
sc_F8
;
case
SDLK_F9
:
return
sc_F9
;
case
SDLK_LEFT
:
case
SDLK_KP4
:
return
sc_LeftArrow
;
case
SDLK_RIGHT
:
case
SDLK_KP6
:
return
sc_RightArrow
;
case
SDLK_UP
:
case
SDLK_KP8
:
return
sc_UpArrow
;
case
SDLK_DOWN
:
case
SDLK_KP2
:
return
sc_DownArrow
;
case
SDLK_LCTRL
:
return
sc_Control
;
case
SDLK_LALT
:
return
sc_Alt
;
case
SDLK_LSHIFT
:
return
sc_LShift
;
case
SDLK_RSHIFT
:
return
sc_RShift
;
case
SDLK_ESCAPE
:
return
sc_Escape
;
case
SDLK_SPACE
:
return
sc_Space
;
case
SDLK_KP_ENTER
:
case
SDLK_RETURN
:
return
sc_Enter
;
case
SDLK_TAB
:
return
sc_Tab
;
case
SDLK_BACKSPACE
:
return
sc_BackSpace
;
case
SDLK_z
:
return
sc_Z
;
case
SDLK_PAUSE
:
return
0xE1
;
default:
...
...
@@ -256,6 +333,9 @@ static int XKeysymToScancode(unsigned int keysym)
void
INL_Update
()
{
SDL_Event
event
;
boolean
DebouncedKeyboard
[
NumCodes
];
memcpy
(
DebouncedKeyboard
,
InternalKeyboard
,
sizeof
(
DebouncedKeyboard
));
if
(
SDL_PollEvent
(
&
event
))
{
do
{
...
...
@@ -271,4 +351,50 @@ void INL_Update()
}
}
while
(
SDL_PollEvent
(
&
event
));
}
if
(
InternalKeyboard
[
sc_Alt
]
&&
(
!
DebouncedKeyboard
[
sc_Return
]
&&
InternalKeyboard
[
sc_Return
]))
{
SDL_GrabMode
gm
;
SDL_WM_ToggleFullScreen
(
surface
);
gm
=
SDL_WM_GrabInput
(
SDL_GRAB_QUERY
);
if
(
gm
==
SDL_GRAB_OFF
&&
!
(
surface
->
flags
&
SDL_FULLSCREEN
))
SDL_ShowCursor
(
1
);
else
SDL_ShowCursor
(
0
);
}
if
(
InternalKeyboard
[
sc_Control
]
&&
(
!
DebouncedKeyboard
[
sc_G
]
&&
InternalKeyboard
[
sc_G
]))
{
SDL_GrabMode
gm
;
gm
=
SDL_WM_GrabInput
(
SDL_GRAB_QUERY
);
SDL_WM_GrabInput
((
gm
==
SDL_GRAB_ON
)
?
SDL_GRAB_OFF
:
SDL_GRAB_ON
);
gm
=
SDL_WM_GrabInput
(
SDL_GRAB_QUERY
);
if
(
gm
==
SDL_GRAB_OFF
&&
!
(
surface
->
flags
&
SDL_FULLSCREEN
))
SDL_ShowCursor
(
1
);
else
SDL_ShowCursor
(
0
);
}
/* ctrl-z for iconify window? */
}
void
IN_GetMouseDelta
(
int
*
dx
,
int
*
dy
)
{
int
x
,
y
;
SDL_GetRelativeMouseState
(
&
x
,
&
y
);
if
(
dx
)
*
dx
=
x
;
if
(
dy
)
*
dy
=
y
;
}
byte
IN_MouseButtons
()
{
return
SDL_GetMouseState
(
NULL
,
NULL
);
}
src/wl_menu.c
View file @
f4003e54
...
...
@@ -1896,7 +1896,7 @@ void EnterCtrlData(int index,CustomCtrls *cust,void (*DrawRtn)(int),void (*Print
switch
(
type
)
{
case
MOUSE
:
button
=
0
;
/* TODO */
button
=
IN_MouseButtons
();
switch
(
button
)
{
case
1
:
result
=
1
;
break
;
...
...
src/wl_play.c
View file @
f4003e54
...
...
@@ -310,6 +310,8 @@ void PollMouseMove()
{
int
mousexmove
=
0
,
mouseymove
=
0
;
IN_GetMouseDelta
(
&
mousexmove
,
&
mouseymove
);
controlx
+=
mousexmove
*
10
/
(
13
-
mouseadjustment
);
controly
+=
mouseymove
*
20
/
(
13
-
mouseadjustment
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment