Merge branch 'master' of ssh://code.nikooneshot.ru:222/Sunshine/mkxp-sunshine

This commit is contained in:
Issac332 2026-07-19 11:07:11 +03:00
commit ddd0d50ac3
8 changed files with 122 additions and 75 deletions

View file

@ -6,7 +6,6 @@ include(FindPackageHandleStandardArgs)
option(STEAM "Build for Steam" OFF)
option(DEBUG "Debug mode" ON)
option(NATIVE "Use native instructions(for local use only)" OFF)
option(MODLOADER "Build with modloader" ON)
#Configuration
set(CMAKE_DISABLE_IN_SOURCE_BUILD TRUE)
@ -158,10 +157,8 @@ elseif(BSD)
list(APPEND MAIN_SOURCE src/xdg-user-dir-lookup.c)
list(APPEND MAIN_HEADERS src/xdg-user-dir-lookup.h)
set(STEAM OFF)
set(MODLOADER OFF)
elseif(EMSCRIPTEN)
set(STEAM OFF)
set(MODLOADER OFF)
set(CMAKE_EXECUTABLE_SUFFIX ".html" CACHE INTERNAL "")
elseif(APPLE)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM)
@ -367,11 +364,9 @@ find_package(Ruby 3.0 REQUIRED COMPONENTS Development)
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR)
mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY)
if(MODLOADER)
find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto)
pkg_check_modules(SIGC2 REQUIRED sigc++-2.0)
pkg_check_modules(LIBZIP REQUIRED libzip)
endif()
find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto)
pkg_check_modules(SIGC2 REQUIRED sigc++-2.0)
pkg_check_modules(LIBZIP REQUIRED libzip)
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES})
target_include_directories(${PROJECT_NAME} PRIVATE src include ${PIXMAN_INCLUDE_DIR} ${SIGC2_INCLUDE_DIRS}
@ -384,12 +379,8 @@ physfs ${PIXMAN_LIBRARY} ${SIGC2_LIBRARIES} ${PLATFORM_LIBRARIES}
${Ruby_LIBRARIES} Boost::boost Boost::chrono ${Boost_LIBRARIES}
${VORBISFILE_LIBRARIES} ZLIB::ZLIB ${PLATFORM_LIBS})
if(MODLOADER)
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBZIP_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBZIP_LIBRARIES} OpenSSL::Crypto)
else()
endif()
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBZIP_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBZIP_LIBRARIES} OpenSSL::Crypto)
if(STEAM)
add_subdirectory(steamshim_parent)

View file

@ -3,17 +3,17 @@
| Платформа<br>Platform | Завершено<br>Done % | Состояние<br>State |
| :--- | :---: | :--- |
| Windows | 100% | Играбельно |
| Linux | 91% | В работе, но уже играбельно<br>TODO:<br>&nbsp;\* Fix Wallpaper manager |
| Linux | 91% | В работе, но уже играбельно<br>TODO:<br>&nbsp;\* Fix Wallpaper manager
| *BSD | 15% | не в работе |
| GNU/Hurd | 1% | не в работе |
| Solaris/OpenSolaris | 1% | не в работе |
| RedoxOS | 0% | Не хватает библеотек |
| Android | 4% | В работе |
| PS Vita | 0% | не в работе |
| PS Vita | 1% | не в работе |
| PSP | 1% | не в работе |
| Emspritein(web) | 11% | Нет хватает библеотек<br>&nbsp;\* Нужно написать порт библеотеки libsigc++2<br>(А лучше 3 и переписать движок)<br>&nbsp;\* Проблемы с компиляцией и зависимостями |
| HaikuOS | 0% | не в работе |
| DOS | 0.2% | Не в работе |
| HaikuOS | 1% | не в работе |
| DOS | 1% | Не в работе |
| Ubuntu Touch | 60% | Будет почти готово тогда когда Linux порт будет доведён до ума |
| Аврора ОС | 0% | не в работе |
| ChromeOS/ChromiumOS | 0.4% | Неизвестное |

View file

