mirror of
https://github.com/Maschell/SDL2_Playground.git
synced 2024-12-25 12:51:48 +01:00
Cleanup
This commit is contained in:
parent
9c189354cb
commit
010c9da01c
@ -33,12 +33,13 @@ CFLAGS := -g -Wall -O2 -ffunction-sections \
|
||||
|
||||
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__
|
||||
|
||||
CXXFLAGS := $(CFLAGS) -std=c++14
|
||||
CXXFLAGS := $(CFLAGS) -std=c++20
|
||||
|
||||
ASFLAGS := -g $(ARCH)
|
||||
LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map)
|
||||
|
||||
LIBS := -lSDL2_mixer -lSDL2 -lSDL2_image -ljpeg -lvorbisidec -logg -lmodplug -lmpg123 -lSDL2_ttf -lfreetype -lpng -lz -lbz2 -lwut
|
||||
LIBS := -lSDL2_mixer -lmodplug -lstdc++ -lm -lmpg123 -lm -lvorbisfile -lvorbis -lm -logg -lSDL2_ttf -lfreetype -lbz2 -lSDL2_image -lpng16 -lz -lm -lz -ljpeg -lSDL2 /opt/devkitpro/wut/lib/libwut.a -lm -Wl,--no-undefined -lSDL2 /opt/devkitpro/wut/lib/libwut.a
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level
|
||||
|
10
README.md
10
README.md
@ -18,3 +18,13 @@ mkdir build && cd build
|
||||
C:\devkitPro\msys2\mingw64\bin\cmake.exe -DSDL2_PATH=C:/devkitPro/msys2/mingw64 -Wno-dev -G "Unix Makefiles" -DCMAKE_CXX_COMPILER=C:/devkitPro/msys2/mingw64/bin/g++.exe DCMAKE_C_COMPILER=C:/devkitPro/msys2/mingw64/bin/gcc.exe ../
|
||||
make
|
||||
```
|
||||
|
||||
## Wii U
|
||||
|
||||
Install these libs from [wiiu-fling](https://gitlab.com/QuarkTheAwesome/wiiu-fling#installing):
|
||||
- `pacman -S wiiu-fling/wiiu-sdl2 wiiu-fling/wiiu-sdl2_gfx wiiu-fling/wiiu-sdl2_image wiiu-fling/wiiu-sdl2_ttf`
|
||||
And these from [dkp-libs](https://devkitpro.org/wiki/devkitPro_pacman):
|
||||
- `pacman -S devkitPPC wut-tools wut wiiu-portlibs dkp-libs/wiiu-sdl2_mixer`
|
||||
|
||||
Build via:
|
||||
`make -f Makefile.wiiu`
|
@ -91,14 +91,14 @@ public:
|
||||
void setTrigger(GuiTrigger *t, int32_t idx = -1);
|
||||
|
||||
//!
|
||||
void resetState(void);
|
||||
void resetState(void) override;
|
||||
|
||||
//!Constantly called to draw the GuiButton
|
||||
void draw(CVideo *video);
|
||||
void draw(CVideo *video) override;
|
||||
|
||||
//!Constantly called to allow the GuiButton to respond to updated input data
|
||||
//!\param t Pointer to a GuiTrigger, containing the current input data from PAD/WPAD
|
||||
void update(GuiController *c);
|
||||
void update(GuiController *c) override;
|
||||
|
||||
sigslot::signal2<GuiButton *, const GuiController *> selected;
|
||||
sigslot::signal2<GuiButton *, const GuiController *> deSelected;
|
||||
|
@ -91,14 +91,6 @@ void GuiFrame::removeAll() {
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
void GuiFrame::close() {
|
||||
//Application::instance()->pushForDelete(this);
|
||||
}
|
||||
|
||||
void GuiFrame::dimBackground(bool d) {
|
||||
dim = d;
|
||||
}
|
||||
|
||||
GuiElement *GuiFrame::getGuiElementAt(uint32_t index) const {
|
||||
if (index >= elements.size()) {
|
||||
return NULL;
|
||||
|
@ -68,49 +68,34 @@ public:
|
||||
|
||||
//!Sets the visibility of the window
|
||||
//!\param v visibility (true = visible)
|
||||
void setVisible(bool v);
|
||||
void setVisible(bool v) override;
|
||||
|
||||
//!Resets the window's state to STATE_DEFAULT
|
||||
void resetState();
|
||||
void resetState() override;
|
||||
|
||||
//!Sets the window's state
|
||||
//!\param s State
|
||||
void setState(int32_t s, int32_t c = -1);
|
||||
void setState(int32_t s, int32_t c = -1) override;
|
||||
|
||||
void clearState(int32_t s, int32_t c = -1);
|
||||
void clearState(int32_t s, int32_t c = -1) override;
|
||||
|
||||
//!Gets the index of the GuiElement inside the window that is currently selected
|
||||
//!\return index of selected GuiElement
|
||||
int32_t getSelected();
|
||||
|
||||
//!Dim the Window's background
|
||||
void dimBackground(bool d);
|
||||
int32_t getSelected() override;
|
||||
|
||||
//!Draws all the elements in this GuiFrame
|
||||
void draw(CVideo *v);
|
||||
void draw(CVideo *v) override;
|
||||
|
||||
//!Updates the window and all elements contains within
|
||||
//!Allows the GuiFrame and all elements to respond to the input data specified
|
||||
//!\param t Pointer to a GuiTrigger, containing the current input data from PAD/WPAD
|
||||
void update(GuiController *t);
|
||||
|
||||
//!virtual Close Window - this will put the object on the delete queue in MainWindow
|
||||
virtual void close();
|
||||
|
||||
//!virtual show window function
|
||||
virtual void show() {}
|
||||
|
||||
//!virtual hide window function
|
||||
virtual void hide() {}
|
||||
|
||||
//!virtual enter main loop function (blocking)
|
||||
virtual void exec() {}
|
||||
void update(GuiController *t) override;
|
||||
|
||||
//!virtual updateEffects which is called by the main loop
|
||||
virtual void updateEffects();
|
||||
void updateEffects() override;
|
||||
|
||||
//!virtual process which is called by the main loop
|
||||
virtual void process();
|
||||
void process() override;
|
||||
|
||||
//! Signals
|
||||
//! On Closing
|
||||
|
@ -25,18 +25,16 @@ class GuiImage : public GuiElement {
|
||||
public:
|
||||
//!\overload
|
||||
//!\param img Pointer to GuiImageData element
|
||||
GuiImage(const std::string &path);
|
||||
explicit GuiImage(const std::string &path);
|
||||
|
||||
//!Destructor
|
||||
virtual ~GuiImage();
|
||||
~GuiImage() override;
|
||||
|
||||
//!Constantly called to draw the image
|
||||
void draw(CVideo *pVideo);
|
||||
|
||||
|
||||
void draw(CVideo *pVideo) override;
|
||||
protected:
|
||||
SDL_Surface *imgSurface = nullptr;
|
||||
SDL_Texture *texture = nullptr;
|
||||
|
||||
virtual void process();
|
||||
void process() override;
|
||||
};
|
||||
|
@ -25,10 +25,10 @@ public:
|
||||
//!Constructor
|
||||
//!\param sound Pointer to the sound data
|
||||
//!\param filesize Length of sound data
|
||||
GuiSound(const char *filepath);
|
||||
explicit GuiSound(const char *filepath);
|
||||
|
||||
//!Destructor
|
||||
virtual ~GuiSound();
|
||||
~GuiSound() override;
|
||||
|
||||
//!Load a file and replace the old one
|
||||
bool Load(const char *filepath);
|
||||
|
@ -15,7 +15,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
****************************************************************************/
|
||||
#include <cstdarg>
|
||||
#include <SDl2/SDL_surface.h>
|
||||
#include <SDL2/SDL_surface.h>
|
||||
#include "GuiText.h"
|
||||
#include "../CVideo.h"
|
||||
#include "../logger.h"
|
||||
|
@ -30,9 +30,9 @@ public:
|
||||
//!\param s Font size
|
||||
//!\param c Font color
|
||||
GuiText(const std::string &t, int32_t s, SDL_Color c, TTF_Font *gFont);
|
||||
virtual ~GuiText();
|
||||
~GuiText() override;
|
||||
|
||||
virtual void draw(CVideo *pVideo);
|
||||
void draw(CVideo *pVideo) override;
|
||||
|
||||
protected:
|
||||
SDL_Surface *textSurface = nullptr;
|
||||
|
@ -16,7 +16,7 @@
|
||||
****************************************************************************/
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <cstdint>
|
||||
|
||||
class GuiController;
|
||||
|
||||
|
@ -10,11 +10,11 @@
|
||||
|
||||
class SDLController : public GuiController {
|
||||
public:
|
||||
SDLController(int32_t channel) : GuiController(channel) {
|
||||
explicit SDLController(int32_t channel) : GuiController(channel) {
|
||||
|
||||
}
|
||||
|
||||
virtual bool update(SDL_Event *e) = 0;
|
||||
virtual bool update(SDL_Event *e, int32_t screenWidth, int32_t screenHeight) = 0;
|
||||
|
||||
|
||||
virtual void before() {
|
||||
|
@ -6,7 +6,7 @@ public:
|
||||
|
||||
}
|
||||
|
||||
virtual bool update(SDL_Event *e) override {
|
||||
bool update(SDL_Event *e, int32_t screenWidth, int32_t screenHeight) override {
|
||||
if (e->type == SDL_JOYBUTTONDOWN) {
|
||||
data.buttons_h |= (1 << e->jbutton.button);
|
||||
} else if (e->type == SDL_JOYBUTTONUP) {
|
||||
|
@ -3,11 +3,11 @@
|
||||
|
||||
class SDLControllerMouse: public SDLController {
|
||||
public:
|
||||
SDLControllerMouse(int32_t channel) : SDLController(channel) {
|
||||
explicit SDLControllerMouse(int32_t channel) : SDLController(channel) {
|
||||
|
||||
}
|
||||
|
||||
virtual bool update(SDL_Event *e) override {
|
||||
virtual bool update(SDL_Event *e, int32_t screenWidth, int32_t screenHeight) override {
|
||||
if (e->type == SDL_MOUSEMOTION) {
|
||||
data.y = e->motion.y;
|
||||
data.x = e->motion.x;
|
||||
|
@ -21,14 +21,14 @@ static GuiTrigger::eButtons vpad_button_map[] = {
|
||||
|
||||
class SDLControllerWiiUGamepad : public SDLController {
|
||||
public:
|
||||
SDLControllerWiiUGamepad(int32_t channel) : SDLController(channel) {
|
||||
explicit SDLControllerWiiUGamepad(int32_t channel) : SDLController(channel) {
|
||||
|
||||
}
|
||||
|
||||
virtual bool update(SDL_Event *e) override {
|
||||
bool update(SDL_Event *e, int32_t screenWidth, int32_t screenHeight) override {
|
||||
if (e->type == SDL_FINGERMOTION) {
|
||||
data.y = e->tfinger.y * 720;
|
||||
data.x = e->tfinger.x * 1280;;
|
||||
data.y = e->tfinger.y * screenHeight;
|
||||
data.x = e->tfinger.x * screenWidth;;
|
||||
data.validPointer = true;
|
||||
} else if (e->type == SDL_FINGERUP) {
|
||||
data.validPointer = false;
|
||||
@ -36,8 +36,7 @@ public:
|
||||
} else if (e->type == SDL_FINGERDOWN) {
|
||||
data.validPointer = true;
|
||||
data.buttons_h |= GuiTrigger::TOUCHED;
|
||||
}
|
||||
if (e->type == SDL_JOYBUTTONDOWN) {
|
||||
} else if (e->type == SDL_JOYBUTTONDOWN) {
|
||||
data.buttons_h |= vpad_button_map[e->jbutton.button];
|
||||
} else if (e->type == SDL_JOYBUTTONUP) {
|
||||
data.buttons_h &= ~vpad_button_map[e->jbutton.button];
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
class SDLControllerWiiUProContoller : public SDLControllerWiiUGamepad {
|
||||
public:
|
||||
SDLControllerWiiUProContoller(int32_t channel) : SDLControllerWiiUGamepad(channel){
|
||||
explicit SDLControllerWiiUProContoller(int32_t channel) : SDLControllerWiiUGamepad(channel){
|
||||
|
||||
}
|
||||
};
|
||||
|
@ -42,11 +42,11 @@ if(axis == targetAxis){ \
|
||||
|
||||
class SDLControllerXboxOne : public SDLController {
|
||||
public:
|
||||
SDLControllerXboxOne(int32_t channel) : SDLController(channel) {
|
||||
explicit SDLControllerXboxOne(int32_t channel) : SDLController(channel) {
|
||||
|
||||
}
|
||||
|
||||
virtual bool update(SDL_Event *e) override {
|
||||
bool update(SDL_Event *e, int32_t screenWidth, int32_t screenHeight) override {
|
||||
if (e->type == SDL_JOYBUTTONDOWN) {
|
||||
data.buttons_h |= xbox_button_map[e->jbutton.button];
|
||||
} else if (e->type == SDL_JOYBUTTONUP) {
|
||||
|
35
src/main.cpp
35
src/main.cpp
@ -13,7 +13,7 @@
|
||||
#include "gui/SDLControllerXboxOne.h"
|
||||
#include "gui/SDLControllerWiiUProContoller.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <cstdio>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <map>
|
||||
@ -51,16 +51,14 @@ bool CheckRunning(){
|
||||
}
|
||||
#endif
|
||||
|
||||
void proccessEvents();
|
||||
|
||||
bool addJoystick(int deviceId, std::map<GuiTrigger::eChannels, SDLController *> &controllerList, std::map<int32_t, GuiTrigger::eChannels>& map);
|
||||
bool addJoystick(int deviceId, std::map<GuiTrigger::eChannels, SDLController *> &controllerList, std::map<int32_t, GuiTrigger::eChannels>& joystickToChannel);
|
||||
|
||||
GuiTrigger::eChannels increaseChannel(GuiTrigger::eChannels channel);
|
||||
|
||||
void removeJoystick(int32_t which, std::map<GuiTrigger::eChannels, SDLController *> &controllerList, std::map<int32_t, GuiTrigger::eChannels>& joystickToChannel);
|
||||
void removeJoystick(int32_t instanceId, std::map<GuiTrigger::eChannels, SDLController *> &controllerList, std::map<int32_t, GuiTrigger::eChannels>& joystickToChannel);
|
||||
|
||||
int main(int argc, char *args[]) {
|
||||
CVideo *video = new CVideo();
|
||||
auto *video = new CVideo();
|
||||
|
||||
#if defined _WIN32
|
||||
// Create the Console
|
||||
@ -110,19 +108,21 @@ int main(int argc, char *args[]) {
|
||||
bool quit = false;
|
||||
SDL_Event e;
|
||||
while (SDL_PollEvent(&e)) {
|
||||
int32_t channel = -1;
|
||||
SDL_JoystickID jId = -1;
|
||||
if(e.type == SDL_JOYDEVICEADDED) {
|
||||
addJoystick(e.jdevice.which, controllerList, joystickToChannel);
|
||||
continue;
|
||||
}else if(e.type == SDL_JOYDEVICEREMOVED) {
|
||||
auto j = SDL_JoystickFromInstanceID(e.jdevice.which);
|
||||
if (j) {
|
||||
removeJoystick(e.jdevice.which, controllerList, joystickToChannel);
|
||||
SDL_JoystickClose(j);
|
||||
continue;
|
||||
}
|
||||
}else if (e.type == SDL_FINGERDOWN || e.type == SDL_FINGERUP || e.type == SDL_FINGERMOTION){
|
||||
controllerList[GuiTrigger::CHANNEL_1]->update(&e);
|
||||
} else if (e.type == SDL_MOUSEBUTTONDOWN || e.type == SDL_MOUSEBUTTONUP || e.type == SDL_MOUSEMOTION){
|
||||
controllerList[GuiTrigger::CHANNEL_1]->update(&e);
|
||||
}else if (e.type == SDL_FINGERDOWN || e.type == SDL_FINGERUP || e.type == SDL_FINGERMOTION ||
|
||||
e.type == SDL_MOUSEBUTTONDOWN || e.type == SDL_MOUSEBUTTONUP || e.type == SDL_MOUSEMOTION){
|
||||
channel = GuiTrigger::CHANNEL_1;
|
||||
} else if (e.type == SDL_JOYAXISMOTION) {
|
||||
jId = e.jaxis.which;
|
||||
} else if (e.type == SDL_JOYHATMOTION) {
|
||||
@ -136,9 +136,12 @@ int main(int argc, char *args[]) {
|
||||
|
||||
if(jId != -1){
|
||||
if(joystickToChannel.find(jId) != joystickToChannel.end()){
|
||||
controllerList[joystickToChannel[jId]]->update(&e);
|
||||
channel = joystickToChannel[jId];
|
||||
}
|
||||
}
|
||||
if(channel != -1){
|
||||
controllerList[static_cast<GuiTrigger::eChannels>(channel)]->update(&e, video->getWidth(), video->getHeight());
|
||||
}
|
||||
}
|
||||
if(quit){
|
||||
break;
|
||||
@ -226,12 +229,8 @@ GuiTrigger::eChannels increaseChannel(GuiTrigger::eChannels channel) {
|
||||
return GuiTrigger::CHANNEL_4;
|
||||
case GuiTrigger::CHANNEL_4:
|
||||
return GuiTrigger::CHANNEL_5;
|
||||
case GuiTrigger::CHANNEL_5:
|
||||
case GuiTrigger::CHANNEL_ALL:
|
||||
return GuiTrigger::CHANNEL_ALL;
|
||||
}
|
||||
return GuiTrigger::CHANNEL_ALL;
|
||||
}
|
||||
|
||||
void proccessEvents() {
|
||||
|
||||
int res = 0;
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user