mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-11-25 10:22:23 -05:00
Add mouse (horizontal)
This commit is contained in:
parent
88c9b2f226
commit
b7b6ce3839
21
main.c
21
main.c
@ -60,6 +60,14 @@
|
|||||||
*/
|
*/
|
||||||
int8_t SFG_keyPressed(uint8_t key);
|
int8_t SFG_keyPressed(uint8_t key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Optinal function for mouse/analog controls, gets mouse x and y offset in
|
||||||
|
pixels from the game screen center (to achieve classic FPS mouse controls the
|
||||||
|
platform should center the mouse at the end). If the platform isn't using a
|
||||||
|
mouse, this function should simply return [0,0] offets at each call.
|
||||||
|
*/
|
||||||
|
void SFG_getMouseOffset(int16_t *x, int16_t *y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns time in ms sice program start.
|
Returns time in ms sice program start.
|
||||||
*/
|
*/
|
||||||
@ -1745,7 +1753,6 @@ void SFG_gameStep()
|
|||||||
int8_t shearing = 0;
|
int8_t shearing = 0;
|
||||||
|
|
||||||
#if SFG_PREVIEW_MODE == 0
|
#if SFG_PREVIEW_MODE == 0
|
||||||
|
|
||||||
if (
|
if (
|
||||||
SFG_keyIsDown(SFG_KEY_B) &&
|
SFG_keyIsDown(SFG_KEY_B) &&
|
||||||
!SFG_keyIsDown(SFG_KEY_C) &&
|
!SFG_keyIsDown(SFG_KEY_C) &&
|
||||||
@ -1915,6 +1922,18 @@ void SFG_gameStep()
|
|||||||
SFG_playerRotateWeapon(1);
|
SFG_playerRotateWeapon(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t mouseX, mouseY;
|
||||||
|
|
||||||
|
SFG_getMouseOffset(&mouseX,&mouseY);
|
||||||
|
|
||||||
|
if (mouseX != 0 || mouseY != 0)
|
||||||
|
{
|
||||||
|
SFG_player.camera.direction +=
|
||||||
|
(mouseX * SFG_MOUSE_SENSITIVITY_HORIZONTAL) / 128;
|
||||||
|
|
||||||
|
recomputeDirection = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (recomputeDirection)
|
if (recomputeDirection)
|
||||||
SFG_recompurePLayerDirection();
|
SFG_recompurePLayerDirection();
|
||||||
|
|
||||||
|
@ -76,6 +76,12 @@ int8_t SFG_keyPressed(uint8_t key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SFG_getMouseOffset(int16_t *x, int16_t *y)
|
||||||
|
{
|
||||||
|
*x = 0;
|
||||||
|
*y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
pokitto.begin();
|
pokitto.begin();
|
||||||
|
@ -37,6 +37,11 @@ const uint8_t *sdlKeyboardState;
|
|||||||
|
|
||||||
uint16_t screen[SFG_SCREEN_RESOLUTION_X * SFG_SCREEN_RESOLUTION_Y]; // RGB565 format
|
uint16_t screen[SFG_SCREEN_RESOLUTION_X * SFG_SCREEN_RESOLUTION_Y]; // RGB565 format
|
||||||
|
|
||||||
|
SDL_Window *window;
|
||||||
|
SDL_Renderer *renderer;
|
||||||
|
SDL_Texture *texture;
|
||||||
|
SDL_Surface *screenSurface;
|
||||||
|
|
||||||
void SFG_setPixel(uint16_t x, uint16_t y, uint8_t colorIndex)
|
void SFG_setPixel(uint16_t x, uint16_t y, uint8_t colorIndex)
|
||||||
{
|
{
|
||||||
screen[y * SFG_SCREEN_RESOLUTION_X + x] = paletteRGB565[colorIndex];
|
screen[y * SFG_SCREEN_RESOLUTION_X + x] = paletteRGB565[colorIndex];
|
||||||
@ -54,6 +59,19 @@ void SFG_sleepMs(uint16_t timeMs)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SFG_getMouseOffset(int16_t *x, int16_t *y)
|
||||||
|
{
|
||||||
|
int mX, mY;
|
||||||
|
|
||||||
|
SDL_GetMouseState(&mX,&mY);
|
||||||
|
|
||||||
|
*x = mX - SFG_SCREEN_RESOLUTION_X / 2;
|
||||||
|
*y = mY - SFG_SCREEN_RESOLUTION_Y / 2;
|
||||||
|
|
||||||
|
SDL_WarpMouseInWindow(window,
|
||||||
|
SFG_SCREEN_RESOLUTION_X / 2, SFG_SCREEN_RESOLUTION_Y / 2);
|
||||||
|
}
|
||||||
|
|
||||||
int8_t SFG_keyPressed(uint8_t key)
|
int8_t SFG_keyPressed(uint8_t key)
|
||||||
{
|
{
|
||||||
switch (key)
|
switch (key)
|
||||||
@ -117,11 +135,6 @@ int8_t SFG_keyPressed(uint8_t key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_Window *window;
|
|
||||||
SDL_Renderer *renderer;
|
|
||||||
SDL_Texture *texture;
|
|
||||||
SDL_Surface *screenSurface;
|
|
||||||
|
|
||||||
#ifdef __EMSCRIPTEN__
|
#ifdef __EMSCRIPTEN__
|
||||||
void mainLoopIteration()
|
void mainLoopIteration()
|
||||||
{
|
{
|
||||||
@ -204,6 +217,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
sdlKeyboardState = SDL_GetKeyboardState(NULL);
|
sdlKeyboardState = SDL_GetKeyboardState(NULL);
|
||||||
|
|
||||||
|
SDL_ShowCursor(0);
|
||||||
|
|
||||||
SFG_init();
|
SFG_init();
|
||||||
|
|
||||||
int running = 1;
|
int running = 1;
|
||||||
|
@ -27,6 +27,12 @@
|
|||||||
*/
|
*/
|
||||||
#define SFG_FPS 60
|
#define SFG_FPS 60
|
||||||
|
|
||||||
|
/**
|
||||||
|
On platforms with mouse this sets its horizontal sensitivity. 128 means 1
|
||||||
|
RCL_Unit per mouse pixel travelled.
|
||||||
|
*/
|
||||||
|
#define SFG_MOUSE_SENSITIVITY_HORIZONTAL 32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Width of the screen in pixels. Set this to ACTUAL resolution. If you want the
|
Width of the screen in pixels. Set this to ACTUAL resolution. If you want the
|
||||||
game to run at smaller resolution (with bigger pixels), do his using
|
game to run at smaller resolution (with bigger pixels), do his using
|
||||||
|
Loading…
Reference in New Issue
Block a user