@ -1,15 +1,12 @@
Added 16:9 panorams support
Added Panorams/green/maize_16.png
mri-bindings cleanup
RAM usage optimizations
*BSD and emscriptein specific fixes
On windows use of RAW input events by default
Maps changes
Added JIT support
Reload on F5(in debug)
Scene_Map optimization
TPtL aray limit set to 300
New 16:9 arts
Arts in bigger resolution
Optimized and extended debugwriter.h
Water shader optimized
Mouse scrolling support
@ -17,17 +14,15 @@ Small ruby optimizations
Boost+Ruby sprintf error fix
New settings menu
Extended debug mode configuration
Added TracePoimt based profiler
Added TracePoint based profiler
Added April fools enforce mode
Added way to control WM shader via settings
Optimized game loading
Fasttravel settings
Removed useless hooks
Added way to set Led color on gamepads
Switches code optimized
Added eval protection for events interpritator and for Characters scripts
Added in-game keybindings settings
Added switch 400(defines 4:3 or 16:9 is used)
Removed depth limit for common events
Fixed bug "Андрей"
Fixed film
@ -42,7 +37,7 @@ Fixed audio bug
Добавлены отражения от плитки в стартовом доме
Игра переведена на другое разрешение экрана и поддержку большего кол-во аспектов мониторов
Fixed performance issues
Android support patches
Android support patches(WIP)
Some Pancake episode specific changes
squares when dialog skipping fixed
Mirrors!
@ -53,7 +48,7 @@ crash() function update
Start house reworked
removed SDL joystick support
fixed SECCOMP blocking UDEV sockets
Some Barens changes
Barrens rework(WIP)
dev room!
MacOS support in SecurityManager
Changed default 16:9 window resolution
@ -67,12 +62,20 @@ main viewport resize, main window resize and move signals bindings for ruby
Dynamic resolution support (WIP)
Rewrited to use SDL3 libc methods instead default
Removed useless debug logs
Glen reworked
Glen reworked(WIP)
GLLogger \n bug fix
LXDE support added
DOS porting patches(WIP) (lol)
PS2 porting patches(WIP) (lol)
PSVita porting patches(WIP)
other platforms porting patches
Added new location
Extended Office location
Reworked Refuge(WIP)
Updated Game quit common event
Solstice credits updated
Removed text size limit in Ed Message
Rewrited Linux build scripts
Barrens reworked
Solstice credits fixed
Deleted unused maps
cafe map size fixed
Game maps size fixed
Big performance fix

View file

