From 28face21678315f7eca7114aa3cfd96a5890c724 Mon Sep 17 00:00:00 2001 From: Pera Pisar Date: Sun, 21 Apr 2019 12:50:20 +0200 Subject: [PATCH] Linux changes (#62) * Added RPATH to executable; lowercased name; fixed MRIVERSION option; made it look like an actual executable * Silencing some compiler warnings * Getting rid of journal binding header, fixing bugs with the Niko binding and synchronizing the two * Journal update to fix several bugs * Fix libpng warning by running mogrify on shrimp.png * Improved automation of the Linux build * Improved some aspects of wallpaper handling * Bump default Ruby version to 2.5 --- .gitignore | 4 +- CMakeLists.txt | 1 - binding-mri/journal-binding.cpp | 33 ++++-- binding-mri/journal-binding.h | 48 --------- binding-mri/niko-binding.cpp | 24 +++-- binding-mri/wallpaper-binding.cpp | 11 +- cleanup.sh | 4 +- journal/unix/journal.py | 109 ++++++++++++-------- libraries.rb | 13 +++ make-oneshot-linux.sh | 79 +++++++++----- mkxp.pro | 14 ++- patches/assets/Graphics/Pictures/shrimp.png | Bin 0 -> 85642 bytes src/al-util.h | 1 + src/eventthread.h | 4 - src/filesystem.cpp | 3 +- src/filesystem.h | 3 +- src/main.cpp | 4 +- src/oneshot.cpp | 2 + src/settingsmenu.cpp | 1 + src/sharedstate.cpp | 2 +- steamshim_parent/CMakeLists.txt | 45 +++++--- 21 files changed, 230 insertions(+), 175 deletions(-) delete mode 100644 binding-mri/journal-binding.h create mode 100644 libraries.rb create mode 100644 patches/assets/Graphics/Pictures/shrimp.png diff --git a/.gitignore b/.gitignore index d0755b1..5a3af07 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ __pycache__ /debug /release steamshim_parent/build/ +*.out object_script.* rpgscript.bat @@ -41,7 +42,6 @@ oneshot_JA_2_ver3_checked.pot oneshot_JA_Mariko1_WIP.pot *.pot xScripts.rxdata -OneShot .qmake.stash CMakeCache.txt @@ -55,4 +55,4 @@ package/ oclint/ -steamworks/ \ No newline at end of file +steamworks/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cb38bd..d735c06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -239,7 +239,6 @@ set(BINDING_HEADERS binding-mri/sceneelement-binding.h binding-mri/viewportelement-binding.h binding-mri/flashable-binding.h - binding-mri/journal-binding.h ) set(BINDING_SOURCE binding-mri/binding-mri.cpp diff --git a/binding-mri/journal-binding.cpp b/binding-mri/journal-binding.cpp index 2407c5c..7ca301f 100644 --- a/binding-mri/journal-binding.cpp +++ b/binding-mri/journal-binding.cpp @@ -1,13 +1,20 @@ -#include "journal-binding.h" #include "binding-util.h" #include "binding-types.h" #include "pipe.h" #include "debugwriter.h" #include "i18n.h" -#include +//OS-Specific code +#if defined _WIN32 + #define OS_W32 +#elif defined __APPLE__ || __linux__ + #define LINUX + #ifdef __APPLE__ + #define OS_OSX + #else + #define OS_LINUX + #endif -#ifdef LINUX #include #include #include @@ -15,12 +22,25 @@ #include #endif #include - #include + #include #include #include +#endif - std::string PIPE_PATH = std::string(getpwuid(getuid())->pw_dir) + "/.oneshot-pipe"; +#include +#define BUFFER_SIZE 256 + +static SDL_Thread *thread = NULL; +static SDL_mutex *mutex = NULL; +static volatile char lang_buffer[BUFFER_SIZE]; +static volatile char message_buffer[BUFFER_SIZE]; +static volatile bool active = false; +static volatile int message_len = 0; + +#ifdef LINUX + static std::string PIPE_PATH = std::string(getpwuid(getuid())->pw_dir) + "/.oneshot-pipe"; + static volatile int out_pipe = -1; void cleanup_pipe() { unlink(PIPE_PATH.c_str()); @@ -52,9 +72,8 @@ int server_thread(void *data) } CloseHandle(pipe); #else - if (FILE *file = fopen(PIPE_PATH.c_str(), "r")) + if (access(PIPE_PATH.c_str(), F_OK) != -1) { - fclose(file); out_pipe = open(PIPE_PATH.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); SDL_LockMutex(mutex); active = true; diff --git a/binding-mri/journal-binding.h b/binding-mri/journal-binding.h deleted file mode 100644 index 74b7d68..0000000 --- a/binding-mri/journal-binding.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "binding-util.h" -#include "binding-types.h" -#include "pipe.h" -#include "debugwriter.h" -#include "i18n.h" - -#include - -//OS-Specific code -#if defined _WIN32 - #define OS_W32 -#elif defined __APPLE__ || __linux__ - #define LINUX - #ifdef __APPLE__ - #define OS_OSX - #else - #define OS_LINUX - #endif - - #include - #include - #include - #ifdef OS_LINUX - #include - #endif - #include - #include -#else - #error "Operating system not detected." -#endif - -#define BUFFER_SIZE 256 - -static SDL_Thread *thread = NULL; -static SDL_mutex *mutex = NULL; -static volatile char lang_buffer[BUFFER_SIZE]; -static volatile char message_buffer[BUFFER_SIZE]; -static volatile bool active = false; -static volatile int message_len = 0; - -#ifdef LINUX - static volatile int out_pipe = -1; - void cleanup_pipe(); -#endif - -int server_thread(void *data); diff --git a/binding-mri/niko-binding.cpp b/binding-mri/niko-binding.cpp index 8038e93..a73ac0e 100644 --- a/binding-mri/niko-binding.cpp +++ b/binding-mri/niko-binding.cpp @@ -1,8 +1,8 @@ #include "binding-util.h" #include "binding-types.h" #include "sharedstate.h" -#include "eventthread.h" #include "debugwriter.h" +#include "eventthread.h" #if defined _WIN32 #define OS_W32 @@ -22,7 +22,10 @@ #include #endif #include - #include + #include + #include + #include + #include #endif #include @@ -42,12 +45,12 @@ static volatile bool active = false; static volatile int message_len = 0; #ifdef LINUX - #define PIPE_PATH "/tmp/oneshot-pipe" + static std::string NIKO_PIPE_PATH = std::string(getpwuid(getuid())->pw_dir) + "/.oneshot-niko-pipe"; static volatile int out_pipe = -1; void niko_cleanup_pipe() { - unlink(PIPE_PATH); - remove(PIPE_PATH); + unlink(NIKO_PIPE_PATH.c_str()); + remove(NIKO_PIPE_PATH.c_str()); } #endif @@ -75,9 +78,8 @@ int niko_server_thread(void *data) } CloseHandle(pipe); #else - if (FILE *file = fopen(PIPE_PATH, "r")) { - fclose(file); - out_pipe = open(PIPE_PATH, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); + if (access(NIKO_PIPE_PATH.c_str(), F_OK) != -1) { + out_pipe = open(NIKO_PIPE_PATH.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); SDL_LockMutex(mutex); active = true; if (message_len > 0) @@ -114,10 +116,10 @@ RB_METHOD(nikoPrepare) #ifdef OS_OSX journal = std::string(path) + "/_______.app/Contents/MacOS/_______"; #else - journal = std::string(path) + "_______"; + journal = std::string(path) + "/_______"; #endif - // Run the binary + // Run the binary. pid_t pid = fork(); if (pid == 0) { execl(journal.c_str(), journal.c_str(), (char*)"niko", (char*)0); @@ -194,7 +196,7 @@ void nikoBindingInit() { mutex = SDL_CreateMutex(); #if defined __linux - mkfifo(PIPE_PATH, 0666); + mkfifo(NIKO_PIPE_PATH.c_str(), 0666); atexit(niko_cleanup_pipe); #endif diff --git a/binding-mri/wallpaper-binding.cpp b/binding-mri/wallpaper-binding.cpp index f21b14f..344825b 100644 --- a/binding-mri/wallpaper-binding.cpp +++ b/binding-mri/wallpaper-binding.cpp @@ -161,7 +161,7 @@ desktop = "kde_error"; } } else { - fallbackPath = std::string(getenv("HOME")) + "/Desktop/hint.png"; + fallbackPath = std::string(getenv("HOME")) + "/Desktop/ONESHOT_hint.png"; } } #endif @@ -353,6 +353,8 @@ end: std::ifstream srcHint(gameDirStr + path); std::ofstream dstHint(fallbackPath); dstHint << srcHint.rdbuf(); + srcHint.close(); + dstHint.close(); } #endif #endif @@ -429,7 +431,7 @@ RB_METHOD(wallpaperReset) "var data = {"; // Plugin, picture, color, mode, blur for (auto const& x : defPlugins) { - command << "\"" + x.first + "\": {" + command << "\"" << x.first << "\": {" << "plugin: \"" << x.second << "\""; if (defPictures.find(x.first) != defPictures.end()) { std::string picture = defPictures[x.first]; @@ -474,7 +476,7 @@ RB_METHOD(wallpaperReset) Debug() << "Reset result:" << result; } else { if (remove(fallbackPath.c_str()) != 0) { - Debug() << "Failed to delete hint.png!"; + Debug() << "Failed to delete:" << fallbackPath; } } #endif @@ -494,8 +496,7 @@ void wallpaperBindingInit() #ifdef __linux__ void wallpaperBindingTerminate() { - // Clean up - // We assume Gio::Settings destructor will be automatically called + // Clean up. if (desktop == "xfce") { xfconf_shutdown(); } diff --git a/cleanup.sh b/cleanup.sh index 61a250d..60f62b0 100755 --- a/cleanup.sh +++ b/cleanup.sh @@ -15,7 +15,7 @@ rm -rf *.vcxproj.filters rm -rf *.user rm -rf _______.app rm -rf OneShot.app -rm -rf OneShot +rm -rf oneshot rm -rf conanbuildinfo.cmake rm -rf CMakeFiles rm -rf cmake_install.cmake @@ -30,4 +30,4 @@ then make distclean else echo "" -fi \ No newline at end of file +fi diff --git a/journal/unix/journal.py b/journal/unix/journal.py index b7973f6..dd04bc5 100644 --- a/journal/unix/journal.py +++ b/journal/unix/journal.py @@ -6,63 +6,82 @@ from PyQt5.QtCore import Qt, QEvent, QThread, pyqtSignal, QRect, QRectF, QTimer, from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget, QLabel from PyQt5.QtGui import QIcon, QPixmap, QPainter -if sys.platform == "win32": - pipe_path = '\\\\.\\pipe\\oneshot-journal-to-game' - import ctypes.wintypes - buff = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) - ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf) - documents_path = os.path.join(buf.value, 'My Games') -else: - pipe_path = os.path.expanduser('~/.oneshot-pipe') - documents_path = os.path.expanduser('~/Documents') +def get_documents_path(): + if sys.platform == 'win32': + import ctypes.wintypes + buff = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) + ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf) + return os.path.join(buf.value, 'My Games') + else: + return os.path.expanduser('~/Documents') + +def get_pipe_path(mode='journal'): + if sys.platform == 'win32': + return '\\\\.\\pipe\\oneshot-journal-to-game' + else: + if mode == 'niko': + return os.path.expanduser('~/.oneshot-niko-pipe') + return os.path.expanduser('~/.oneshot-pipe') left_close = False -if sys.platform == "darwin": left_close = True +if sys.platform == 'darwin': left_close = True try: base_path = sys._MEIPASS except AttributeError: base_path = os.path.abspath('.') -class WatchPipe(QThread): +class PipeThread(QThread): + def __init__(self, *args, **kwargs): + self.pipe = kwargs['pipe'] + del kwargs['pipe'] + super().__init__(*args, **kwargs) + +class WatchPipe(PipeThread): change_image = pyqtSignal(str) def run(self): while True: - while not os.path.exists(pipe_path): time.sleep(0.1) + self.change_image.emit('default_en') + while not os.path.exists(self.pipe): time.sleep(0.1) - pipe = open(pipe_path, 'r') + pipe = open(self.pipe, 'r') pipe.flush() - was_nonzero = False + was_nondefault = False - while os.path.exists(pipe_path): # Make sure the file still exists and wasn't cleaned up by SyngleChance + while os.path.exists(self.pipe): # Make sure the file still exists and wasn't cleaned up by SyngleChance message = os.read(pipe.fileno(), 256) if len(message) > 0: - was_nonzero = True - self.change_image.emit(message.decode()) + m = message.decode() + if m != 'default_en': + was_nondefault = True + self.change_image.emit(m) else: - st = os.stat(pipe_path) - if st.st_size == 0 and was_nonzero: - self.change_image.emit("CLOSE") + try: + st = os.stat(self.pipe) + if st.st_size == 0 and was_nondefault: + self.change_image.emit('CLOSE') + except FileNotFoundError: + pass time.sleep(0.05) -class AnimationTimer(QThread): +class AnimationTimer(PipeThread): next_frame = pyqtSignal() start_animation = pyqtSignal(int, int) def run(self): while True: - while not os.path.exists(pipe_path): time.sleep(0.1) + while not os.path.exists(self.pipe): time.sleep(0.1) - pipe = open(pipe_path, 'r') + pipe = open(self.pipe, 'r') pipe.flush() - while os.path.exists(pipe_path): # Make sure the file still exists and wasn't cleaned up by SyngleChance + while os.path.exists(self.pipe): # Make sure the file still exists and wasn't cleaned up by SyngleChance message = os.read(pipe.fileno(), 256) if len(message) > 0: m = message.decode() - if not "," in m: pass - x, y = m.split(",") + if not ',' in m: pass + x, y = m.split(',') self.start_animation.emit(int(x), int(y)) while True: @@ -82,7 +101,6 @@ class Journal(QWidget): self.mousedownpos = QPoint(0, 0) self.label = QLabel(self) - self.change_image('default_en') self.close_label = QLabel(self) self.close_label.setPixmap(QPixmap(os.path.join(base_path, 'images', 'close.png'))) @@ -90,7 +108,9 @@ class Journal(QWidget): self.close_button = True - if "linux" in sys.platform: self.setWindowFlags(Qt.FramelessWindowHint) + self.change_image('default_en') + + if 'linux' in sys.platform: self.setWindowFlags(Qt.FramelessWindowHint) else: self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint | Qt.NoDropShadowWindowHint) self.setAttribute(Qt.WA_TranslucentBackground) self.setMouseTracking(True) @@ -118,21 +138,24 @@ class Journal(QWidget): self.setGeometry(frameGm.x() + pos.x() - self.mousedownpos.x(), frameGm.y() + pos.y() - self.mousedownpos.y(), 800, 600) def change_image(self, image): - if image == "CLOSE": + if image == 'CLOSE': self.app.quit() return - if not "_" in image: return + if not '_' in image: return name, lang = image.split('_', 1) - if name != "default": + if name == 'default' or name == 'save' or name == 'final': + self.close_label.show() + self.close_button = True + else: self.close_label.hide() self.close_button = False if lang == 'en': img = os.path.join(base_path, 'images', '{}.png'.format(name)) else: img = os.path.join(base_path, 'images', lang.upper(), '{}.png'.format(name)) if not os.path.exists(img): return - + self.pixmap = QPixmap(img) self.label.setPixmap(self.pixmap) @@ -179,9 +202,10 @@ class Niko(QWidget): if __name__ == '__main__': app = QApplication(sys.argv) - if len(sys.argv) == 2 and sys.argv[1] == "niko": - # "Niko-leaves-the-screen" mode - thread = AnimationTimer() + default_pipe_path = get_pipe_path() + if len(sys.argv) == 2 and sys.argv[1] == 'niko': + # "Niko-leaves-the-screen" mode. + thread = AnimationTimer(pipe = get_pipe_path('niko')) niko = Niko(screen_height = app.primaryScreen().size().height(), app = app, thread = thread) @@ -190,9 +214,9 @@ if __name__ == '__main__': thread.start() else: - # Author's Journal mode + # Author's Journal mode. journal = Journal(app = app) - save_path = os.path.join(documents_path, 'Oneshot', 'save_progress.oneshot') + save_path = os.path.join(get_documents_path(), 'Oneshot', 'save_progress.oneshot') if os.path.exists(save_path): with open(save_path, 'rb') as save: save.seek(-8, os.SEEK_END) @@ -201,17 +225,18 @@ if __name__ == '__main__': if lang == 'en_US': lang = 'en' journal.change_image('save_' + lang) else: - thread = WatchPipe() + thread = WatchPipe(pipe = default_pipe_path) thread.change_image.connect(journal.change_image) thread.start() - pipe_file = open(pipe_path, "w+") - pipe_file.close() + if not os.path.exists(default_pipe_path): + pipe_file = open(default_pipe_path, 'w+') + pipe_file.close() app.exec_() try: - os.remove(pipe_path) + os.remove(default_pipe_path) except: - # Most likely due to the file being in use. Ignore. + # Most likely due to the file being in use, ignore. pass diff --git a/libraries.rb b/libraries.rb new file mode 100644 index 0000000..c203955 --- /dev/null +++ b/libraries.rb @@ -0,0 +1,13 @@ +#!/usr/bin/ruby +#encoding: utf-8 +require 'fileutils' + +line = gets +files = [] +while line + if line =~ / => (\/.*) \(/ + files << $1 + end + line = gets +end +FileUtils.cp(files, 'libs') diff --git a/make-oneshot-linux.sh b/make-oneshot-linux.sh index d4adede..d0d520e 100755 --- a/make-oneshot-linux.sh +++ b/make-oneshot-linux.sh @@ -3,50 +3,75 @@ set -e cd `dirname $0` -# User-configurable variables +# User-configurable variables. linux_version="0.1.0" make_threads=8 -ONESHOT_PATH=$HOME/.steam/steam/steamapps/common/OneShot -STEAMWORKS_PATH=/usr/steamworks +oneshot_id=420530 +ONESHOT_PATH=$HOME/.local/share/Steam/steamapps/common/OneShot +STEAMWORKS_PATH=$(realpath ..)/steamworks -# Colors +# Colors. white="\033[0;37m" # White - Regular bold="\033[1;37m" # White - Bold cyan="\033[1;36m" # Cyan - Bold green="\033[1;32m" # Green - Bold color_reset="\033[0m" # Reset Colors -echo "${white}Compiling ${bold}SyngleChance v${linux_version} ${white}engine for Linux...${color_reset}\n" +echo -e "${white}Compiling ${bold}SyngleChance v${linux_version} ${white}engine for Linux...${color_reset}\n" -# Generate makefile and build main + journal -echo "-> ${cyan}Generate makefile...${color_reset}" -qmake -qt=5 -echo "-> ${cyan}Compile engine...${color_reset}" -make -j${make_threads} -echo "-> ${cyan}Compile steamshim...${color_reset}" +# Generate makefile. +echo -e "-> ${cyan}Generate makefile...${color_reset}" +export MRIVERSION=$(echo "puts RUBY_VERSION.split('.').slice(0, 2).join('.')" | ruby) +export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig +qmake mkxp.pro > oneshot.qmake.out + +# Compile OneShot. +echo -e "-> ${cyan}Compile engine...${color_reset}" +make -j${make_threads} > oneshot.make.out + +# Compile steamshim. +echo -e "-> ${cyan}Compile steamshim...${color_reset}" cd steamshim_parent -mkdir build && cd build -cmake -DSTEAMWORKS_PATH=${STEAMWORKS_PATH} .. -make -j${make_threads} +mkdir build +cd build +cmake -DSTEAMWORKS_PATH=${STEAMWORKS_PATH} .. > steamshim.cmake.out +cp "$STEAMWORKS_PATH/redistributable_bin/linux64/libsteam_api.so" . +make -j${make_threads} > steamshim.make.out cd ../.. -echo "-> ${cyan}Compile journal...${color_reset}" -pyinstaller journal/unix/journal.spec --onefile --windowed -# Set version number -echo "-> ${cyan}Set version number...${color_reset}" +# Compile Journal. +echo -e "-> ${cyan}Compile journal...${color_reset}" +pyinstaller journal/unix/journal.spec --windowed -# Compile scripts -echo "-> ${cyan}Compile xScripts.rxdata...${color_reset}" -ruby rpgscript.rb ./scripts "$ONESHOT_PATH" +# Compile scripts. +echo -e "-> ${cyan}Compile xScripts.rxdata...${color_reset}" +ruby rpgscript.rb ./scripts "$ONESHOT_PATH" > rpgscript.out -echo "-> ${cyan}Install OneShot apps to Steam directory...${color_reset}" -cp -rf "./OneShot" "$ONESHOT_PATH" -cp -rf "./dist/_______" "$ONESHOT_PATH" +# Copy results. +echo -e "-> ${cyan}Install OneShot apps to Steam directory...${color_reset}" +yes | cp -r dist/_______/* "$ONESHOT_PATH" +yes | cp oneshot "$ONESHOT_PATH" +yes | cp steamshim_parent/build/steamshim "$ONESHOT_PATH" +echo "$oneshot_id" > "$ONESHOT_PATH/steam_appid.txt" -# Cleanup -echo "-> ${cyan}Cleanup files...${color_reset}" +# Copy libraries. +echo -e "-> ${cyan}Install OneShot libraries to Steam directory...${color_reset}" +mkdir libs +ldd oneshot | ruby libraries.rb +ldd steamshim_parent/build/steamshim | ruby libraries.rb +yes | cp libs/* "$ONESHOT_PATH" + +# Cleanup. +echo -e "-> ${cyan}Cleanup files...${color_reset}" rm -rf journal/unix/__pycache__ rm -rf build rm -rf dist +rm -rf steamshim_parent/build +rm -rf libs +make clean > clean.out +rm -f *.out +rm Makefile +rm oneshot +rm .qmake.stash -echo "\n${green}Complete! ${white}Please report any issues to https://github.com/GooborgStudios/synglechance/issues${color_reset}" +echo -e "\n${green}Complete! ${white}Please report any issues to https://github.com/GooborgStudios/synglechance/issues${color_reset}" diff --git a/mkxp.pro b/mkxp.pro index 7256710..d27f202 100644 --- a/mkxp.pro +++ b/mkxp.pro @@ -2,7 +2,7 @@ TEMPLATE = app QT = -TARGET = OneShot +TARGET = oneshot DEPENDPATH += src shader assets INCLUDEPATH += . src @@ -47,10 +47,14 @@ unix { SOURCES += src/mac-desktop.mm } !macx: { - QMAKE_CXXFLAGS += -g + CONFIG(debug, debug|release) { + QMAKE_CXXFLAGS += -g + } PKGCONFIG += gtk+-3.0 gdk-3.0 libxfconf-0 INCLUDEPATH += /usr/include/AL /usr/local/include/AL LIBS += -lX11 + QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\'" + QMAKE_LFLAGS += -no-pie } } @@ -245,8 +249,9 @@ BINDING_NULL { } BINDING_MRI { + MRIVERSION = $$(MRIVERSION) isEmpty(MRIVERSION) { - MRIVERSION = 2.3 + MRIVERSION = 2.5 } PKGCONFIG += ruby-$$MRIVERSION @@ -267,8 +272,7 @@ BINDING_MRI { binding-mri/disposable-binding.h \ binding-mri/sceneelement-binding.h \ binding-mri/viewportelement-binding.h \ - binding-mri/flashable-binding.h \ - binding-mri/journal-binding.h + binding-mri/flashable-binding.h SOURCES += \ binding-mri/binding-mri.cpp \ diff --git a/patches/assets/Graphics/Pictures/shrimp.png b/patches/assets/Graphics/Pictures/shrimp.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb8c1028b091df782d6b76d6645f55418c4f707 GIT binary patch literal 85642 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 literal 0 HcmV?d00001 diff --git a/src/al-util.h b/src/al-util.h index 51801e7..d096451 100644 --- a/src/al-util.h +++ b/src/al-util.h @@ -223,6 +223,7 @@ inline ALenum chooseALFormat(int sampleSize, int channelCount) case 1 : return AL_FORMAT_MONO8; case 2 : return AL_FORMAT_STEREO8; } + /* falls through */ case 2 : switch (channelCount) { diff --git a/src/eventthread.h b/src/eventthread.h index 729cc67..226461e 100644 --- a/src/eventthread.h +++ b/src/eventthread.h @@ -253,8 +253,6 @@ struct RGSSThreadData UnidirMessage bindingUpdateMsg; SyncPoint syncPoint; - const char *argv0; - SDL_Window *window; ALCdevice *alcDev; @@ -269,14 +267,12 @@ struct RGSSThreadData int inputTextLimit; RGSSThreadData(EventThread *ethread, - const char *argv0, SDL_Window *window, ALCdevice *alcDev, int refreshRate, const Config& newconf) : allowExit(true), ethread(ethread), - argv0(argv0), window(window), alcDev(alcDev), sizeResoRatio(1, 1), diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 1b7e032..9bbbc32 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -312,8 +312,7 @@ struct FileSystemPrivate bool havePathCache; }; -FileSystem::FileSystem(const char *argv0, - bool allowSymlinks) +FileSystem::FileSystem(bool allowSymlinks) { p = new FileSystemPrivate; p->havePathCache = false; diff --git a/src/filesystem.h b/src/filesystem.h index 1f9f79f..fc9a3c9 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -30,8 +30,7 @@ class SharedFontState; class FileSystem { public: - FileSystem(const char *argv0, - bool allowSymlinks); + FileSystem(bool allowSymlinks); ~FileSystem(); void addPath(const char *path); diff --git a/src/main.cpp b/src/main.cpp index d3c51a8..a803bd7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -231,7 +231,7 @@ int main(int argc, char *argv[]) } #endif - /* Initialize physfs here so that config can call PHYSFS_getPrefDir */ + /* Initialize physfs here so that config can call PHYSFS_getPrefDir */ PHYSFS_init(argv[0]); /* now we load the config */ @@ -329,7 +329,7 @@ int main(int argc, char *argv[]) conf.syncToRefreshrate = false; EventThread eventThread; - RGSSThreadData rtData(&eventThread, argv[0], win, + RGSSThreadData rtData(&eventThread, win, alcDev, mode.refresh_rate, conf); #ifndef STEAM diff --git a/src/oneshot.cpp b/src/oneshot.cpp index ca70a38..87a68fe 100644 --- a/src/oneshot.cpp +++ b/src/oneshot.cpp @@ -310,6 +310,8 @@ Oneshot::Oneshot(RGSSThreadData &threadData) : desktopEnv = "deepin"; } } + + Debug() << "Desktop env :" << desktopEnv; #endif /******** diff --git a/src/settingsmenu.cpp b/src/settingsmenu.cpp index 4489690..269897c 100644 --- a/src/settingsmenu.cpp +++ b/src/settingsmenu.cpp @@ -1255,6 +1255,7 @@ bool SettingsMenu::onEvent(const SDL_Event &event, default: break; } + break; case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERAXISMOTION: diff --git a/src/sharedstate.cpp b/src/sharedstate.cpp index d5e79fb..70f1513 100644 --- a/src/sharedstate.cpp +++ b/src/sharedstate.cpp @@ -96,7 +96,7 @@ struct SharedStatePrivate SharedStatePrivate(RGSSThreadData *threadData) : bindingData(0), sdlWindow(threadData->window), - fileSystem(threadData->argv0, threadData->config.allowSymlinks), + fileSystem(threadData->config.allowSymlinks), eThread(*threadData->ethread), rtData(*threadData), config(threadData->config), diff --git a/steamshim_parent/CMakeLists.txt b/steamshim_parent/CMakeLists.txt index 59803e5..ed8ea55 100644 --- a/steamshim_parent/CMakeLists.txt +++ b/steamshim_parent/CMakeLists.txt @@ -1,18 +1,35 @@ -add_executable(steamshim WIN32 - steamshim_parent.cpp) +cmake_minimum_required(VERSION 2.8.11) -target_compile_definitions(steamshim PRIVATE - -DGAME_LAUNCH_NAME="oneshot") +set(STEAMWORKS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../steamworks" CACHE PATH "Path to Steamworks folder") +set(GAME_LAUNCH_NAME "oneshot" CACHE STRING "Game launch name") +option(DEBUG "Debug mode" OFF) -if(DEBUG) - target_compile_definitions(steamshim PRIVATE - -DSTEAMSHIM_DEBUG) -endif() +set(SOURCES + steamshim_parent.cpp +) -if(WIN32) - target_sources(steamshim PRIVATE - resources.rc) -endif() +include_directories(${STEAMWORKS_PATH}/public) -target_link_libraries(steamshim PRIVATE - CONAN_PKG::steamworks) +add_definitions(-DGAME_LAUNCH_NAME="${GAME_LAUNCH_NAME}") + +IF(DEBUG) + add_definitions(-DSTEAMSHIM_DEBUG) +ENDIF() + +IF(APPLE) + find_library(steamworks NAMES steam_api steam_api64 PATHS ${STEAMWORKS_PATH}/redistributable_bin/osx32) +ELSEIF(WIN32) + list(APPEND SOURCES resources.rc) + find_library(steamworks NAMES steam_api steam_api64 PATHS ${STEAMWORKS_PATH}/redistributable_bin/win64) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows") +ELSEIF(UNIX AND NOT APPLE) + find_library(steamworks NAMES steam_api steam_api64 PATHS ${STEAMWORKS_PATH}/redistributable_bin/linux64) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64") +ENDIF() + +add_executable(steamshim + ${SOURCES} +) + +set_target_properties(steamshim PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN -no-pie") +target_link_libraries(steamshim ${steamworks})