From 13a113600a5b3280c80ad7402f08162e94d95c5d Mon Sep 17 00:00:00 2001 From: DepressedTWM Date: Fri, 26 Jun 2026 22:33:18 +0400 Subject: [PATCH] CmakeLists.txt fix --- CMakeLists.txt | 87 +++++++++++++++++-------------------- PORTING.md | 21 +++++++++ scripts/Data_Settings.rb | 5 --- scripts/Game_Character_2.rb | 6 ++- scripts/Game_Event.rb | 5 +-- scripts/Game_Map.rb | 2 +- scripts/Game_Switches.rb | 14 ------ scripts/Interpreter_1.rb | 5 --- scripts/Interpreter_7.rb | 13 +++--- scripts/Main.rb | 6 --- scripts/SaveLoad.rb | 5 ++- scripts/Scene_Title.rb | 3 +- scripts/Settings.rb | 53 ---------------------- src/sunshine.h | 6 ++- 14 files changed, 82 insertions(+), 149 deletions(-) create mode 100644 PORTING.md diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a8a8c7..f111560 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,9 @@ include(FindPackageHandleStandardArgs) option(STEAM "Build for Steam" OFF) option(DEBUG "Debug mode" OFF) option(NATIVE "Use native instructions(for local use only)" OFF) +option(MODLOADER "Build with modloader" ON) +#Configuration set(CMAKE_DISABLE_IN_SOURCE_BUILD TRUE) set(VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION "5.1.2600.0") set(STEAMWORKS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/steamworks" CACHE PATH "Path to Steamworks folder") @@ -14,30 +16,6 @@ set(ZLIB_USE_STATIC_LIBS ON) set(OPENSSL_USE_STATIC_LIBS ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -if(NATIVE) - if (!MSVC) - add_compile_options(-march=native -mtune=native) - endif() -endif() - -if(DEBUG) - if (MSVC) - add_compile_options(/EHr /fsanitize /validate-charset /DEBUG /RTCu /RTCs /RTCc) - else() - add_compile_options(-g3 -O0 -fno-omit-frame-pointer -ggdb -fcheck-new -gbtf) - endif() -else() - if (MSVC) - add_compile_options(/O2 /fp:fast /GL /GF /GA) - else() - add_compile_options(-O2 -ffast-math -fipa-pta -ftree-vectorize -fstdarg-opt -fomit-frame-pointer -frename-registers) - if(!WIN32) - add_compile_options(-flto) - endif() - add_link_options(-Wl,-O2) - endif() -endif() - # main stuff set(MAIN_HEADERS src/quadarray.h @@ -172,9 +150,12 @@ 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(CMAKE_EXECUTABLE_SUFFIX ".html" CACHE INTERNAL "") + 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) endif() if (STEAM) @@ -229,11 +210,30 @@ set(EMBEDDED_INPUT binding-mri/module_rpg1.rb ) +# Настройки зависимые от компилятора if (MSVC) list(APPEND DEFINES _CRT_SECURE_NO_WARNINGS NOMINMAX ) + if(DEBUG) + add_compile_options(/EHr /fsanitize /validate-charset /DEBUG /RTCu /RTCs /RTCc) + else() + add_compile_options(/O2 /fp:fast /GL /GF /GA) + endif() +else() + if(NATIVE) + add_compile_options(-march=native -mtune=native) + endif() + if(DEBUG) + add_compile_options(-g3 -O0 -fno-omit-frame-pointer -ggdb -fcheck-new -gbtf) + else() + add_compile_options(-O2 -ffast-math -fipa-pta -ftree-vectorize -fstdarg-opt -fomit-frame-pointer -frename-registers) + add_link_options(-Wl,-O2) + if(!WIN32) + add_compile_options(-flto) + endif() + endif() endif() ## Process Embeddeds ## @@ -329,11 +329,7 @@ add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32 ${EMBEDDED_SOURCE} ) -if(LINUX) - pkg_check_modules(SECCOMP REQUIRED libseccomp) - target_include_directories(${PROJECT_NAME} PRIVATE ${SECCOMP_INCLUDE_DIRS}) - target_link_libraries(${PROJECT_NAME} PRIVATE ${SECCOMP_LIBRARIES}) -endif() + find_package(PkgConfig REQUIRED) find_package(ZLIB REQUIRED) @@ -350,35 +346,30 @@ 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(EMSCRIPTEN) - -else() +if(MODLOADER) find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto) pkg_check_modules(SIGC2 REQUIRED sigc++-2.0) pkg_check_modules(LIBZIP REQUIRED libzip) endif() target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES}) -if(EMSCRIPTEN) - target_include_directories(${PROJECT_NAME} PRIVATE src include ${PIXMAN_INCLUDE_DIR} - ${Ruby_INCLUDE_DIRS} Boost::boost ${Boost_INCLUDE_DIRS} ${VORBISFILE_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) +target_include_directories(${PROJECT_NAME} PRIVATE src include ${PIXMAN_INCLUDE_DIR} ${SIGC2_INCLUDE_DIRS} +${Ruby_INCLUDE_DIRS} Boost::boost ${Boost_INCLUDE_DIRS} +${VORBISFILE_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) - target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3 SDL3_image::SDL3_image SDL3_sound::SDL3_sound SDL3_ttf::SDL3_ttf OpenAL::OpenAL - physfs ${PIXMAN_LIBRARY} ${PLATFORM_LIBRARIES} ${Ruby_LIBRARIES} Boost::boost Boost::chrono ${Boost_LIBRARIES} - ${VORBISFILE_LIBRARIES} ZLIB::ZLIB ${PLATFORM_LIBS}) +target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3 SDL3_image::SDL3_image +SDL3_sound::SDL3_sound SDL3_ttf::SDL3_ttf OpenAL::OpenAL +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() - target_include_directories(${PROJECT_NAME} PRIVATE src include ${LIBZIP_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR} ${PIXMAN_INCLUDE_DIR} ${SIGC2_INCLUDE_DIRS} - ${Ruby_INCLUDE_DIRS} Boost::boost ${Boost_INCLUDE_DIRS} ${VORBISFILE_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) - target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3 SDL3_image::SDL3_image SDL3_sound::SDL3_sound SDL3_ttf::SDL3_ttf OpenSSL::Crypto OpenAL::OpenAL - physfs ${LIBZIP_LIBRARIES} ${PIXMAN_LIBRARY} ${SIGC2_LIBRARIES} ${PLATFORM_LIBRARIES} ${Ruby_LIBRARIES} Boost::boost Boost::chrono ${Boost_LIBRARIES} - ${VORBISFILE_LIBRARIES} ZLIB::ZLIB ${PLATFORM_LIBS}) endif() -IF(APPLE) - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cmake -P "${CMAKE_SOURCE_DIR}/patches/mac/CompleteBundle.cmake" VERBATIM) -ENDIF() - if(STEAM) add_subdirectory(steamshim_parent) diff --git a/PORTING.md b/PORTING.md new file mode 100644 index 0000000..8831a58 --- /dev/null +++ b/PORTING.md @@ -0,0 +1,21 @@ +О состоянии портов + +Windows: 100% Состояние: Играбельно +Linux: 90% Состояние: В работе но уже играбельно + TODO: + * Fix Wallpaper manager +*BSD: 3% Состояние: в работе +GNU/Hurd: 1% Состояние: В работе +Solaris/OpenSolaris: 1% Состояние: В работе +RedoxOS: 0% Состояние: Не хватает библеотек +Android: 1% Состояние: В работе +MacOS: ? Состояние: Нет подходящего оборудования/людей +PS Vita: 0% Состояние: В работе +PSP: 0% Состояние: В работе +Emspritein(web): 10% Состояние: Нет хватает библеотек +HaikuOS: 0% Состояние: В работе +IOS: 0% Состояние: Нет подходящего оборудования/людей +Nintendo 3DS: 0% Состояние: Нет подходящего оборудования/людей +XBOX: 0% Состояние: Нет лицензии +Risc OS: 0% Состояние: Неизвестно +DOS: 0.1% Состояние: Мысленный эксперемент, одна строчка кода для поддержка сделана XD diff --git a/scripts/Data_Settings.rb b/scripts/Data_Settings.rb index cc62402..87227ec 100644 --- a/scripts/Data_Settings.rb +++ b/scripts/Data_Settings.rb @@ -221,11 +221,6 @@ class Window_Settings }, ], tr("Controls") => [ - { - :type => :base, - :name => tr('Configure controls'), - :default => tr("Press F1") - }, { :type => :bool, :name => tr('Control LED lighting on gamepads'), diff --git a/scripts/Game_Character_2.rb b/scripts/Game_Character_2.rb index 636b185..92d494d 100644 --- a/scripts/Game_Character_2.rb +++ b/scripts/Game_Character_2.rb @@ -339,7 +339,11 @@ class Game_Character when 44 # Play SE $game_system.se_play(command.parameters[0]) when 45 # Script - eval(command.parameters[0]) + begin + eval(command.parameters[0]) + rescue + STDERR.puts "[Game_Character_2.rb] Failed to execute script #{command.parameters[0]}" + end end @move_route_index += 1 end diff --git a/scripts/Game_Event.rb b/scripts/Game_Event.rb index be3a8a5..51b70fc 100644 --- a/scripts/Game_Event.rb +++ b/scripts/Game_Event.rb @@ -40,10 +40,7 @@ class Game_Event < Game_Character special = SpecialEventData.get(name.captures[0].to_sym) @custom_flags.concat(special.flags) @collision = special.collision - end - - RPG::Mod.exec_hooks("hooks/Game_Event/init", binding) - + end # Move to starting position moveto(@event.x, @event.y) refresh diff --git a/scripts/Game_Map.rb b/scripts/Game_Map.rb index 6494354..a2f4ee8 100644 --- a/scripts/Game_Map.rb +++ b/scripts/Game_Map.rb @@ -83,7 +83,6 @@ class Game_Map @map_id = 0 @display_x = 0 @display_y = 0 - RPG::Mod.exec_hooks("hooks/Game_Map/init", binding) end #-------------------------------------------------------------------------- # * Setup @@ -555,3 +554,4 @@ class Game_Map end end end +Скажи, нужно ли блокирование света стенами (тени/окклюзия). diff --git a/scripts/Game_Switches.rb b/scripts/Game_Switches.rb index 352a16f..e436339 100644 --- a/scripts/Game_Switches.rb +++ b/scripts/Game_Switches.rb @@ -11,14 +11,12 @@ class Game_Switches #-------------------------------------------------------------------------- def initialize @data = [] - RPG::Mod.exec_hooks("hooks/Game_Switches/init", binding) end #-------------------------------------------------------------------------- # * Get Switch # switch_id : switch ID #-------------------------------------------------------------------------- def [](switch_id) - assert_not_deprecated(switch_id) return true if switch_id == 25 if switch_id <= 5000 and @data[switch_id] != nil return @data[switch_id] @@ -32,20 +30,8 @@ class Game_Switches # value : ON (true) / OFF (false) #-------------------------------------------------------------------------- def []=(switch_id, value) - assert_not_deprecated(switch_id) if switch_id <= 5000 @data[switch_id] = value end end - - def assert_not_deprecated(switch_id) - if switch_id == 10 || switch_id == 21 - STDERR.puts "deprecated switch referenced in map #{$game_map.map_id}" - end - end end - -# some switches that we know of -# 101 - Use tower footsplashes i think -# 112 - Niko in minecart -# 160 - re-playing game (when Niko is TWM) diff --git a/scripts/Interpreter_1.rb b/scripts/Interpreter_1.rb index 2c886de..782a8d6 100644 --- a/scripts/Interpreter_1.rb +++ b/scripts/Interpreter_1.rb @@ -16,11 +16,6 @@ class Interpreter def initialize(depth = 0, main = false) @depth = depth @main = main - # Depth goes up to level 100 - if depth > 100 - print("Common event call has exceeded maximum limit.") - exit - end # Clear inner situation of interpreter clear end diff --git a/scripts/Interpreter_7.rb b/scripts/Interpreter_7.rb index 7b9c3ed..d3b399f 100644 --- a/scripts/Interpreter_7.rb +++ b/scripts/Interpreter_7.rb @@ -256,15 +256,12 @@ class Interpreter # Advance index @index += 1 end - # Evaluation - #result = eval(script) - # If return value is false - #if result == false - # # End - # return false - #end # Continue - eval(script) + begin + eval(script) + rescue + STDERR.puts "[EVENT] Failed to execute script #{script}" + end return true end end diff --git a/scripts/Main.rb b/scripts/Main.rb index f244da2..b799f16 100644 --- a/scripts/Main.rb +++ b/scripts/Main.rb @@ -30,12 +30,6 @@ begin # Prepare for transition Graphics.freeze - gs = Game_Switches.new - if Graphics.width == 1280 - gs[400] = true - else - gs[400] = false - end # Make scene object (title screen) $scene = Scene_Title.new Oneshot.allow_exit false diff --git a/scripts/SaveLoad.rb b/scripts/SaveLoad.rb index d2b0caa..39c2dad 100644 --- a/scripts/SaveLoad.rb +++ b/scripts/SaveLoad.rb @@ -11,7 +11,7 @@ def fake_save Dir.mkdir(Oneshot::GAME_PATH) unless File.exist?(Oneshot::GAME_PATH) Dir.mkdir(Oneshot::GAME_PATH + "/Oneshot") unless File.exist?(Oneshot::GAME_PATH + "/Oneshot") File.open(FAKE_SAVE_NAME, 'wb+') do |file| - # Wrire frame count for measuring play time + # Write frame count for measuring play time Marshal.dump(Graphics.frame_count, file) # Increase save count by 1 $game_system.save_count += 1 @@ -127,6 +127,7 @@ def load(filename) # Read each type of game object $game_system = Marshal.load(file) $game_switches = Marshal.load(file) + $game_switches[400] = Graphics.width > 1000 $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_screen = Marshal.load(file) @@ -137,7 +138,7 @@ def load(filename) $game_followers = Marshal.load(file) $game_oneshot = Marshal.load(file) $game_fasttravel = Marshal.load(file) - $game_temp.footstep_sfx = Marshal.load(file) + $game_temp.footstep_sfx = Marshal.load(file) # If magic number is different from when saving # (if editing was added with editor) if $game_system.magic_number != $data_system.magic_number diff --git a/scripts/Scene_Title.rb b/scripts/Scene_Title.rb index 7c72af2..c84bc94 100644 --- a/scripts/Scene_Title.rb +++ b/scripts/Scene_Title.rb @@ -28,7 +28,7 @@ class Scene_Title $game_temp = Game_Temp.new new_game $game_system = Game_System.new - + Settings.load! # loading settings load_perma_flags @@ -244,6 +244,7 @@ class Scene_Title # Make each type of game object $game_system = Game_System.new $game_switches = Game_Switches.new + $game_switches[400] = Graphics.width > 1000 $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new diff --git a/scripts/Settings.rb b/scripts/Settings.rb index 4fe714f..1133303 100644 --- a/scripts/Settings.rb +++ b/scripts/Settings.rb @@ -48,57 +48,4 @@ module Settings end end end - - #module Legacy - # FILE_PATH = [Oneshot::SAVE_PATH, 'settings.conf'].join '/' - # - # def self.load! - # if not FileTest.exist?(Settings::Legacy::FILE_PATH) - # Settings::Legacy.save! - # return - # end - # - # File.foreach(Settings::Legacy::FILE_PATH) do |line| - # if not line.include? "=" - # next - # end - # - # key, value = line.strip.split("=", 2) - # puts ([key, value].join '=') - # case key - # when "bgm_volume" - # Audio.bgm_volume = value.to_i - # when "sfx_volume" - # Audio.sfx_volume = value.to_i - # when "fullscreen" - # Graphics.fullscreen = (value.casecmp "true") == 0 - # when "default_run" - # $game_switches[251] = (value.casecmp "true") == 0 - # when "colorblind_mode" - # $game_switches[252] = (value.casecmp "true") == 0 - # when "automash_enabled" - # $game_switches[253] = (value.casecmp "true") == 0 - # when "frameskip" - # Graphics.frameskip = (value.casecmp "true") == 0 - # when "in_game_timer" - # $game_temp.igt_timer_visible = (value.casecmp "true") == 0 - # $scene.in_game_timer.visible = $game_temp.igt_timer_visible if $scene.is_a?(Scene_Map) - # end - # end - # end - # - # def self.save! - # $persistent.save - # File.open(Settings::Legacy::FILE_PATH, 'w') do |f| - # f.puts (["bgm_volume", Audio.bgm_volume].join '=') - # f.puts (["sfx_volume", Audio.sfx_volume].join '=') - # f.puts (["fullscreen", Graphics.fullscreen].join '=') - # f.puts (["default_run", ($game_switches[251])].join '=') - # f.puts (["colorblind_mode", ($game_switches[252])].join '=') - # f.puts (["automash_enabled", ($game_switches[253])].join '=') - # f.puts (["frameskip", Graphics.frameskip].join '=') - # f.puts (["in_game_timer", $game_temp.igt_timer_visible].join '=') - # end - # end - #end end diff --git a/src/sunshine.h b/src/sunshine.h index 16c9fc7..43c8e7e 100644 --- a/src/sunshine.h +++ b/src/sunshine.h @@ -4,6 +4,10 @@ //помойка ебаная inline boost::chrono::high_resolution_clock::time_point startTime; +#if defined(__linux__) || defined(BSD) || defined(__sun) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__GNU__) || defined(__hurd__) || defined(__DragonFly__) + #define unix_like +#endif + class Sunshine{ public: Sunshine(); @@ -16,4 +20,4 @@ public: private: bool noiseLoaded = false; -}; \ No newline at end of file +};