Skip to content

Commit

Permalink
Implemented feedback for stick reading
Browse files Browse the repository at this point in the history
  • Loading branch information
MrDoubleA232 authored and Bluenaxela committed Jun 27, 2024
1 parent 91a8af1 commit 184dfbf
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 20 deletions.
17 changes: 4 additions & 13 deletions LunaDll/Input/LunaGameController.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include <SDL2/SDL.h>
#include <memory>
#include <tuple>
#include "LunaGameController.h"
#if !defined(BUILDING_SMBXLAUNCHER)
# ifdef _WIN32
Expand Down Expand Up @@ -486,24 +487,14 @@ std::string LunaGameControllerManager::getSelectedControllerName(int playerNum)
return "Keyboard";
}

int LunaGameControllerManager::getSelectedControllerStickX(int playerNum)
std::tuple<int, int> LunaGameControllerManager::getSelectedControllerStickPosition(int playerNum)
{
LunaGameController* controller = getController(playerNum);
if (controller != nullptr)
{
return controller->getStickX();
return controller->getStickPosition();
}
return 0;
}

int LunaGameControllerManager::getSelectedControllerStickY(int playerNum)
{
LunaGameController* controller = getController(playerNum);
if (controller != nullptr)
{
return controller->getStickY();
}
return 0;
return {0, 0};
}

void LunaGameControllerManager::rumbleSelectedController(int playerNum, int ms, float strength)
Expand Down
11 changes: 5 additions & 6 deletions LunaDll/Input/LunaGameController.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <SDL2/SDL.h>
#include <vector>
#include <tuple>
#include <unordered_map>

struct joyinfoex_tag;
Expand Down Expand Up @@ -55,8 +56,7 @@ class LunaGameController
inline void clearActive() { activeFlag = false; }
inline unsigned int getPadState() const { return padState; }
inline unsigned int getButtonState() const { return buttonState; }
inline int getStickX() const { return static_cast<int>(xAxis); }
inline int getStickY() const { return static_cast<int>(yAxis); }
inline std::tuple<int, int> getStickPosition() const { return {xAxis, yAxis}; }

SDL_JoystickPowerLevel getPowerLevel();

Expand Down Expand Up @@ -117,8 +117,8 @@ class LunaGameController
unsigned int axisPadState;
unsigned int padState;
unsigned int buttonState;
unsigned int xAxis;
unsigned int yAxis;
int xAxis;
int yAxis;
bool activeFlag;
std::vector<int> joyButtonMap;
};
Expand Down Expand Up @@ -160,8 +160,7 @@ class LunaGameControllerManager
public:
SDL_JoystickPowerLevel getSelectedControllerPowerLevel(int playerNum);
std::string getSelectedControllerName(int playerNum);
int getSelectedControllerStickX(int playerNum);
int getSelectedControllerStickY(int playerNum);
std::tuple<int, int> getSelectedControllerStickPosition(int playerNum);
void rumbleSelectedController(int playerNum, int ms, float strength);
LunaGameController* getController(int playerNum);
private:
Expand Down
4 changes: 3 additions & 1 deletion LunaDll/LuaMain/LuaProxyFFI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,9 @@ extern "C" {
};
FFI_EXPORT(StickPos) LunaLuaGetSelectedControllerStickPosition(int playerNum)
{
return {gLunaGameControllerManager.getSelectedControllerStickX(playerNum), gLunaGameControllerManager.getSelectedControllerStickY(playerNum)};
const auto stickPos = gLunaGameControllerManager.getSelectedControllerStickPosition(playerNum);

return {std::get<0>(stickPos), std::get<1>(stickPos)};
}

FFI_EXPORT(const char*) LunaLuaGetSelectedControllerName(int playerNum)
Expand Down

0 comments on commit 184dfbf

Please sign in to comment.