@ -26,9 +26,6 @@ module Settings
:en_purple_messagebox => true,
:enforce_april_fools => false,
:true_memory_mode => false,
:pre_solstice_update_content => false,
:dejavu_mode => false,
:demo => false,
:oneshot_mode => false,
# Advanced
@ -171,11 +168,6 @@ class Window_Settings
:name => tr('Dynamic Light'),
:parameter => :light,
},
#{
# :type => :bool,
# :name => tr('Shadows'),
# :parameter => :light_shadows
#},
],
tr("UI") => [
{
@ -225,12 +217,7 @@ class Window_Settings
},
{
:type => :bool,
:name => tr('Dejavu mode(Not implemented)'),
:parameter => :dejavu_mode
},
{
:type => :bool,
:name => tr('Freeware Mode(!)'),
:name => tr('Freeware Mode(!, WIP)'),
:parameter => :oneshot_mode
},
],
@ -240,13 +227,6 @@ class Window_Settings
:name => tr('Control LED lighting on gamepads'),
:parameter => :gamepad_led
},
#{
# :type => :slider,
# :name => tr("Gamepad deadzone"),
# :parameter => :gamepad_deadzone,
# :min => 0,
# :max => 10
#},
{ :type => :sep, :name => tr("Walk") },
{
:type => :key,

View file

@ -60,7 +60,6 @@ class Scene_Map
@blackfade.z = 9999
color = GamepadMapColors::COLORS[$game_map.map_id] || GamepadMapColors::SUN
Input.set_led(color.red, color.green, color.blue)
RPG::Mod.exec_hooks("hooks/Scene_Map/main", binding)
# Transition run
Graphics.transition

View file

@ -1,5 +1,70 @@
#if defined(__linux__) || defined(__sun) || defined(__APPLE__) || \
defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
defined(__GNU__) || defined(__hurd__) || defined(__DragonFly__)
#define unix_like 1
#include <SDL3/SDL_platform_defines.h>
#if defined(SDL_PLATFORM_AIX) || defined(SDL_PLATFORM_BSDI) || defined(SDL_PLATFORM_FREEBSD) || \
defined(SDL_PLATFORM_HPUX) || defined(SDL_PLATFORM_HURD) || defined(SDL_PLATFORM_IRIX) || \
defined(SDL_PLATFORM_LINUX) || defined(SDL_PLATFORM_MACOS) || defined(SDL_PLATFORM_NETBSD) || \
defined(SDL_PLATFORM_OPENBSD) || defined(SDL_PLATFORM_SOLARIS) || defined(SDL_PLATFORM_UNIX) || \
defined(SDL_PLATFORM_APPLE) || defined(SDL_PLATFORM_OSF)
#define unix_like 1
#endif
#if defined(SDL_PLATFORM_DOS)
#define dos 1
#endif
#if defined(SDL_WINAPI_FAMILY_PHONE) || defined(SDL_PLATFORM_WINDOWS) || defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK)
#define windows 1
#endif
#if defined(SDL_PLATFORM_XBOXSERIES) || defined(SDL_PLATFORM_XBOXONE)
#define xbox 1
#endif
#if SDL_PLATFORM_3DS
#define 3ds 1
#endif
#if SDL_PLATFORM_ANDROID
#define android 1
#endif
#if defined(SDL_PLATFORM_APPLE) || defined(SDL_PLATFORM_TVOS) || defined(SDL_PLATFORM_VISIONOS)
#define apple 1
#endif
#if SDL_PLATFORM_EMSCRIPTEN
#define web 1
#endif
#if SDL_PLATFORM_HAIKU
#define haiku 1
#endif
#if SDL_PLATFORM_IOS
#define ios 1
#endif
#if defined(SDL_PLATFORM_OS2)
#define os2 1
#endif
#if SDL_PLATFORM_PS2
#define ps2 1
#endif
#if SDL_PLATFORM_PSP
#define psp 1
#endif
#if SDL_PLATFORM_QNXNTO
#define qnx 1
#endif
#if SDL_PLATFORM_VITA
#define vita 1
#endif
#if SDL_PLATFORM_RISCOS
#define riscos 1
#endif

View file

@ -32,19 +32,16 @@
#include <SDL3/SDL_thread.h>
#include <SDL3/SDL_touch.h>
#include <SDL3/SDL_rect.h>
#include <SDL3/SDL_stdinc.h>
#include "sharedstate.h"
#include "graphics.h"
#include "al-util.h"
#include "debugwriter.h"
#include "oneshot.h"
#include <SDL3/SDL_stdinc.h>
#include <cstdio>
#include <map>
#include <iostream>
typedef void (ALC_APIENTRY *LPALCDEVICEPAUSESOFT) (ALCdevice *device);
@ -106,9 +103,7 @@ bool EventThread::allocUserEvents(){
}
EventThread::EventThread()
: fullscreen(false),
showCursor(true)
{}
: fullscreen(false), showCursor(true){}
void EventThread::process(RGSSThreadData &rtData){
SDL_Event event;
@ -128,7 +123,7 @@ void EventThread::process(RGSSThreadData &rtData){
fps.displayCounter = 0;
fps.acc = 0;
fps.accDiv = 0;
if (rtData.config.printFPS)
fps.sendUpdates.set();
@ -157,7 +152,7 @@ void EventThread::process(RGSSThreadData &rtData){
jId = ids[i];
}
printf("Gamepad connected: %s", SDL_GetGamepadName(gc));
Debug() << "Gamepad connected: " << SDL_GetGamepadName(gc);
if (i > 0) {
SDL_CloseGamepad(gamepd);
@ -269,7 +264,10 @@ void EventThread::process(RGSSThreadData &rtData){
/* Now process the rest */
switch (event.type){
case SDL_EVENT_QUIT :
case SDL_EVENT_LOW_MEMORY:
rb_gc();
break;
case SDL_EVENT_QUIT:
if (rtData.allowExit) {
terminate = true;
Debug() << "[EventThread::process] EventThread termination requested";

View file

@ -66,6 +66,12 @@
#include "gamecontrollerdb.txt.xxd"
#endif
#ifdef ps2
#ifdef DEBUG
SDL_PS2_SKIP_IOP_RESET();
#endif
#endif
static void rgssThreadError(RGSSThreadData *rtData, const std::string &msg){
rtData->rgssErrorMsg = msg;
rtData->ethread->requestTerminate();
@ -215,26 +221,31 @@ static void setGamePathInRegistry() {
//TODO handle this for Linux/Mac
}
int main(int argc, char *argv[]){
#if dos
__djgpp_nearptr_enable();
#endif
SecurityManagerInit();
startTime = boost::chrono::high_resolution_clock::now();
loadLanguageMetadata(); //there will be a segfault on fclose if I don't move it here
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
SDL_SetHint(SDL_HINT_APP_ID, "OneshotSunshine");
SDL_SetHint(SDL_HINT_APP_NAME, "Oneshot: Sunshine");
SDL_SetHint(SDL_HINT_AUDIO_DEVICE_STREAM_NAME, "Oneshot: sunshine");
SDL_SetHint(SDL_HINT_AUDIO_DEVICE_STREAM_ROLE, "Game");
SDL_SetAppMetadata("Oneshot: Sunshine", "0.1.1", "com.catwindowteam.sunshine");
//X11 work on *BSD,Solaris too!
#if unix_like
SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0");
#if SDL_VERSION_ATLEAST(3, 4, 10)
SDL_SetHint(SDL_HINT_VIDEO_X11_ENABLE_XSYNC_EXT, "1");
#endif
#elif defined(WIN32)
#elif windows
SDL_SetHint(SDL_HINT_WINDOWS_RAW_KEYBOARD, "1");
#elif __ANDROID__
#elif android
SDL_SetHint(SDL_HINT_ANDROID_ALLOW_PERSISTENT_FOLDER_ACCESS, "1");
#elif defined(__DJGPP__) || defined(__DOS__) || defined(__MSDOS__)
#elif vita
SDL_SetHint(SDL_HINT_VITA_RESOLUTION, "1080");
#elif ps2
SFL_SetHint(SDL_HINT_PS2_GS_MODE, "NTSC");
#elif dos
SDL_SetHint(SDL_HINT_DOS_ALLOW_DIRECT_FRAMEBUFFER, "1");
#endif
/* initialize SDL first */
@ -273,7 +284,7 @@ int main(int argc, char *argv[]){
/* now we load the config */
Config conf;
conf.read(argc, argv);
#if defined WIN32
#if windows
if(conf.Windows_AllocConsole == true){
AllocConsole();
freopen("CONOUT$", "w", stdout);