Compare commits

..
Author SHA1 Message Date
github-actions[bot] 979a035fea Apply clang-format to submitted files 2025-04-25 17:36:36 +00:00
Vasilii Rogin df068a7294 Use github.head_ref 2025-04-25 20:36:14 +03:00
Vasilii Rogin f59b3a34c1 Merge 153710bb48 into 6f321c7882 2025-04-25 17:32:26 +00:00
Vasilii Rogin 153710bb48 Exit early to avoid workflow stuck 2025-04-25 20:32:01 +03:00
Vasilii Rogin 9e82c9a847 Workflow fixes 2025-04-25 20:30:34 +03:00
Vasilii Rogin d0646fb77a Empty commit 2025-04-25 20:25:40 +03:00
Vasilii Rogin 458db6bddc Add branch name 2025-04-25 20:09:23 +03:00
Vasilii Rogin 859d590e26 Empty commit 2025-04-25 20:06:35 +03:00
Vasilii Rogin 06c3636b6d Add incorrect formatting to check CI job 2025-04-25 20:00:02 +03:00
Vasilii Rogin 1d73725333 Move wasm build into ci-build to make it depend on clang-format 2025-04-25 19:59:06 +03:00
Vasilii Rogin f850fc6665 Make all other CI checks to depend on format fix 2025-04-25 19:56:16 +03:00
Vasilii Rogin d64c906d4f Add formatting auto-fix 2025-04-25 19:55:23 +03:00
Vasilii Rogin 6f321c7882 Merge pull request #62 from roginvs/show_clang_format_version_in_ci
Show clang-format version in CI run
2025-04-21 17:07:39 +03:00
Vasilii Rogin e05dacebca Merge pull request #64 from roginvs/fix_ci_release_names
Fix ci release names
2025-04-21 16:51:02 +03:00
Vasilii Rogin 917c1bc49e Move sleep into separate step 2025-04-21 16:30:07 +03:00
Vasilii Rogin ca9618bf0b Change apk file name 2025-04-21 16:28:34 +03:00
Vasilii Rogin 2112b04c5b Merge pull request #63 from roginvs/fix_ci_release_names
Fix for auto-release: Rename artifact folder
2025-04-21 16:19:28 +03:00
Vasilii Rogin 52e1954aea Rename artifact folder 2025-04-21 16:17:50 +03:00
Vasilii Rogin 2f144fb421 Merge pull request #60 from roginvs/fix_ci_release_names
Fix CI release file names
2025-04-21 16:02:10 +03:00
Vasilii Rogin fe472abc2f Show clang-format version in CI run 2025-04-21 16:00:45 +03:00
Vasilii Rogin 7960b3cb65 Add platform/architecture suffix to executables 2025-04-21 10:42:43 +03:00
Vasilii Rogin 7d0a495ce8 Add duplicate files check 2025-04-21 10:35:04 +03:00
Vasilii Rogin 4e8c3a4815 Merge pull request #53 from cambragol/patch-13
Update skill.cc repair robot message
2025-04-21 10:16:20 +03:00
Vasilii Rogin 55af34472a Merge pull request #50 from sherief/auto-open-doors
QoL: automatically walk through unlocked doors when outside of combat.
2025-04-21 10:16:02 +03:00
Sherief Farouk 9db0a4d29e Code formatting. 2025-04-20 04:18:58 -07:00
Sherief Farouk 325577db56 If a door has a custom script attached consider it impassable to require player to interact. 2025-04-20 04:18:34 -07:00
Sherief Farouk cf17f42cf8 Replaced magic number with constant. 2025-04-20 04:18:11 -07:00
cambragol de5ee7d7f8 Update skill.cc repair robot message
Fixes the incorrect message when attempting to repair robots.
2025-04-20 18:55:07 +09:00
Sherief Farouk eeed6e87a5 QoL: automatically walk through unlocked doors when outside of combat.
Defaults to off, controllable via SFall config flag.
2025-04-19 06:20:19 -07:00
Vasilii Rogin 0aa0f064e5 Merge pull request #47 from sherief/sherief/node-pathing
QoL: increased node expansion while pathing
2025-04-17 19:49:20 +03:00
Sherief Farouk dd49ddb7c7 Fixed clang-format complaint. 2025-04-16 22:57:19 -07:00
Sherief Farouk 2922162412 QoL: increased path node capacity. 2025-04-16 21:12:23 -07:00
Sherief Farouk 35c59913f0 Path node capacity is a constant instead of magic number. 2025-04-16 21:12:07 -07:00
Vasilii Rogin 5b93794660 Merge pull request #46 from sherief/sherief/sfall-walk-distance
QoL: implemented SFall "UseWalkDistance".
2025-04-16 19:14:43 +03:00
Vasilii Rogin 8f3ab4df6f Merge pull request #11 from JanSimek/sfall-modorder-txt
Sfall: add support for loading mods / mod_order.txt
2025-04-16 19:09:22 +03:00
Sherief Farouk 498bdfcd13 Fixed missing value check. 2025-04-16 03:15:42 -07:00
Sherief Farouk 4f1c239118 QoL: implemented SFall "UseWalkDistance". 2025-04-16 01:11:15 -07:00
Vasilii Rogin b7374ffb24 Merge pull request #44 from roginvs/add_winxp_support
Add Windows XP x86 support
2025-03-22 20:48:24 +02:00
Vasilii Rogin 14e119f014 Remove clang-format off because of following #ifdef 2025-03-22 20:22:12 +02:00
Vasilii Rogin a5de358845 Fix missing lib for 64bit windows 2025-03-22 20:11:26 +02:00
Vasilii Rogin 7957246c73 Fix artifacts 2025-03-22 20:04:55 +02:00
Vasilii Rogin 07da6c53be Use RelWithDebInfo for Windows release 2025-03-22 20:00:35 +02:00
Vasilii Rogin 4020d6a500 Use release config 2025-03-22 19:55:35 +02:00
Vasilii Rogin 6c30ce64bf Use RelWithDebInfo for Windows builds 2025-03-22 19:53:29 +02:00
Vasilii Rogin 53337cbb76 Now trying to fix win64 builds 2025-03-22 19:27:18 +02:00
Vasilii Rogin bc47279a93 Do changes in correct branch instead of wondering why it does not work 2025-03-22 19:23:52 +02:00
Vasilii Rogin 512e403771 Following ChatGPT advices 2025-03-22 19:19:26 +02:00
Vasilii Rogin 2ffdad43fa Add some defines from ChatGPT advice 2025-03-22 19:13:47 +02:00
Vasilii Rogin 0e9fee8cec Add windows.h before timeapi.h 2025-03-22 19:07:13 +02:00
Vasilii Rogin 35e9f71810 Use timeapi.h for win64 2025-03-22 19:04:18 +02:00
Vasilii Rogin 607b95f2c4 Use mmsystem for win32 2025-03-22 18:59:59 +02:00
Vasilii Rogin 3c59f111cd Do clang-format 2025-03-22 18:58:51 +02:00
Vasilii Rogin c981fdc700 Replace windows.h with mmsystem.h 2025-03-22 18:57:24 +02:00
Vasilii Rogin 38b1a01c26 Add algorithm for win xp support 2025-03-22 18:54:08 +02:00
Vasilii Rogin bf3e817a3e Add XP support 2025-03-22 18:46:51 +02:00
Vasilii Rogin 43bb53b2e2 Merge pull request #43 from roginvs/use_coefficients_for_scrolling
Keep original scrolling coefficient for main game scrolling
2025-03-07 15:04:44 +02:00
Vasilii Rogin d55944a8c4 Merge pull request #37 from ololoken/main
Remove some warnings; bump emsdk version;
2025-03-06 17:27:54 +02:00
Roman Turchin 3b23a1cfe0 use __assume(0) for unreachable code in MSVC 2025-03-05 16:02:35 -05:00
Vasilii Rogin d364579925 Keep original scrolling coefficient for main game scrolling 2025-03-05 21:39:03 +02:00
Roman Turchin 25106684ba [emscripten] bump emsdk version; fix review comment 2025-03-05 13:38:07 -05:00
Roman Turchin b25ee43682 Merge remote-tracking branch 'org/main' 2025-03-05 13:23:32 -05:00
Vasilii Rogin 9b6fbeecb9 Merge pull request #42 from roginvs/fallout2-ce-main-fix-ci-release
CI Release: Move files from subfolders
2025-03-05 19:53:22 +02:00
Vasilii Rogin bc25c97e93 Move files from subfolders 2025-03-05 19:52:17 +02:00
Vasilii Rogin f3f92187ae Merge pull request #41 from roginvs/fallout2-ce-main-pick-changes-from-alex-3
Pick the rest from alex
2025-03-05 19:28:20 +02:00
Vasilii Rogin 168f250028 Trying to fix CI release 2025-03-05 19:25:42 +02:00
Vasilii Rogin db6967feb5 Add linux-armhf and linux-arm64 into release dependency 2025-03-05 19:18:21 +02:00
Vasilii Rogin 806ac12a72 Merge commit 'e97087b9582f37075db347a89898887320753f8b' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:14:31 +02:00
Vasilii Rogin 3c63aa30ee Merge commit '135c62758f018bfe202a0877d18ceeac704e9e04' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:14:20 +02:00
Vasilii Rogin b4ad5ea8a7 Merge commit '2de74728ce1c9255802cf25d6c264286a23f43a5' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:14:10 +02:00
Vasilii Rogin 71d56fcf98 Merge pull request #40 from roginvs/fallout2-ce-main-pick-changes-from-alex
Pick commits one-by-one for easier conflict resolving
2025-03-05 19:13:55 +02:00
Vasilii Rogin b3f8abbcbb Merge commit 'd631bfcdd0a1ad50d7c1e214ad03464f58c93260' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:13:44 +02:00
Vasilii Rogin 16d786bd25 Merge commit '82793d14f4429928175047292e59fd91e9325c82' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:13:02 +02:00
Vasilii Rogin 91ae593aac Merge commit 'a5d252f19bcacd7487ed82f6275b345f23605842' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:12:49 +02:00
Vasilii Rogin 03e26a4551 Merge commit 'e5d4d310c053a7f28d219165c00c830c8f326495' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:12:37 +02:00
Vasilii Rogin acb470f34a Merge commit 'fa1621ff562717377a0b1e7aaee627564724592d' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:12:22 +02:00
Vasilii Rogin 3c01ff7477 Merge commit 'a1fc68f13a1cc4cdb4ad0146f967621bf2ef3f92' into fallout2-ce-main-pick-changes-from-alex-3 2025-03-05 19:11:51 +02:00
Vasilii Rogin 68d9405a0a Merge commit '58c82f9268018c0a41f2a2c2b1a8bc216534a4af' into fallout2-ce-main-pick-changes-from-alex-2 2025-03-05 19:10:55 +02:00
Vasilii Rogin dd9c521363 Merge commit '8fcdbe0beee659aaa96f04f725ca56e7c55ceeab' into fallout2-ce-main-pick-changes-from-alex-2 2025-03-05 19:10:41 +02:00
Vasilii Rogin 51e8056430 Merge commit 'afff399fcafdfe6042fbe16fe489b1eda2544edb' into fallout2-ce-main-pick-changes-from-alex-2 2025-03-05 19:10:15 +02:00
Vasilii Rogin b336e06401 Merge commit '080f99962681dae5388e11421615d8f371bf9800' into fallout2-ce-main-pick-changes-from-alex-2 2025-03-05 19:09:31 +02:00
Vasilii Rogin fc788a3795 Merge commit '593f80144cb6f92d7198a1c096c67f27cac220d5' into fallout2-ce-main-pick-changes-from-alex 2025-03-05 19:03:29 +02:00
Vasilii Rogin a9878cbe98 Merge commit '4df9ee557d85370219d148bde9ab3e8c368ec6cd' into fallout2-ce-main-pick-changes-from-alex 2025-03-05 18:57:07 +02:00
Vasilii Rogin 5891072346 Merge commit 'f6ba9d38fd156abfef16fb00772bff7feb02fae8' into fallout2-ce-main-pick-changes-from-alex 2025-03-05 18:54:56 +02:00
Alexander Batalov e97087b958 Remove pause window 2025-02-16 11:35:06 +03:00
Alexander Batalov b31cea9331 Remove keyboard settings functions 2025-02-16 11:27:03 +03:00
Alexander Batalov f5ade9fb19 Remove idle func 2025-02-16 10:56:28 +03:00
Alexander Batalov f59637d0cc Remove focus func 2025-02-16 10:52:17 +03:00
Alexander Batalov 236774c7b2 Fix extra delay in loadsave screen 2025-02-16 10:01:08 +03:00
Alexander Batalov f7d4fc4ffe Remove vcr 2025-02-16 09:51:46 +03:00
Alexander Batalov 135c62758f Update installation instructions
Closes #360
2025-02-15 14:50:42 +03:00
Alexander Batalov 2de74728ce Review main (#458) 2025-02-15 12:31:06 +03:00
Alexander Batalov d631bfcdd0 Add linux armhf build (#456) 2025-02-12 22:45:08 +03:00
sonilyanandAlexander Batalov 4382d67c19 Add SFALL_CONFIG_PIPBOY_AVAILABLE_AT_GAMESTART (#314)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2025-02-12 21:46:10 +03:00
Alexander Batalov e38e7060d4 Review some mve video playback routines 2025-02-12 20:27:06 +03:00
Alexander Batalov d6fc3bb2d8 Remove unused movie callbacks 2025-02-12 08:29:34 +03:00
Alexander Batalov 82793d14f4 Update linux runner (#455) 2025-02-12 08:04:34 +03:00
Alexander Batalov a5d252f19b Remove 16 bpp mve leftovers 2025-02-12 07:07:57 +03:00
Alexander Batalov e5d4d310c0 Fix dialog option bounding box (#454) 2025-02-12 02:50:27 +03:00
Alexander Batalov fa1621ff56 Remove dictionary mem indirection 2025-02-11 20:26:43 +03:00
Alexander Batalov 52e5611e1b Remove color palette stacks 2025-02-11 20:05:52 +03:00
Alexander Batalov d540a9ff04 Remove color mem indirection 2025-02-11 20:03:46 +03:00
Alexander Batalov 1b6fe7e15b Remove color IO indirection 2025-02-11 19:53:41 +03:00
Alexander Batalov 900140f8f7 Make dialog window modal
Fixes #408
2025-02-11 18:40:10 +03:00
Alexander Batalov 14430c4f0a Review mve sync functions 2025-02-11 18:15:39 +03:00
Alexander Batalov a1fc68f13a Review mve palette functions 2025-02-10 22:44:40 +03:00
Alexander Batalov 2e15d01be3 Clarify MveSetShowFrame 2025-02-10 22:28:28 +03:00
Alexander Batalov 96335aebc9 Remove MVE_rmHoldMovie 2025-02-10 22:15:42 +03:00
Alexander Batalov 6ab3c508e6 Clarify MveHeader 2025-02-10 22:14:29 +03:00
Alexander Batalov f790a10e88 Clarify MveMem 2025-02-10 21:40:31 +03:00
Alexander Batalov 6b879e71b8 Remove mve frame save/load 2025-02-10 21:29:06 +03:00
Alexander Batalov 9878e205e6 Remove MVE_rmCallbacks 2025-02-10 21:23:52 +03:00
Alexander Batalov 0a5afd1e18 Clarify MveSetPalette 2025-02-10 21:21:45 +03:00
Alexander Batalov 625bf69b33 Review MVE_rmPrepMovie 2025-02-10 21:13:05 +03:00
Alexander Batalov 48c01eb8a1 Review MVE_rmFrameCounts 2025-02-10 21:07:38 +03:00
Alexander Batalov b105517ab3 Review MveSetScreenSize 2025-02-10 21:02:57 +03:00
Alexander Batalov 7d6371fd1c Remove movieLibSetPan 2025-02-10 20:54:38 +03:00
Alexander Batalov dc9824e2be Review MveSetVolume 2025-02-10 20:53:39 +03:00
Alexander Batalov 60a0d3ab8c Review MveSetIO 2025-02-10 20:52:08 +03:00
Alexander Batalov 58c82f9268 Review MveSetMemory 2025-02-10 20:48:17 +03:00
Alexander Batalov 8fcdbe0bee Add linux arm64 build (#453) 2025-02-10 19:19:06 +03:00
Alexander Batalov afff399fca Get rid of object data array accessor
Fixes #405
2025-02-09 23:05:56 +03:00
Vlad 080f999626 Code deobfuscation/decyphering (3) (#374) 2025-02-09 19:20:53 +03:00
Alexander Batalov 593f80144c Add cmake presets (#452) 2025-02-09 15:00:12 +03:00
Alexander Batalov 4df9ee557d Add option to use vendored vs. system dependencies (#451) 2025-02-09 13:49:04 +03:00
Alexander Batalov f6ba9d38fd Use FetchContent_MakeAvailable (#438) 2025-02-09 13:10:54 +03:00
Roman Turchin 277faa114e fix code formatting 2025-02-01 02:21:05 -05:00
Roman Turchin 1f91ab4d41 EM_ASM cleanup; silence warnings; add experemental wasm flags 2025-02-01 01:51:46 -05:00
Roman Turchin 0e68bfc280 merge with fallout2-ce org repo 2025-01-31 19:51:12 -05:00
Vasilii Rogin c26488f2a0 Merge pull request #36 from alexbatalov/main
Fix background music not being stopped when playing intro in mainmenu
2025-01-31 21:07:12 +02:00
Roman Turchin bf49e6b7e2 Merge remote-tracking branch 'origin/main' 2025-01-29 17:06:41 -05:00
Alexander Batalov c4cc713272 Fix background music not being stopped when playing intro in mainmenu
Closes #399
2025-01-29 21:57:06 +03:00
Roman Turchin dad514c2a4 Merge remote-tracking branch 'origin/main' 2025-01-29 10:43:22 -05:00
Vasilii Rogin 09ba154dcf Merge pull request #35 from alexbatalov/main
Pick changes from alexbatalov
2025-01-29 17:22:05 +02:00
Alexander Batalov f9af163495 Fix negative weapon ammo (#444) 2025-01-28 22:27:43 +03:00
Ryan Deering 9d6f4d9686 Fix mouse sensitivity (#416) 2025-01-28 22:27:10 +03:00
APAmk2 17042491c6 Code deobfuscation, part 3 #29 2025-01-26 01:23:00 +04:00
APAmk2 cfea9072db Merge branch 'main' into feature/code-readibility-3-new-repo 2025-01-26 01:18:59 +04:00
Vasilii Rogin 3d541f2be3 Merge pull request #34 from roginvs/add_webassembly_build_target
Fix github pages https://fallout2-ce.github.io/fallout2-ce/
2025-01-25 19:34:06 +02:00
Vasilii Rogin d53bda5012 Fix github pages https://fallout2-ce.github.io/fallout2-ce/ 2025-01-25 19:33:35 +02:00
Vasilii Rogin 97a7e4cc6a Merge pull request #33 from roginvs/add_webassembly_build_target
Install rsync
2025-01-25 19:28:25 +02:00
Vasilii Rogin 9b7c48a197 Use default branch name 2025-01-25 19:25:27 +02:00
Vasilii Rogin bf04bec410 Add permissions 2025-01-25 19:24:49 +02:00
Vasilii Rogin 7796238030 Install rsync 2025-01-25 19:23:17 +02:00
Vasilii Rogin e91880c26a Merge pull request #32 from roginvs/add_webassembly_build_target
Add webassembly build target
2025-01-25 19:19:12 +02:00
Vasilii Rogin 321892dd03 Use actions/checkout@v4 for checkout 2025-01-25 19:13:59 +02:00
Vasilii Rogin e42b7ad2c9 Fix flags 2025-01-25 18:43:49 +02:00
Vasilii Rogin c91057ec16 Use EM_ASYNC_JS correctly 2025-01-25 18:38:33 +02:00
Vasilii Rogin ed6930a5e5 Add different function names 2025-01-25 17:59:08 +02:00
Vasilii Rogin edde0470a6 Disable clang-format for JS code 2025-01-25 17:41:41 +02:00
Vasilii Rogin f79cff3565 Fixing clang-format 2025-01-25 17:38:40 +02:00
Vasilii Rogin d0c0a81ec8 Fix steps and branch names 2025-01-25 17:36:28 +02:00
Vasilii Rogin a791930acf Use #if defined( __EMSCRIPTEN__ ) for emscripten 2025-01-25 17:36:10 +02:00
Vasilii Rogin 25b5e9d272 Fix async call 2025-01-25 17:29:39 +02:00
Vasilii Rogin 3f15d3055c Sync idbfs on config save 2025-01-25 17:26:54 +02:00
Vasilii Rogin e611956cb0 Sync idbfs on game save 2025-01-25 17:25:23 +02:00
Vasilii Rogin 2abf530797 Clone web-interface from other repository 2025-01-25 17:20:38 +02:00
Vasilii Rogin 3883b68c86 Add workflow to build wasm version 2025-01-25 17:01:54 +02:00
Vasilii Rogin 090fa331cc Use -O1 optimization for web release builds due to issues with ios 2025-01-25 16:50:24 +02:00
Vasilii Rogin 1f0f08f3e4 Use DWARF for debug build 2025-01-25 16:49:59 +02:00
Vasilii Rogin 1e3aacebdd Fix build cmd 2025-01-25 16:12:21 +02:00
Vasilii Rogin 843e2f515a Update README 2025-01-25 16:08:30 +02:00
Vasilii Rogin 0aaf9e6125 Add Emscripten.cmake 2025-01-25 16:08:25 +02:00
Vasilii Rogin eceb96194c Add webassembly into CMakeLists.txt 2025-01-25 16:07:27 +02:00
Vasilii Rogin c1c143aa43 Update .gitignore 2025-01-25 16:06:38 +02:00
Vasilii Rogin 7fc23de62a Merge pull request #31 from alexbatalov/main
Pull changes from alexbatalov
2025-01-25 16:01:43 +02:00
ololoken bc577641fe Merge branch 'alexbatalov:main' into main 2025-01-24 22:49:45 -05:00
Roman Turchin 31abd327fd emscripten: move options to CMakeLists.txt 2025-01-22 02:49:41 -05:00
Alexander Batalov 2e14e4620e Remove text floaters after moving to another map or elevation
Fixes #401
2025-01-21 22:58:04 +03:00
Alexander Batalov 95d92d8bd0 Fix world map tabs
Closes #419
2025-01-21 21:31:56 +03:00
root acc52383ed emscripten: add CASE_INSENSITIVE_FS, move source map generation to debug mode 2025-01-19 04:12:48 -05:00
Roman Turchin 75c5f777fd emscripten: optimize fs sync; add source map output 2025-01-18 10:54:04 -05:00
Roman Turchin f06eb813e0 Merge remote-tracking branch 'origin/main' 2025-01-18 10:50:33 -05:00
APAmk2 4270ee33cc Improved touchscreen controls #27 2025-01-18 00:30:11 +04:00
Vlad 46c2f460fb Merge branch 'main' into feature/code-readibility-3 2025-01-17 13:15:01 +01:00
APAMk2 a852e88bf8 Clang format fix 2025-01-17 01:05:21 +04:00
APAMk2 178de356f1 Improved touch controls 2025-01-17 00:43:25 +04:00
Vasilii Rogin 04b8c847d3 Merge pull request #26 from alexbatalov/main
Pull changes from alexbatalov
2025-01-14 18:18:05 +02:00
Alexander Batalov d586e81827 Migrate fpattern (#442) 2025-01-14 08:45:02 +03:00
Vasilii Rogin 26574914ff Merge pull request #25 from alexbatalov/main
Update macOS/iOS deployment target (#440)
2025-01-13 21:31:31 +02:00
Alexander Batalov 67375a5857 Update macOS/iOS deployment target (#440) 2025-01-13 21:22:30 +03:00
Vasilii Rogin 9be2e45f43 Merge pull request #24 from alexbatalov/main
Pull changes from alexbatalov
2025-01-13 20:15:26 +02:00
Alexander Batalov 3dbea2e400 Use snprintf in win_get_num_i 2025-01-13 20:33:11 +03:00
Graham GowerandAlexander Batalov bd7321b128 Fix buffer overrun for audio files with 8 char names (#378)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2025-01-13 20:17:13 +03:00
Vasilii Rogin 7bb9104a7d Merge pull request #23 from roginvs/alexbatalov_main
Pick changes from alexbatalov/main
2025-01-13 18:23:27 +02:00
Vasilii Rogin 18c5ce786e Merge branch 'main' into alexbatalov_main 2025-01-13 18:18:01 +02:00
Vasilii Rogin eb9f745b78 Merge pull request #21 from roginvs/ci_fix_releases
Release only on master push
2025-01-13 18:12:50 +02:00
Vasilii Rogin 3a9f0a500f Remove pull request condition 2025-01-13 18:05:24 +02:00
Vasilii Rogin 38717c9710 Remove close condition 2025-01-13 18:04:20 +02:00
Vasilii RoginandAlexander Batalov ad7b0e56ab Fix default hit location on called shots (#429)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2025-01-13 18:41:18 +03:00
Alexander V. Nikolaev e770e64a48 Ensure fileFindFirst path is resolved (#369) 2025-01-13 18:05:12 +03:00
Jan Ĺ imek 5956227dcb Fix debug print on non-Windows platforms and Quick-save message (#400) 2025-01-13 02:33:14 +03:00
Condratiy Lenovin f443e365cc Add Epic Games Store link (#420) 2025-01-13 02:19:19 +03:00
Walter Agazzi b443e21c6e Fix wrong variable usage in character_editor (#432) 2025-01-13 02:11:48 +03:00
Vasilii Rogin 19ed168d42 Pvs studio fixes (#434) 2025-01-13 01:55:32 +03:00
Vasilii Rogin 29b8c7bfe5 Merge pull request #20 from roginvs/fix_no_sound_issue
Fix no sound issue
2025-01-12 23:24:24 +02:00
Vasilii RoginandAlexander Batalov 939211d640 Copy sound string because dictionary can re-allocate it (#436)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2025-01-12 23:59:34 +03:00
Alexander Batalov b5d857547e Review gsound_get_music_path 2025-01-12 23:40:39 +03:00
Alexander Batalov 0a9aaab4d1 Update macos runner (#437) 2025-01-12 22:04:21 +03:00
Vasilii Rogin 5c6e5e826a Copy sound string because dict can re-allocate it 2025-01-12 18:54:27 +02:00
Vasilii Rogin aed3723306 Merge pull request #18 from APAmk2/main
Runtime fix of Splashes wrong pal
2025-01-11 00:57:50 +02:00
APAMk2 319c116048 PR Fix for #18 2025-01-11 02:45:01 +04:00
APAMk2 61da360180 Runtime fix of Splashes wrong pal
The 1-st color always must be black, but never does in F2 splashes.
2025-01-11 02:38:54 +04:00
Vasilii Rogin 9d6134367a Merge pull request #14 from roginvs/pvs_studio_fixes
Pvs studio fixes
2025-01-10 21:55:03 +02:00
APAmk2 9b96e3118d Workflow permissions fix #17 2025-01-10 23:35:14 +04:00
APAMk2 f5507c8c5a Workflow permissions fix 2025-01-10 23:34:06 +04:00
APAmk2 926efeb0c5 Fix for workflow file #16 2025-01-10 23:14:55 +04:00
APAMk2 d3346b5d1b Fix for workflow 2025-01-10 23:13:32 +04:00
Vasilii Rogin b6c2fc02b6 Merge pull request #15 from APAmk2/main
Added creation of continuous releases on every commit to main branch
2025-01-10 19:39:41 +02:00
APAMk2 983092944d Added continuous building 2025-01-10 21:26:07 +04:00
Roman Turchin 68e363429c [WASM] add wasm build target 2025-01-09 21:56:46 -05:00
Vasilii Rogin eaab620c84 src/character_editor.cc 7253 err V783 Dereferencing of the invalid iterator 'gCustomKarmaFolderDescriptions.end()' might take place. 2025-01-07 21:16:31 +02:00
Vasilii Rogin 61742535d5 src/art.cc 636 err V781 The value of the 'type' variable is checked after it was used. Perhaps there is a mistake in program logic. Check lines: 636, 640. 2025-01-07 21:05:34 +02:00
Vasilii Rogin a66618cbff src/art.cc 528 err V547 Expression is always false.
Original function

signed int __usercall art_get_base_name_@<eax>(signed int type@<eax>, int fid@<edx>, char *strBuf@<ebx>)
{
   signed int result; // eax@3
   char *_strBuf; // edi@6
   int dstName; // esi@6
   char c1; // al@7
   char c2; // al@8

   if ( type >= 0 && type < 11 )
   {
      if ( fid < art[type].count )
      {
         _strBuf = strBuf;
         dstName = 13 * fid + art[type].mem;
         do
         {
            c1 = *dstName;
            *_strBuf = *dstName;
            if ( !c1 )
            {
               break;
            }
            c2 = *(dstName + 1);
            dstName += 2;
            _strBuf[1] = c2;
            _strBuf += 2;
         }
         while ( c2 );
         result = 0;
      }
      else
      {
         result = -1;
      }
   }
   else
   {
      result = -1;
   }
   return result;
}
2025-01-07 21:04:00 +02:00
Vasilii Rogin f8b63280f2 Merge pull request #13 from tag2015/main
Fix wrong variable usage in character_editor
2025-01-04 15:48:22 +02:00
Walter Agazzi a24e0630d7 Fix wrong variable usage in character_editor 2025-01-04 12:36:20 +01:00
APAmk2 be11208a88 Engine versioning #12 2025-01-02 14:33:33 +04:00
git 4a2174c8aa Clang warning fix, part 2 2025-01-02 02:42:31 +04:00
git 39733665fc Clang warning fix
Very strange, tbh
2025-01-02 02:41:27 +04:00
git 50467d3296 Added engine versioning 2025-01-02 02:30:24 +04:00
APAmk2 959d40dc06 y0lo PR fixes 2025-01-01 22:31:04 +04:00
git b2efcffec7 Fix to eliminate Clang warnings on old merged PRs 2025-01-01 22:24:54 +04:00
APAmk2 8675d89a39 Fast barter auto calc for money #5 2025-01-01 22:18:20 +04:00
APAmk2 a99a250a37 Clear input envents on combat turn #4 2025-01-01 22:16:10 +04:00
Vasilii Rogin 98cf43438c Merge pull request #9 from roginvs/fix_targeted_attack_on_non_critter
Set hitLocation when return status is not -1
2024-12-25 15:46:05 +02:00
Vasilii Rogin 8eae8a4cb0 Merge pull request #8 from roginvs/fallout2_ce_fix_formatting
Fix CI checks
2024-12-25 15:33:20 +02:00
Vasilii Rogin 1d3b5c1951 Bump macos version 2024-12-25 15:26:49 +02:00
Vasilii Rogin 5786f56606 Fix formatting 2024-12-25 15:20:27 +02:00
Vasilii Rogin ef3f3f3fc9 Set hitLocation when return status is not -1 2024-12-25 15:10:26 +02:00
APAmk2 64a53ff4d0 Merge pull request #1 from avnik/avnik/fix-case-sensitive-findfirst
Fix broken game load/save on Linux due to case sensitive opendir()
2024-11-24 22:58:25 +04:00
Vasilii Rogin 3b211b2d71 Merge pull request #6 from fallout2-ce/use-macos-12-for-mac-build
Use macos-12
2024-11-19 22:46:23 +02:00
Vasilii Rogin c920078f7e Use macos-12 2024-11-19 22:37:08 +02:00
APAmk2 660df2578a Merge pull request #3 from roginvs/add_tile_hires_stencil
Add tile hires stencil
2024-11-18 23:43:56 +04:00
Vasilii Rogin ea02ad0481 Workaround for error C7555: use of designated initializers requires at least '/std:c++20' 2024-11-14 15:33:51 +02:00
Vasilii Rogin 78e577892a Workaround for error C7555: use of designated initializers requires at least '/std:c++20' 2024-11-14 15:32:56 +02:00
Vasilii Rogin 9811069d7b Remove useless includes 2024-11-14 14:32:23 +02:00
Vasilii Rogin 451524e6e0 Remove old TODO 2024-11-14 14:27:10 +02:00
Vasilii Rogin 30cfd0f089 Fix formatting 2024-11-14 14:10:33 +02:00
Vasilii Rogin e44aeb6894 Use config option 2024-11-14 14:09:20 +02:00
Vasilii Rogin 74eb64b594 Disable debug checks 2024-11-14 14:02:57 +02:00
Vasilii Rogin a59bfdb64b Fix debug print message 2024-11-14 14:02:03 +02:00
Vasilii Rogin 1d53594961 Fix initialization place 2024-11-14 14:00:29 +02:00
Vasilii Rogin 6375269f69 Add tiles hires stencil 2024-11-14 13:54:13 +02:00
Jan Ĺ imek 28c3908862 Sfall: add support for loading mods / mod_order.txt 2024-06-04 17:07:17 +02:00
phobos2077 323cc6165c Decyphering inventory.cc + a few other places 2024-06-02 14:11:26 +02:00
phobos2077 dfcf61b184 Misc decyphering 2024-05-31 13:23:45 +02:00
phobos2077 20d55423f7 Decypher Party level 2024-05-31 13:22:07 +02:00
phobos2077 8714d418ac Clang format fixes 2024-05-18 20:08:02 +02:00
phobos2077 6efbe795dc Decyphering in and around proto_instance + fix build 2024-05-18 20:02:03 +02:00
phobos2077 ebb6a6b9d8 Decyphering: perform_drug_effect, MapHeader, perk params
- Remove a few constant conditions in worldmap.cc
2024-05-18 19:07:24 +02:00
phobos2077 26c04ae803 obj_attempt_placement + WM encounter ratioMode naming 2024-05-16 23:30:58 +02:00
phobos2077 da72bc9501 Inventory symbol naming (WIP) 2024-05-16 23:29:46 +02:00
phobos2077 91a502d704 gdialog_scroll_subwin() readability 2024-05-08 23:01:40 +02:00
Alexander V. Nikolaev d843a662b3 Ensure fileFindFirst path is resolved 2024-05-05 16:08:39 +03:00
phobos2077 71f84cbe44 Decypher buildFid (art_id) function 2024-05-03 16:22:18 +02:00
Alexander Batalov 9fb917c357 Bump version to 1.3.0 2024-04-21 12:46:24 +03:00
Alexander Batalov aa31185b35 Update release workflow 2024-04-21 11:23:18 +03:00
Alexander Batalov ec0685ea19 Normalize and resolve asset bundle paths 2024-04-06 16:41:49 +03:00
Alexander Batalov 2c7ab7f5c8 Detect alternative default music directory 2024-04-06 16:33:16 +03:00
Alexander Batalov 8de73ad774 Refactor file find
Fixes #352
2024-04-06 12:47:11 +03:00
Alexander Batalov 3ceacf1001 Fix warning 2024-04-06 12:01:48 +03:00
Alexander Batalov 31afb4d568 Bump actions to v4 2024-03-03 11:27:37 +03:00
Alexander Batalov 95cbba3920 Bump zlib to 1.3.1 2024-03-03 09:39:06 +03:00
sonilyan 16b044ae31 Fix obj_can_see_obj not working in release build (#350) 2024-02-15 05:04:57 +03:00
sonilyan caea9cb4fb Fix yaam no damage (#351) 2024-02-15 05:02:56 +03:00
Alexander Batalov 8325823493 Expose game data files to iOS Files app
Fixes #343
2024-01-16 23:42:25 +03:00
Alexander Batalov 8e1e8d483c Review db_total
Fixes #327
2024-01-16 22:37:06 +03:00
Alexander Batalov 1b18c2baa3 Fix custom patch file name template
Follow-up to #309
2024-01-16 22:35:16 +03:00
Alexander Batalov 70d5830f00 Force LF on .mm 2024-01-16 19:04:14 +03:00
yabisiktir 401df384ef modernize-use-nullptr (#332) 2024-01-16 18:57:49 +03:00
Vlad 59af02cca9 Variable naming, part 2 (#320) 2024-01-16 16:33:08 +03:00
c6 c6565ac96a Sfall: add VersionString, ConfigFile, PatchFile (#309) 2024-01-16 15:56:21 +03:00
Jo 16f4ab7787 Improve pointer comparsion for Nevada and Sonora mods (#291) 2024-01-16 15:42:32 +03:00
Vasilii Rogin e23c4eddda Use delay_ms instead of spinwait (#262) 2024-01-16 15:24:49 +03:00
λP.(P izzy) 601f0c7b44 fix CMake condition to allow build on OpenBSD & FreeBSD (#341) 2024-01-16 15:06:47 +03:00
sonilyan f411d75643 Add overriddenSelf initialization for scriptRead (#329) 2023-10-31 13:46:25 +03:00
Vasilii Rogin 81fce5f4a2 Fix wrong pointer dereferecing in aiFindAttackers (#324) 2023-10-09 20:50:59 +03:00
Eir Nym 0e447c55a8 Upgrade zlib to 1.3 (#323) 2023-09-28 17:26:52 +03:00
Alexander Batalov 91806d8ccb Fix missing include 2023-09-03 22:31:52 +03:00
Alexander Batalov a30fb4cfdd Add mapper_refresh_rotation 2023-09-03 22:21:14 +03:00
Alexander Batalov def8effa9f Add handle_new_map 2023-09-03 21:42:17 +03:00
Alexander Batalov d46ee07583 Add mapper_destroy_highlight_obj 2023-09-03 21:30:59 +03:00
Alexander Batalov ee19238667 Add update_toolname 2023-09-03 20:48:23 +03:00
Alexander Batalov 0d83cff24e Add place_entrance_hex 2023-09-03 20:24:36 +03:00
Alexander Batalov 30a3bf9b71 Add pick_region 2023-09-03 20:23:50 +03:00
Alexander Batalov 8c61b0bd8c Add sort_rect 2023-09-03 19:15:50 +03:00
Alexander Batalov 6e9f1ae517 Add op_set_self 2023-09-03 18:23:19 +03:00
Alexander Batalov ad3e0eb752 Add op_explosions_metarule 2023-09-03 16:51:29 +03:00
Alexander Batalov b40bfcc64a Add some metarules 2023-09-03 16:26:52 +03:00
Alexander Batalov b706756ec9 Add op_get_script 2023-09-03 13:34:16 +03:00
Alexander Batalov 427672741a Add op_list_as_array 2023-09-02 22:06:37 +03:00
Alexander Batalov bb3513956c Add op_force_encounter 2023-09-02 21:34:41 +03:00
Alexander Batalov 84aecfa823 Add draw_rect 2023-09-02 20:07:02 +03:00
Alexander Batalov 7f920fe13b Add erase_rect 2023-09-02 19:57:14 +03:00
Alexander Batalov 9178abc53d Add toolbar_proto 2023-09-02 19:47:15 +03:00
Alexander Batalov 84288612ef Add map_toggle_block_obj_viewing_on 2023-09-02 19:43:56 +03:00
Alexander Batalov 4a94b19f60 Add proto_subdata_setup_pid_button 2023-09-02 19:36:17 +03:00
Alexander Batalov b0b161ceb5 Add proto_subdata_setup_fid_button 2023-09-02 19:31:16 +03:00
Alexander Batalov 1c2fd05bcd Add proto_subdata_setup_int_button 2023-09-02 18:33:32 +03:00
Alexander Batalov e0b18a8785 Add target_exit 2023-09-02 18:08:21 +03:00
Alexander Batalov 8929941d13 Add target_init 2023-09-02 18:07:37 +03:00
Alexander Batalov 8d2d5df65f Add target_new 2023-09-02 17:54:17 +03:00
Alexander Batalov fe47d88035 Add target_remove_tid 2023-09-02 17:47:43 +03:00
Alexander Batalov 29e81f3bf4 Add target_remove 2023-09-02 17:37:21 +03:00
Alexander Batalov 05b4c125e6 Add target_save 2023-09-02 17:19:51 +03:00
Alexander Batalov 96573a7209 Add target_remove_all 2023-09-02 17:14:49 +03:00
Alexander Batalov caf28a7286 Add target_tid_ptr 2023-09-02 17:07:43 +03:00
Alexander Batalov 25a3de62e7 Add target_ptr 2023-09-02 17:05:26 +03:00
Alexander Batalov fd3cd887b6 Add target_load 2023-09-02 16:40:18 +03:00
Alexander Batalov c3a6d07dc4 Add target_find_free_subnode 2023-09-02 16:24:07 +03:00
Alexander Batalov ed7ffac816 Add target_header_load 2023-09-02 15:31:23 +03:00
Alexander Batalov 59c43590cc Add target_header_save 2023-09-02 15:29:59 +03:00
Alexander Batalov f14f37f970 Add target_override_protection 2023-09-02 14:39:31 +03:00
Alexander Batalov cba1fc8f61 Add map_scr_remove_spatial 2023-07-25 11:56:20 +03:00
Alexander Batalov 8329d2fcf6 Add map_scr_remove_all_spatials 2023-07-25 11:14:41 +03:00
Alexander Batalov 1de7ef0151 Add init_mapper_protos 2023-07-24 15:19:18 +03:00
Alexander Batalov f1f4cac316 Add proto_choose_container_flags 2023-07-24 15:15:06 +03:00
Alexander Batalov 6ce6639f10 Add proto_wall_light_str 2023-07-24 10:57:31 +03:00
Alexander Batalov c5ad0c294f Add proto_critter_flags_redraw 2023-07-24 10:53:04 +03:00
Alexander Batalov f780969178 Add proto_critter_flags_modify 2023-07-24 10:46:31 +03:00
Alexander Batalov f3f61abc18 Add critter_flag_unset 2023-07-24 09:07:02 +03:00
Alexander Batalov 369a54f836 Add critter_flag_set 2023-07-24 09:04:11 +03:00
Alexander Batalov e9f3b34888 Add mp_pick_kill_type 2023-07-24 08:55:43 +03:00
Alexander Batalov c1258cbb4c Add proto_pick_ai_packet 2023-07-24 08:43:27 +03:00
Alexander Batalov 49804a52e6 Add combat_ai_name 2023-07-24 08:29:19 +03:00
Alexander Batalov e0e0db219c Add combat_ai_num 2023-07-24 08:27:42 +03:00
Alexander Batalov f93aa710a4 Add target_pick_local_var 2023-07-24 08:20:15 +03:00
Alexander Batalov ca206da4af Add target_pick_map_var 2023-07-24 08:17:04 +03:00
Alexander Batalov f6461a44dc Add target_pick_global_var 2023-07-24 08:13:45 +03:00
Alexander Batalov 3a271a399f Add pick_rot 2023-07-24 08:10:46 +03:00
Alexander Batalov ac1f4477ef Add target_make_path 2023-07-24 08:08:01 +03:00
Alexander Batalov 708862ca24 Add target_overriden 2023-07-24 08:03:25 +03:00
Alexander Batalov 57711cae5f Add mapper_edit_exit 2023-07-24 07:17:21 +03:00
Alexander Batalov f6e9a9d975 Make MapDirErase public 2023-07-24 07:15:58 +03:00
Alexander Batalov 4cd40b33af Add mapper_edit_init 2023-07-24 06:50:07 +03:00
Alexander Batalov 053e70dde4 Add gmouse_set_mapper_mode 2023-07-23 14:27:52 +03:00
Alexander Batalov 4b51b2f29b Add tile_toggle_roof 2023-07-23 14:15:20 +03:00
Alexander Batalov cdfd308193 Add mapper_main 2023-07-23 11:01:03 +03:00
Alexander Batalov 7327588fc3 Add MapperInit 2023-07-23 10:35:16 +03:00
Alexander Batalov d16f0010ac Add bookmarkInit 2023-07-23 10:26:43 +03:00
Alexander Batalov a27b2496d4 Add bookmarkExit 2023-07-23 10:25:58 +03:00
Alexander Batalov a2d61dc7c4 Add bookmarkHide 2023-07-23 10:23:55 +03:00
Alexander Batalov 093d4f23d8 Add bookmarkUnHide 2023-07-23 10:22:42 +03:00
Alexander Batalov 3331ad02b0 Add categoryInit 2023-07-23 10:20:54 +03:00
Alexander Batalov 661c689029 Add categoryExit 2023-07-23 10:19:02 +03:00
Alexander Batalov b1049fceb1 Add categoryToggleState 2023-07-23 10:17:52 +03:00
Alexander Batalov f933bff8ae Add categoryHide 2023-07-23 10:16:59 +03:00
Alexander Batalov 9f08c73b3c Add categoryUnhide 2023-07-23 10:15:51 +03:00
Alexander Batalov 4eaea0e3c0 Add proto_user_is_librarian 2023-07-23 10:10:09 +03:00
Alexander Batalov c652312157 Add print_toolbar_name 2023-07-23 10:01:58 +03:00
Alexander Batalov 8cc48cf52a Add update_high_obj_name 2023-07-23 09:55:58 +03:00
Alexander Batalov 9faa427a28 Add clear_toolname 2023-07-23 09:52:59 +03:00
Alexander Batalov 480094a3eb Add redraw_toolname 2023-07-23 09:49:22 +03:00
Alexander Batalov 1366b050b0 Add mapper_inven_unwield 2023-07-23 09:44:09 +03:00
Alexander Batalov e68c2a4784 Add mapper_mark_exit_grid 2023-07-23 09:39:13 +03:00
Alexander Batalov 78ae0fb3bf Add mapper_mark_all_exit_grids 2023-07-23 09:25:56 +03:00
Alexander Batalov 127de14318 Add win_get_num_i 2023-07-23 07:20:56 +03:00
Alexander Batalov 28d1d410d5 Add get_num_i 2023-07-23 06:08:23 +03:00
Alexander Batalov 4b65bdf021 Add scripts_request_townmap 2023-07-22 17:09:19 +03:00
Alexander Batalov cbb9cbc6fd Clarify some proto params 2023-07-22 17:00:24 +03:00
Alexander Batalov c72d8778ba Add proto_new 2023-07-22 16:53:01 +03:00
Alexander Batalov d6c3d74b3f Clarify proto_make_path address 2023-07-22 15:36:51 +03:00
Alexander Batalov 3c7248af5f Add proto_item_init 2023-07-22 15:34:32 +03:00
Alexander Batalov fd9fa80204 Add proto_item_subdata_init 2023-07-22 15:22:05 +03:00
Alexander Batalov 3d5cb4c3f4 Add proto_scenery_init 2023-07-22 15:07:39 +03:00
Alexander Batalov 01a68af4a4 Add proto_scenery_subdata_init 2023-07-22 15:05:00 +03:00
Alexander Batalov 6a75ec07e9 Add proto_wall_init 2023-07-22 14:59:32 +03:00
Alexander Batalov 1d310eb626 Add proto_tile_init 2023-07-22 14:58:47 +03:00
Alexander Batalov ffc440c809 Add proto_misc_init 2023-07-22 14:53:22 +03:00
Alexander Batalov a4daffa30e Add proto_copy_proto 2023-07-22 14:49:56 +03:00
Alexander Batalov ccabbd7688 Add proto_is_subtype 2023-07-22 14:46:51 +03:00
Alexander Batalov d27eafe03a Fix win_get_str return code 2023-07-21 11:22:57 +03:00
Alexander Batalov 7a45ac72f0 Add reading mapper config 2023-07-21 11:10:15 +03:00
Alexander Batalov f6cfc1fa3a Clarify GNW_check_menu_bars param 2023-07-21 11:02:54 +03:00
Alexander Batalov 6dcbcb97ad Add process_pull_down 2023-07-21 10:50:33 +03:00
Alexander Batalov 769599c463 Fix closing same file twice
Closes #318
2023-07-21 08:04:10 +03:00
Alexander Batalov 50d7c71db1 Clarify dragging flags 2023-07-20 11:13:01 +03:00
Alexander Batalov b07a7bcefd Complete win_drag 2023-07-20 10:20:05 +03:00
Alexander Batalov 867d28ac62 Add rect_clip 2023-07-20 10:13:21 +03:00
Alexander Batalov d9a173678a Cleanup timed msgs code 2023-07-20 09:39:15 +03:00
Alexander Batalov dde3255b07 Fix endless loop while cleaning up timed msgs 2023-07-20 09:21:26 +03:00
Alexander Batalov 1506ae7048 Add win_timed_msg 2023-07-20 08:53:26 +03:00
Alexander Batalov ce5d07e09c Add win_yes_no 2023-07-19 21:27:20 +03:00
Alexander Batalov 2d8a637f7d Force debug window font 2023-07-19 12:05:39 +03:00
Alexander Batalov 8414effc04 Fix GNW color indexes 2023-07-19 12:01:20 +03:00
Alexander Batalov 3a17818ceb Handle debug mode
Closes #298
2023-07-19 11:51:13 +03:00
Alexander Batalov 90d1545bb2 Uninline debug_register_func 2023-07-19 11:45:55 +03:00
Alexander Batalov a7628ccaea Fix bufferDrawLine
Missing 1 pixel in the middle of the vertical line.
2023-07-19 11:43:10 +03:00
Alexander Batalov 3af2a49250 Review debug_register_log 2023-07-19 11:39:01 +03:00
Vlad ffe90eef49 Improve code readability (#315) 2023-07-13 13:35:26 +03:00
Alexander Batalov c4c2806071 Fix game time calculations (#307) 2023-07-13 13:04:31 +03:00
Ivan Sokolov 0e31ac4753 Simplyfy logic to calc suggested amount of barter money 2023-06-22 00:38:18 +08:00
Ivan Sokolov a949178e30 Set recomended ammount of money to be moved for barter
The feature works in any direction to move from/to player/npc and from/to inventory/table
2023-06-21 21:13:06 +08:00
Ivan Sokolov 0e806d9be3 Add feature for automatic calculation of barter money 2023-06-20 17:21:10 +08:00
Ivan Sokolov 2d88189b4c Clear input envents on combat turn
Issue: if a user skips turn by clicking end a combat turn button
the cursor becomes frozen in "watch" mode but all input events are queued.
If a user clicked while the AI turn is not ended then the next user's turn is skipped.

Fix: clear input queue each time before user's turn.
2023-06-16 18:16:53 +08:00
Alexander Batalov fe035d8514 Improve loadsave.cc readability 2023-06-16 08:12:38 +03:00
c6 cf98070cd0 Add Sfall AutoQuickSave (#305) 2023-06-16 08:01:44 +03:00
Austin Hurst 0ffcb107af Implement SCALE_2X for Fallout 2 (#306) 2023-06-16 07:18:15 +03:00
Alexander Batalov cf5f865a23 Add load/save global vars (#296) 2023-06-03 08:06:49 +03:00
Alexander Batalov 37e4822ed5 Add keyboard opcodes (#295) 2023-06-01 19:01:03 +03:00
Alexander Batalov bf639a2c4a Fix copying files on case-sensitive file systems
Closes #273
2023-06-01 17:10:36 +03:00
Alexander Batalov 89839be3af Add global scripts (#294) 2023-05-31 21:48:44 +03:00
Alexander Batalov ec722475b6 Add op_create_message_window
See #200
2023-05-30 14:21:50 +03:00
Alexander Batalov 32ed3c3271 Add FixNamespaceComments 2023-05-30 12:56:51 +03:00
Alexander Batalov 03bf507893 Add ini opcodes (#293) 2023-05-30 12:52:55 +03:00
Alexander Batalov 681b7c388b Fix sfall opcode comments 2023-05-30 09:12:51 +03:00
Vasilii RoginandAlexander Batalov fe0d767521 Add SFall arrays (#269)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2023-05-30 09:06:55 +03:00
Alexander Batalov 62c5c4757c Fix comparing pointers and integers
See #189
2023-05-24 21:52:50 +03:00
Vasilii RoginandAlexander Batalov 70b0b61664 Delete critter from combat during _partyFixMultipleMembers (#277)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2023-05-24 21:32:09 +03:00
Vasilii Rogin 53a4437be9 Remove trailing comma after reading strParseIntWithKey (#259) 2023-05-23 23:51:04 +03:00
Vasilii RoginandAlexander Batalov 42c541012c Fix crash in _map_age_dead_critters (#258)
Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
2023-05-23 23:50:37 +03:00
Vlad 61293bd39c Fix ruined stack in rm_mult_objs_from_inven and name remaining opcodes (#289) 2023-05-23 23:45:18 +03:00
Alexander Batalov d641fefc13 Fix open door sound
See alexbatalov/fallout1-ce#71
2023-05-23 23:43:00 +03:00
Alexander Batalov 666e5cf62d Fix mouse events processing
See alexbatalov/fallout1-ce#55
2023-05-23 23:32:11 +03:00
Alexander Batalov 2565900f90 Fix clang-format args
Looks like clang-format in Ubuntu does not recognize glob pattern as
macOS does. Previous solution without xargs reported status code of
find itself, not clang-format.
2023-05-18 23:32:16 +03:00
Alexander Batalov 6b6fa3f111 Fix code format check 2023-05-09 18:42:47 +03:00
Alexander Batalov a06097aef5 Improve touch controls (#283) 2023-05-09 18:36:20 +03:00
Alexander Batalov efdc2e0199 Bump setup-java to v3 (#278) 2023-05-01 07:54:14 +03:00
Alexander Batalov d6a74468da Use Xcode for macOS builds (#275) 2023-05-01 07:10:04 +03:00
Alexander Batalov fcf8a87603 Ignore channels in acm files (#274) 2023-04-27 10:14:41 +03:00
Alexander Batalov a8815229a0 Add compat_access (#272) 2023-04-26 20:12:22 +03:00
Alexander Arkhipov aa99b2e1d3 Convert file paths to correct case (#214) 2023-04-26 17:45:36 +03:00
Vasilii Rogin 63d8300c61 Add clang format (#270) 2023-04-26 15:35:02 +03:00
Alexander Batalov 81c3ff9b1a Improve iOS icon (#271) 2023-04-26 15:11:24 +03:00
Alexander Batalov a0652e2646 Use Xcode for iOS builds (#267) 2023-04-26 14:11:26 +03:00
Alexander Batalov df3ac30de6 Add blocking objects opcodes 2023-04-20 11:22:47 +03:00
Alexander Batalov 6ca1329720 Add op_get_attack_type 2023-04-20 10:51:20 +03:00
Alexander Batalov 129361836f Add op_get_mouse_buttons 2023-04-20 10:31:32 +03:00
Alexander Batalov cf4921de1e Add op_tile_under_cursor 2023-04-20 10:25:13 +03:00
Alexander Batalov ecc6a8679b Add math opcodes 2023-04-20 09:53:50 +03:00
Alexander Batalov a39f149817 Add date/time opcodes 2023-04-19 19:10:09 +03:00
Alexander Batalov 540cc1e08b Add combat opcodes 2023-04-19 10:03:04 +03:00
Alexander Batalov ef34fdb519 Add proto data opcodes 2023-04-19 09:21:38 +03:00
Alexander Batalov 9b02f600de Add worldmap opcodes 2023-04-19 09:09:17 +03:00
Alexander Batalov 0bb07dbd50 Add pc base stats opcodes 2023-04-19 09:02:54 +03:00
Vasilii Rogin 0a85ce520b Use stack on the heap for roof fill (#263) 2023-04-18 11:06:07 +03:00
Vasilii Rogin 99bc14cf3a Add sFall movie timer options (#261) 2023-04-14 19:03:21 +03:00
Vasilii Rogin 527e152297 Allow messageIndex to be zero (#264) 2023-04-14 18:40:37 +03:00
Alexander Batalov c8d45854ba Normalize line endings when reading text files
Closes #250
2023-04-11 20:00:38 +03:00
Alexander Batalov 11472e8be9 Fix soundOpenData flags 2023-04-11 17:27:34 +03:00
Alexander Batalov 69e4adf5b3 Add HQ music support
See #239
2023-04-11 16:37:01 +03:00
Alexander Batalov a2eabd668b Fix missing speech in some Russian localizations
Closes #246
2023-04-11 14:03:55 +03:00
Alexander Batalov 6d1273d325 Improve button functions readability 2023-04-11 09:01:14 +03:00
TomArnaez e23b39abaa Fix crash in inventory list (#256) 2023-02-28 22:11:08 +03:00
Alexander Batalov 117b1d7b44 Fix iPad settings
Follow-up to alexbatalov/fallout1-ce#29
2023-02-28 20:31:19 +03:00
Alexander Batalov 6398f8a79e Fix itemDropAll
See #253
2023-02-28 16:11:48 +03:00
Alexander Batalov 81b9345303 Update config 2023-02-18 19:06:20 +03:00
Alexander Batalov 249892716e Get rid of mmx stuff 2023-02-18 18:14:30 +03:00
Alexander Batalov 3e8227a62b Extract mainmenu 2023-02-17 15:55:14 +03:00
Alexander Batalov 1570f860e8 Remove unnecessary calls 2023-02-17 15:53:42 +03:00
Alexander Batalov d7c4589a55 Extract preferences 2023-02-17 12:33:26 +03:00
Alexander Batalov 0a9a1dc7ca Fix faulty frms
Closes #235
2023-02-16 15:46:49 +03:00
Alexander Batalov 42346f66b2 Update readme 2023-02-15 12:47:32 +03:00
Alexander Batalov 7ac651b736 Adjust modal dialogs position 2023-02-15 11:37:00 +03:00
Alexander Batalov 0bb822ba60 Fix "Affect player speed" font
Closes #245
2023-02-15 09:23:46 +03:00
Alexander Batalov 075de8f837 Review sound IO functions 2023-02-13 11:51:09 +03:00
Alexander Batalov 36b5ceba8a Improve sound_decoder.cc accuracy 2023-02-13 11:02:17 +03:00
Alexander Batalov f5d3cfb5e3 Fix Fast Metabolism trait 2023-02-12 23:12:36 +03:00
Alexander Batalov 81210f46af Fix storing pointers in game global variables 2023-02-10 11:05:42 +03:00
Alexander Batalov c14f671a0d Add object and string concatenation
Fixes #232
2023-02-10 09:27:10 +03:00
Alexander Batalov 33141672ed Use screen borders for scrolling worldmap 2023-02-10 09:00:59 +03:00
Alexander Batalov 28083cfea9 Fix talking head mood transition 2023-02-09 19:40:25 +03:00
Alexander Batalov c9864741f3 Fix crash in artLockFrameDataReturningSize
Closes #231
2023-02-09 19:27:25 +03:00
Jiří Malák 5a230efd2b Properly handle path with spaces (#228) 2023-01-29 08:56:03 +03:00
Alexander Batalov 3aea6a98ef Fix loading custom interface frms 2023-01-21 15:24:18 +03:00
Alexander Batalov ba49abcea6 Fix some scripts not being properly removed
Closes #224
2023-01-21 13:15:18 +03:00
Alexander Batalov 47f5be8340 Fix HP being used as AP 2023-01-20 14:16:43 +03:00
Alexander Batalov d435185e9e Fix missing melee damage info 2023-01-20 14:12:03 +03:00
Alexander Batalov dcd450a9b7 Bump version to 1.2.0 2023-01-20 10:02:02 +03:00
Alexander Batalov bfbf692cc0 Add iOS release workflow 2023-01-20 09:57:52 +03:00
Alexander Batalov 2714dc1ea1 Fix memory alignment
See #135, #122
2023-01-19 20:27:22 +03:00
Alexander Batalov 8604d9c401 Fix check 2023-01-16 17:33:19 +03:00
Alexander Batalov b9261c3da2 Fix directory name reading 2023-01-16 17:01:52 +03:00
Alexander Batalov ed7176b796 Fix combatai_notify_onlookers 2023-01-16 16:55:31 +03:00
Alexander Batalov 6cac53d20b Rename critter maneuver flags 2023-01-16 16:49:50 +03:00
Alexander Batalov ad3860790c Fix NPCs not joining combat 2023-01-16 16:42:50 +03:00
Alexander Batalov bffe81d0b3 Improve cycle.cc readability 2023-01-05 11:29:00 +03:00
Alexander Batalov 6ab08bd22b Remove some unused db functions 2023-01-05 10:39:46 +03:00
Alexander Batalov 060c79fc20 Remove electronic registration 2023-01-05 10:27:16 +03:00
Alexander Batalov ac64fde502 Fix object rendering
Previous solution did not work well on high resolutions due to
incorrect tile calculations - was not updating edges and sometimes
hanged in endless loop trying to find upper-left or bottom-right
tiles.

New solution follows Sfall's HRP implementation.
2023-01-05 05:59:45 +03:00
Alexander Batalov 7496afa4f8 Clarify textObjectAdd param 2023-01-05 04:06:18 +03:00
Alexander Batalov 66955f893a Review light.cc 2023-01-03 23:56:52 +03:00
Alexander Batalov 9ee4cb4a26 Refactor min/max usage 2023-01-03 23:00:38 +03:00
Alexander Batalov a5cefd6c8b Clear dirty rect during map updates
Previous solution to replace squares was destructive in nature and
could possibly lead to unexpected things (especially with mods where
tile 0x293 might not be opaque black).

New solution follows mapper refresh routines where entire dirty rect
is reset to black as a preparation step.
2023-01-03 21:10:20 +03:00
Alexander Batalov d040ea814a Fix objects being animated while playing movies 2023-01-02 21:15:43 +03:00
Alexander Batalov 03145e4fcd Fix endgame slideshow issues
See #3
Closes #215
2023-01-02 14:34:42 +03:00
Alexander Batalov 812079004c Make credits fullscreen
See #3, #215
2023-01-02 13:09:03 +03:00
Alexander Batalov 6224af6178 Fix help screen issues
Closes #179
2023-01-02 11:13:32 +03:00
Alexander Batalov a8d3cdd148 Improve worldmap.cc readability 2022-12-31 14:12:04 +03:00
Alexander Batalov 95cc863fde Fix special encounter icon blinking 2022-12-30 16:45:49 +03:00
Alexander Batalov cc1562b056 Add fading effects when moving to/from worldmap
Follow-up to #193
2022-12-30 00:41:29 +03:00
Alexander Batalov 07f3c82444 Fix map loading background
Integrated interface bar area remained visible during map loading.
2022-12-29 23:33:09 +03:00
Alexander Batalov 9976728e04 Fix worldmap background
Closes #193
2022-12-29 21:54:40 +03:00
Alexander Batalov 5922d15b1c Fix various dialog box issues
- Better vertical positioning (account for word wrapping)
- Better horizontal positioning (consider both right and left gaps for
calculating available width).
- Prevent vertical text overflow.
2022-12-29 13:02:59 +03:00
Alexander Batalov 248d6dfb92 Add shadow to city labels 2022-12-29 10:43:02 +03:00
Alexander Batalov 73cc93a3e4 Cleanup some interface bar functions 2022-12-29 10:21:15 +03:00
Alexander Batalov 34259269a4 Improve "Whomever is attacking me" targeting
Fixes #197
2022-12-29 09:37:51 +03:00
Alexander Batalov 11217974c6 Improve aiFindAttackers 2022-12-28 19:45:17 +03:00
Alexander Batalov 0e13989f9c Fix critter lists sorting functions 2022-12-28 17:54:09 +03:00
Alexander Batalov 57dcf42b5c Fix custom disposition button 2022-12-28 17:33:01 +03:00
Alexander Batalov c2c26db5d9 Fix max throw range calculation 2022-12-28 12:33:10 +03:00
Alexander Batalov b6ee5fcbe9 Fix configGetIntList 2022-12-28 09:14:30 +03:00
Alexander Batalov 0e11569397 Add ai_check_drugs fixes and improvements (#29) 2022-12-28 02:19:43 +03:00
Alexander Batalov 4b137dac5f Improve graphlib accuracy 2022-12-27 18:59:24 +03:00
Alexander Batalov 1f6d5ebbc9 Improve some color functions readability 2022-12-27 16:27:14 +03:00
Alexander Batalov 462baa0a04 Improve color tables accuracy 2022-12-27 15:51:43 +03:00
Alexander Batalov b74f3c368b Fix warning 2022-12-26 12:03:14 +03:00
Alexander Batalov a05ab09e1b Cleanup audio IO 2022-12-26 11:48:47 +03:00
Alexander Batalov 1b0cd6d757 Improve SoundDecoder readability 2022-12-25 22:30:31 +03:00
Alexander Batalov b8dea116ee Improve Sound readability 2022-12-25 21:56:23 +03:00
Alexander Batalov e11f1af9ae Improve combat_ai.cc readability 2022-12-24 14:30:03 +03:00
Alexander Batalov 9c34b26fec Improve animation.cc readability 2022-12-23 15:49:56 +03:00
Alexander Batalov 9a6d45541f Rename animationRegisterPing 2022-12-23 15:22:53 +03:00
Alexander Batalov f4775775b8 Review dude move/run functions 2022-12-23 15:13:05 +03:00
Alexander Batalov a48d744cde Improve actions.cc readability 2022-12-23 12:44:52 +03:00
Alexander Batalov 16dbe1122e Normalize gradlew.bat 2022-12-23 10:55:15 +03:00
Alexander Batalov b0cb70ffa6 Fix file existence check 2022-12-23 10:34:20 +03:00
Alexander Batalov 512530c653 Fix building file list on non-Windows platforms 2022-12-23 10:33:16 +03:00
Alexander Batalov 982d4cc0f9 Truncate long names in file picker dialog 2022-12-23 10:30:31 +03:00
Alexander Batalov 3b951b8578 Add opSetWeaponAmmoPid 2022-12-22 20:36:31 +03:00
Alexander Batalov 17a4ee8a68 Add Sfall version opcodes (#200) 2022-12-22 20:18:07 +03:00
Alexander Batalov c85cda4b48 Fix rare crash when using grenades
Closes #208
2022-12-22 19:54:04 +03:00
Alexander Batalov c7ca358295 Rename OBJECT_NO_SAVE flag 2022-12-22 16:49:17 +03:00
Alexander Batalov 96296417c6 Rename OBJECT_NO_REMOVE flag 2022-12-22 16:47:11 +03:00
Alexander Batalov 737076a126 Fix getting elevation of freed object 2022-12-22 14:20:37 +03:00
Alexander Batalov c0908cf14f Fix visual artifacts caused by null tiles 2022-12-21 09:18:29 +03:00
Alexander Batalov 343911f736 Fix floor lighting 2022-12-20 18:44:21 +03:00
Alexander Batalov 281c1aa82a Review tileRenderFloorsInRect 2022-12-20 16:22:56 +03:00
Alexander Batalov 18afce71b0 Review tile_fill_roof 2022-12-20 15:10:42 +03:00
Alexander Batalov 9599d63f45 Review roof_fill_off 2022-12-20 15:09:01 +03:00
Alexander Batalov ce351988b5 Review roof_fill_on 2022-12-20 15:01:57 +03:00
Alexander Batalov feb3821565 Fix multiple knockout effects 2022-12-13 23:59:45 +03:00
Alexander Batalov 54eaff26ea Fix partyMemberIncLevels 2022-12-13 23:35:15 +03:00
Alexander Batalov 5a7ffde45e Fix max party member level 2022-12-13 23:29:34 +03:00
Alexander Batalov 1c0385ad11 Remove _obj_fix_combat_cid_for_dude
The same cid-to-object conversion performed by `combatLoad`.
2022-12-13 23:06:52 +03:00
Alexander Batalov 0fe6d88a3a Review combatLoad 2022-12-13 23:03:42 +03:00
Alexander Batalov 7596d4d721 Fix combat_is_shot_blocked 2022-12-13 22:18:12 +03:00
Alexander Batalov 8333e553e2 Add SubtileFill 2022-12-13 22:11:37 +03:00
Alexander Batalov 6f62cfd466 Fix critters dying on exit grids 2022-12-13 16:33:19 +03:00
Alexander Batalov 280b55ab05 Add isExitGridPid 2022-12-13 14:34:49 +03:00
Alexander Batalov e02dcdf69d Fix car disappearing when using town interface 2022-12-13 13:20:55 +03:00
Alexander Batalov b5701fb9b9 Fix worldmap scroll down button 2022-12-13 12:45:39 +03:00
Alexander Batalov c569b879f6 Fix opPrint 2022-12-13 11:35:07 +03:00
Alexander Batalov b36ac50425 Review windowShow 2022-12-13 10:37:52 +03:00
Alexander Batalov 029a84a113 Review gWindowIndexes 2022-12-13 10:18:02 +03:00
Alexander Batalov e6fddd6905 Rename window flags 2022-12-13 10:04:05 +03:00
Alexander Batalov b0b69bd780 Fix wmMapIdxToName 2022-12-09 00:52:03 +03:00
Alexander Batalov 6de4ac87df Use snprintf 2022-12-08 23:05:50 +03:00
Alexander Batalov 502c920656 Add reportOverloaded 2022-12-08 22:05:54 +03:00
Alexander Batalov c383fc6b95 Add mobile keyboard support (#206) 2022-12-08 20:41:59 +03:00
Alexander Batalov 4b03c714b4 Bump libsdl to 2.26.1 2022-12-08 19:48:53 +03:00
Alexander Batalov 0d93279a10 Fix missing include 2022-12-08 19:38:55 +03:00
Alexander Batalov 510d7bfe95 Reorganize includes 2022-12-08 19:18:39 +03:00
Alexander Batalov 19d0d2919f Remove unnecessary includes 2022-12-08 17:29:30 +03:00
Alexander Batalov 42f01c8d45 Remove unused 16bpp code 2022-12-08 17:26:28 +03:00
Alexander Batalov 0474199b5c Remove unnecessary include 2022-12-08 17:13:06 +03:00
Alexander Batalov 8a4ce6c658 Improve splash screen handling (#3)
* Fixes splash screens in Olympus
2022-12-08 16:41:55 +03:00
Alexander Batalov 884034f0bf Refactor stretching blitters
* Fixes skipped pixels
* Improves readability
2022-12-08 16:34:38 +03:00
Alexander Batalov 602ef7c1e1 Increase maps ambient sfx capacity 2022-12-08 14:10:31 +03:00
Alexander Batalov 897ff2bbd2 Add dialog options numbering 2022-12-08 10:58:54 +03:00
Alexander Batalov 9ade107e95 Rename Button fields 2022-12-07 16:42:37 +03:00
Alexander Batalov 1698cfa04b Rename Window fields 2022-12-07 16:39:30 +03:00
Alexander Batalov 59639c60a3 Cleanup 2022-12-07 10:17:48 +03:00
Alexander Batalov f056f0e131 Add opGetGameMode (#200) 2022-12-06 17:46:52 +03:00
Alexander Batalov dc90beb696 Add game mode tracking 2022-12-06 17:22:30 +03:00
Alexander Batalov 90da2164f2 Fix assignment 2022-12-06 17:13:48 +03:00
Alexander Batalov 9d9e09e80f Use MESSAGE_LIST_ITEM_FIELD_MAX_SIZE 2022-12-06 12:37:59 +03:00
sonilyan cd51e0cdd7 Fix crash for msg limit (#203) 2022-12-06 12:32:21 +03:00
drjfaust d49869f45c Fix several combat bugs (#204) 2022-12-06 12:17:11 +03:00
Alexander Batalov 3a541d4b67 Fix endurance label
Closes #201
2022-11-10 23:48:09 +03:00
Alexander Batalov 7471f9cdbe Fix palette fading 2022-11-10 23:43:18 +03:00
Alexander Batalov fe9ba9171e Add custom message lists support
Closes #130
See #200
2022-11-10 18:07:23 +03:00
Alexander Batalov 6c03e4e293 Fix storing pointers in map global variables 2022-11-09 14:35:07 +03:00
Alexander Batalov 3f25c9265b Fix arguments order 2022-11-09 13:54:32 +03:00
Alexander Batalov fa475c754e Add opReadByte
See #200
2022-11-09 13:09:56 +03:00
Alexander Batalov 5e9cf96106 Rename state structs
Fixes UB leading to crash when exiting the game
2022-11-09 11:41:53 +03:00
Alexander Batalov a70912d311 Fix ini section parsing 2022-11-09 11:11:19 +03:00
Alexander Batalov 67351b8b09 Fix player model customization 2022-11-09 10:21:12 +03:00
Alexander Batalov e0e0a1ee7d Add Sfall list functions
See #200
2022-11-08 22:55:25 +03:00
Alexander Batalov fa11122f87 Make spatial script finders public 2022-11-08 22:45:30 +03:00
Alexander Batalov ef54463fcc Add pc bonus stats opcodes
See #200
2022-11-08 18:59:14 +03:00
Alexander Batalov 2255481d50 Add missing header 2022-11-08 18:07:11 +03:00
Alexander Batalov 03a7e2e1b1 Add some Sfall global vars functions
See #200
2022-11-08 18:01:00 +03:00
Alexander Batalov 19bcfebe0d Add ammo/charges opcodes
See #200
2022-11-07 20:41:33 +03:00
Alexander Batalov 393d89f8c4 Add some Sfall opcodes
See #200
2022-11-07 20:03:04 +03:00
Alexander Batalov 9c6286f94a Increase number of opcodes 2022-11-07 19:06:37 +03:00
Alexander Batalov fa058f24b4 Add interface bar side panels
See #3
2022-11-07 16:05:34 +03:00
Alexander Batalov b2420bdc80 Refactor artLock with FrmImage 2022-11-07 13:55:05 +03:00
sonilyan 23bee9fd62 Add IFACE_BAR_WIDTH support (#188) 2022-11-07 13:35:22 +03:00
Alexander Batalov 3ec827d5c1 Fix worldmap position calculation
Closes #192
2022-11-07 10:59:16 +03:00
Alexander Batalov c692fc91af Fix error check
Closes #196
2022-11-03 18:16:50 +03:00
Alexander Batalov a38151bf2c Reorganize control flow in gdCustomSelect
Fixes #198
2022-11-03 18:08:49 +03:00
Alexander Batalov b689b3a757 Fix combat control fields not being cleared
Closes #194
2022-11-03 17:48:34 +03:00
Alexander Batalov e7d68c4f72 Get rid of PreferenceDescription packing
Fixes pointer alignment warnings.
2022-10-30 13:00:43 +03:00
Alexander Batalov bc43bdc99c Rename some variables in objectSetLocation 2022-10-30 09:39:43 +03:00
Alexander Batalov e5aa4a3518 Fix square tiles initial lookup 2022-10-30 09:31:09 +03:00
Alexander Batalov 4e98093d6c Fix crash when removing all scripts 2022-10-30 09:03:24 +03:00
Alexander Batalov 1342fd3ecf Fix warning 2022-10-30 08:45:04 +03:00
Alexander Batalov 3015f39368 Review interfaceFontGetStringWidthImpl 2022-10-30 08:41:00 +03:00
Alexander Batalov 37f7ecc1c3 Review SlotMap2Game 2022-10-29 21:27:08 +03:00
Alexander Batalov bdf2c219ab Fix error check 2022-10-29 21:09:53 +03:00
Alexander Batalov 3488833c2e Use SDL for logging 2022-10-29 20:57:11 +03:00
Alexander Batalov 4821cab724 Review tileSetCenter flags 2022-10-29 18:52:22 +03:00
Alexander Batalov 0851354c8a Rename _square_y 2022-10-29 18:25:28 +03:00
Alexander Batalov 2f42818a33 Review square coords math 2022-10-29 18:23:53 +03:00
Alexander Batalov 12367acb33 Fix byte swapping warnings 2022-10-29 18:17:57 +03:00
Alexander Batalov caa8b06d4f Fix UB when parsing encounter table 2022-10-29 18:14:49 +03:00
Alexander Batalov 2b63360b95 Fix memory alignment 2022-10-29 17:26:46 +03:00
Alexander Batalov 8dd8d1c312 Replace random generator 2022-10-29 17:21:54 +03:00
Alexander Batalov 8ee0f478ad Fix setting managed button procs 2022-10-28 11:02:53 +03:00
Alexander Batalov 9c6daa4abe Fix selecting managed window 2022-10-28 10:59:38 +03:00
Alexander Batalov 01f264e0c2 Fix color setters 2022-10-28 10:35:22 +03:00
Alexander Batalov 1bbd586cbb Fix trimming line ending in .lst files 2022-10-26 10:17:39 +03:00
Alexander Batalov 223930c464 Get rid of goto 2022-10-25 17:37:45 +03:00
Alexander Batalov 40510539ee Fix interface font loading 2022-10-25 15:57:31 +03:00
Alexander Batalov c47113ca29 Force screen redraw after playing movies
Fixes #180
2022-10-25 13:05:09 +03:00
Alexander Batalov ad9b8586e9 Fix testing pointers for nulls in Nevada
Closes #178
2022-10-25 09:57:13 +03:00
sonilyan 5b151634a5 Fix memory alignment (#187) 2022-10-25 09:12:54 +03:00
Martin Janiczek 7627092478 Make sfall key naming consistent (#172) 2022-10-25 09:05:09 +03:00
Martin Janiczek b60fe43b06 Refactor: use enum instead of magic numbers (#176) 2022-10-25 09:04:42 +03:00
Alexander Batalov 21aec548af Add iOS support (#167) 2022-10-14 11:40:11 +03:00
Alexander Batalov beb010cd0f Normalize fade duration
See #165
2022-10-11 17:58:02 +03:00
Alexander Batalov b23d05f850 Fix called shot window freeze
See #165
2022-10-10 11:42:10 +03:00
Alexander Batalov e16659d96d Fix key processing
Fixes buffer-underwrite crash on macOS when scancode is remapped to -1.
2022-10-08 12:32:50 +03:00
Alexander Batalov 4c1020af5f Fix path handling in _gsound_get_music_path 2022-10-08 10:56:46 +03:00
Alexander Batalov a4105d5826 Decouple drawing and rendering (#165) 2022-10-08 00:54:27 +03:00
Alexander Batalov ddae4df4ab Fix red dialog buttons 2022-10-07 23:31:17 +03:00
Alexander Batalov 74a9a9e530 Add audio engine initialization check
Fixes various bugs when movie system attemps to create audio buffer with
sound system being disabled via fallout2.cfg.
2022-10-07 15:17:07 +03:00
Alexander Batalov 223d214f57 Review lsgSaveGame
* Add scrolling
* Rename variables
2022-10-07 12:04:30 +03:00
Alexander Batalov a52fd4e70a Review lsgLoadGame
* Add missing cleanup
* Fixes double click handling
* Rename variables
2022-10-07 11:28:42 +03:00
Alexander Batalov 266c727870 Extract renderPresent 2022-10-06 19:10:01 +03:00
Alexander Batalov 54d230432b Refactor game config with Settings (#164) 2022-10-06 16:32:46 +03:00
Alexander Batalov 9663532e44 Add missing elevator ids 2022-10-05 18:29:21 +03:00
Alexander Batalov a4e9123bcc Fix crash in obj_use_item_on 2022-10-05 17:55:54 +03:00
Alexander Batalov 08691ce319 Fix incorrect death animation in opKillCritterType 2022-10-05 16:58:57 +03:00
Alexander Batalov d03fd5e43f Review opGetMessageString 2022-10-05 16:07:55 +03:00
Alexander Batalov 7ddd8f2894 Fix itemGetQuantity 2022-10-05 15:44:00 +03:00
Alexander Batalov 93a341bbaa Fix arguments order 2022-10-05 14:59:00 +03:00
Alexander Batalov d2c4538656 Fix obj_can_see_obj elevation check 2022-10-05 14:56:29 +03:00
Alexander Batalov 8a5c3bc97b Fix obj_can_hear_obj implementation 2022-10-05 14:38:19 +03:00
Alexander Batalov db57fe6a5e Review isWithinPerception 2022-10-05 14:25:36 +03:00
Alexander Batalov 56d798dd12 Display encounter description in one line 2022-10-05 14:20:32 +03:00
Alexander Batalov 90942c46b2 Uninline obj_set_seen 2022-10-05 13:49:18 +03:00
Alexander Batalov 1cda2beef7 Fix looting corpses with NoSteal flag 2022-10-05 13:26:13 +03:00
Alexander Batalov 8754a5d6c9 Rename critter flags 2022-10-05 13:06:49 +03:00
Alexander Batalov 65f43804b3 Rename core 2022-10-05 10:35:05 +03:00
Alexander Batalov 9b150257fb Rename some input functions 2022-10-05 10:11:47 +03:00
Alexander Batalov 32c7883f82 Cleanup input.h 2022-10-05 09:54:46 +03:00
Alexander Batalov 1c73fb7240 Extract input 2022-10-05 09:23:27 +03:00
Alexander Batalov cce1bb223e Handle window size change (#163) 2022-10-04 13:15:54 +03:00
Alexander Batalov 624076ae9b Fix Doctor skill usage 2022-10-04 09:23:17 +03:00
Alexander Batalov 8d61a19dbe Remove declarations 2022-10-03 18:11:55 +03:00
Alexander Batalov 0264c00ab8 Extract keyboard 2022-10-03 16:42:34 +03:00
Alexander Batalov e1f22b8218 Review game state functions 2022-10-03 15:54:18 +03:00
Alexander Batalov fe4c125474 Fix crash when dialog speaker destroys itself
See #162
2022-10-03 15:04:30 +03:00
Alexander Batalov 56d27400ac Add missing include 2022-10-03 14:52:47 +03:00
Alexander Batalov b5681984cd Extract mouse 2022-10-03 12:41:33 +03:00
Alexander Batalov a541d0f24a Fix type warnings 2022-10-03 10:19:22 +03:00
Alexander Batalov 20a41088c6 Remove trap.cc 2022-10-03 10:01:42 +03:00
Alexander Batalov 16ab9cb958 Fix lock check 2022-10-03 09:38:43 +03:00
Alexander Batalov 5f9ceb7f5d Extract vcr 2022-10-03 09:37:05 +03:00
Alexander Batalov a1c1e03da0 Refactor artLockFrameData with FrmImage 2022-09-26 16:09:22 +03:00
Alexander Batalov ac0a044a32 Refactor artLockFrameData with FrmImage 2022-09-26 15:17:22 +03:00
Alexander Batalov 4aae167bd8 Refactor artLockFrameData with FrmImage 2022-09-26 11:55:06 +03:00
Alexander Batalov 2e5be31ed4 Refactor artLockFrameData with FrmImage 2022-09-26 11:14:11 +03:00
Alexander Batalov 45278f66a5 Refactor artLockFrameData with FrmImage 2022-09-26 10:36:54 +03:00
Alexander Batalov 2205077d36 Refactor artLockFrameData with FrmImage 2022-09-26 10:28:44 +03:00
Alexander Batalov 67f966f7a9 Refactor artLockFrameData with FrmImage 2022-09-24 22:53:25 +03:00
Alexander Batalov 463968d798 Refactor artLockFrameData with FrmImage 2022-09-24 21:29:50 +03:00
Alexander Batalov 109dc6680c Refactor artLockFrameData with FrmImage 2022-09-24 21:22:40 +03:00
Alexander Batalov 23c5f070fa Refactor artLockFrameData with FrmImage 2022-09-24 21:04:32 +03:00
Alexander Batalov fd9843f8dc Fix type warning 2022-09-24 19:43:27 +03:00
Alexander Batalov 443070226f Refactor artLockFrameData with FrmImage 2022-09-24 19:41:25 +03:00
Alexander Batalov db63d8a085 Refactor artLockFrameData with FrmImage 2022-09-24 18:15:52 +03:00
Alexander Batalov f203cfcc83 Refactor artLockFrameData with FrmImage 2022-09-24 17:31:13 +03:00
Alexander Batalov 9ceb490f72 Refactor artLockFrameData with FrmImage 2022-09-24 17:03:50 +03:00
Alexander Batalov 5b7a676b35 Refactor artLockFrameData with FrmImage 2022-09-24 16:51:16 +03:00
Alexander Batalov e50e26cf87 Refactor artLockFrameData with FrmImage 2022-09-24 16:39:15 +03:00
Alexander Batalov f59c072d68 Add FrmImage 2022-09-24 16:14:54 +03:00
Alexander Batalov 79c396c1a0 Uninline characterSelectorWindowFatalError 2022-09-24 10:28:30 +03:00
Alexander Batalov 9bb053b3ba Add namespace (#155) 2022-09-23 15:43:44 +03:00
Alexander Batalov 3168c2ec09 Improve some combat functions readability 2022-09-23 14:01:39 +03:00
309 changed files with 34175 additions and 23700 deletions
+1
View File
@@ -1,2 +1,3 @@
BasedOnStyle: WebKit
AllowShortIfStatementsOnASingleLine: WithoutElse
FixNamespaceComments: true
+1
View File
@@ -7,6 +7,7 @@
*.java text eol=lf
*.json text eol=lf
*.md text eol=lf
*.mm text eol=lf
*.plist text eol=lf
*.pro text eol=lf
*.properties text eol=lf
File diff suppressed because it is too large Load Diff
+84 -33
View File
@@ -17,17 +17,17 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 11
cache: gradle
- name: Cache cmake build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: os/android/app/.cxx
key: android-cmake-v1
@@ -51,11 +51,59 @@ jobs:
run: |
cd os/android/app/build/outputs/apk/release
cp app-release.apk fallout2-ce-android.apk
gh release upload ${{ github.ref_name }} fallout2-ce-android.apk
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-android.apk
rm fallout2-ce-android.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ios:
name: iOS
runs-on: macos-14
steps:
- name: Clone
uses: actions/checkout@v4
- name: Cache cmake build
uses: actions/cache@v4
with:
path: build
key: ios-cmake-v1
- name: Configure
run: |
cmake \
-B build \
-D CMAKE_TOOLCHAIN_FILE=cmake/toolchain/ios.toolchain.cmake \
-D ENABLE_BITCODE=0 \
-D PLATFORM=OS64 \
-G Xcode \
-D CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY='' \
# EOL
- name: Build
run: |
cmake \
--build build \
--config RelWithDebInfo \
-j $(sysctl -n hw.physicalcpu) \
# EOL
- name: Pack
run: |
cd build
cpack -C RelWithDebInfo
- name: Upload
run: |
cd build
cp fallout2-ce.ipa fallout2-ce-ios.ipa
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-ios.ipa
rm fallout2-ce-ios.ipa
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
linux:
name: Linux (${{ matrix.arch }})
@@ -70,7 +118,7 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Dependencies (x86)
if: matrix.arch == 'x86'
@@ -87,7 +135,7 @@ jobs:
sudo apt install libsdl2-dev zlib1g-dev
- name: Cache cmake build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: build
key: linux-${{ matrix.arch }}-cmake-v1
@@ -120,7 +168,7 @@ jobs:
run: |
cd build
tar -czvf fallout2-ce-linux-${{ matrix.arch }}.tar.gz fallout2-ce
gh release upload ${{ github.ref_name }} fallout2-ce-linux-${{ matrix.arch }}.tar.gz
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-linux-${{ matrix.arch }}.tar.gz
rm fallout2-ce-linux-${{ matrix.arch }}.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -132,16 +180,16 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Import code signing certificates
uses: apple-actions/import-codesign-certs@v1
uses: apple-actions/import-codesign-certs@v2
with:
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_FILE_BASE64 }}
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_PASSWORD }}
- name: Cache cmake build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: build
key: macos-cmake-v3
@@ -150,41 +198,44 @@ jobs:
run: |
cmake \
-B build \
-D CMAKE_BUILD_TYPE=RelWithDebInfo \
-D CPACK_BUNDLE_APPLE_CERT_APP="${{ secrets.APPLE_DEVELOPER_CERTIFICATE_IDENTITY }}" \
-G Xcode \
-D CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="${{ secrets.APPLE_DEVELOPER_CERTIFICATE_IDENTITY }}" \
-D CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS="NO" \
-D CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS="--options=runtime --timestamp" \
# EOL
- name: Build
run: |
cmake \
--build build \
--config RelWithDebInfo \
-j $(sysctl -n hw.physicalcpu) \
--target package \
# EOL
- name: Pack
run: |
cd build
cpack -C RelWithDebInfo
- name: Notarize
run: |
brew install mitchellh/gon/gon
cat << EOF > config.json
{
"notarize": {
"path": "build/fallout2-ce.dmg",
"bundle_id": "$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" build/fallout2-ce.app/Contents/Info.plist)",
"staple": true
}
}
EOF
gon config.json
rm config.json
env:
AC_USERNAME: ${{ secrets.APPLE_DEVELOPER_AC_USERNAME }}
AC_PASSWORD: ${{ secrets.APPLE_DEVELOPER_AC_PASSWORD }}
xcrun notarytool submit \
"build/Fallout II Community Edition.dmg" \
--apple-id "${{ secrets.APPLE_DEVELOPER_AC_USERNAME }}" \
--team-id "${{ secrets.APPLE_DEVELOPER_AC_TEAM }}" \
--password "${{ secrets.APPLE_DEVELOPER_AC_PASSWORD }}" \
--wait
- name: Staple
run: |
xcrun stapler staple \
"build/Fallout II Community Edition.dmg"
- name: Upload
run: |
cd build
cp fallout2-ce.dmg fallout2-ce-macos.dmg
gh release upload ${{ github.ref_name }} fallout2-ce-macos.dmg
cp "Fallout II Community Edition.dmg" fallout2-ce-macos.dmg
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-macos.dmg
rm fallout2-ce-macos.dmg
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -205,10 +256,10 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Cache cmake build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: build
key: windows-${{ matrix.arch }}-cmake-v1
@@ -232,7 +283,7 @@ jobs:
run: |
cd build/RelWithDebInfo
7z a fallout2-ce-windows-${{ matrix.arch }}.zip fallout2-ce.exe
gh release upload ${{ github.ref_name }} fallout2-ce-windows-${{ matrix.arch }}.zip
gh release upload ${{ github.event.release.tag_name }} fallout2-ce-windows-${{ matrix.arch }}.zip
rm fallout2-ce-windows-${{ matrix.arch }}.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+8
View File
@@ -9,6 +9,7 @@
*.user
*.userosscache
*.sln.docstates
.DS_Store
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
@@ -388,6 +389,13 @@ FodyWeavers.xsd
.idea/
*.sln.iml
# VSCode
.vscode
# CMake
/out
/build
# versioning header
src/platform/git_version.h
CMakeUserPresets.json
+169 -57
View File
@@ -4,9 +4,14 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(EXECUTABLE_NAME fallout2-ce)
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "")
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "")
if(APPLE)
if(IOS)
set(CMAKE_OSX_DEPLOYMENT_TARGET "12" CACHE STRING "")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "")
else()
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "")
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "")
endif()
endif()
project(${EXECUTABLE_NAME})
@@ -15,12 +20,17 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)
if (ANDROID)
option(FALLOUT_VENDORED "Use vendored third-party libraries" ON)
if(ANDROID)
add_library(${EXECUTABLE_NAME} SHARED)
else()
add_executable(${EXECUTABLE_NAME} WIN32 MACOSX_BUNDLE)
endif()
# Git Info
include("cmake/gitver.cmake")
target_sources(${EXECUTABLE_NAME} PUBLIC
"src/actions.cc"
"src/actions.h"
@@ -52,8 +62,6 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/combat.h"
"src/config.cc"
"src/config.h"
"src/core.cc"
"src/core.h"
"src/credits.cc"
"src/credits.h"
"src/critter.cc"
@@ -80,8 +88,6 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/display_monitor.h"
"src/draw.cc"
"src/draw.h"
"src/electronic_registration.cc"
"src/electronic_registration.h"
"src/elevator.cc"
"src/elevator.h"
"src/endgame.cc"
@@ -104,8 +110,6 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/game_mouse.h"
"src/game_movie.cc"
"src/game_movie.h"
"src/game_palette.cc"
"src/game_palette.h"
"src/game_sound.cc"
"src/game_sound.h"
"src/game_vars.h"
@@ -115,10 +119,10 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/geometry.h"
"src/graph_lib.cc"
"src/graph_lib.h"
"src/grayscale.cc"
"src/grayscale.h"
"src/heap.cc"
"src/heap.h"
"src/input.cc"
"src/input.h"
"src/interface.cc"
"src/interface.h"
"src/interpreter_extra.cc"
@@ -131,6 +135,8 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/inventory.h"
"src/item.cc"
"src/item.h"
"src/kb.cc"
"src/kb.h"
"src/light.cc"
"src/light.h"
"src/lips.cc"
@@ -139,6 +145,8 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/loadsave.h"
"src/main.cc"
"src/main.h"
"src/mainmenu.cc"
"src/mainmenu.h"
"src/map_defs.h"
"src/map.cc"
"src/map.h"
@@ -149,10 +157,10 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/memory.h"
"src/message.cc"
"src/message.h"
"src/mmx.cc"
"src/mmx.h"
"src/mouse_manager.cc"
"src/mouse_manager.h"
"src/mouse.cc"
"src/mouse.h"
"src/movie_effect.cc"
"src/movie_effect.h"
"src/movie_lib.cc"
@@ -194,8 +202,6 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/scripts.h"
"src/select_file_list.cc"
"src/select_file_list.h"
"src/selfrun.cc"
"src/selfrun.h"
"src/skill_defs.h"
"src/skill.cc"
"src/skill.h"
@@ -214,17 +220,19 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
"src/stat.h"
"src/string_parsers.cc"
"src/string_parsers.h"
"src/svga.cc"
"src/svga.h"
"src/text_font.cc"
"src/text_font.h"
"src/text_object.cc"
"src/text_object.h"
"src/tile.cc"
"src/tile.h"
"src/tile_hires_stencil.cc"
"src/tile_hires_stencil.h"
"src/trait_defs.h"
"src/trait.cc"
"src/trait.h"
"src/trap.cc"
"src/trap.h"
"src/version.cc"
"src/version.h"
"src/widget.cc"
@@ -248,25 +256,55 @@ target_sources(${EXECUTABLE_NAME} PUBLIC
target_sources(${EXECUTABLE_NAME} PUBLIC
"src/audio_engine.cc"
"src/audio_engine.h"
"src/delay.cc"
"src/delay.h"
"src/fps_limiter.cc"
"src/fps_limiter.h"
"src/platform_compat.cc"
"src/platform_compat.h"
"src/pointer_registry.cc"
"src/pointer_registry.h"
"src/preferences.cc"
"src/preferences.h"
"src/settings.cc"
"src/settings.h"
"src/sfall_config.cc"
"src/sfall_config.h"
"src/sfall_ext.cc"
"src/sfall_ext.h"
"src/sfall_global_vars.cc"
"src/sfall_global_vars.h"
"src/sfall_global_scripts.cc"
"src/sfall_global_scripts.h"
"src/sfall_ini.cc"
"src/sfall_ini.h"
"src/sfall_kb_helpers.cc"
"src/sfall_kb_helpers.h"
"src/sfall_lists.cc"
"src/sfall_lists.h"
"src/sfall_metarules.cc"
"src/sfall_metarules.h"
"src/sfall_opcodes.cc"
"src/sfall_opcodes.h"
"src/sfall_arrays.cc"
"src/sfall_arrays.h"
"src/touch.cc"
"src/touch.h"
)
if(IOS)
target_sources(${EXECUTABLE_NAME} PUBLIC
"src/platform/ios/paths.h"
"src/platform/ios/paths.mm"
)
endif()
if(WIN32)
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC
_CRT_SECURE_NO_WARNINGS
_CRT_NONSTDC_NO_WARNINGS
)
else()
target_compile_definitions(${EXECUTABLE_NAME} PRIVATE
$<$<CONFIG:Debug>:_DEBUG>
$<$<CONFIG:RelWithDebInfo>:_DEBUG>
NOMINMAX
WIN32_LEAN_AND_MEAN
)
endif()
@@ -276,7 +314,7 @@ if(WIN32)
)
endif()
if (WIN32)
if(WIN32)
target_sources(${EXECUTABLE_NAME} PUBLIC
"os/windows/fallout2-ce.ico"
"os/windows/fallout2-ce.rc"
@@ -284,29 +322,106 @@ if (WIN32)
endif()
if(APPLE)
target_sources(${EXECUTABLE_NAME} PUBLIC "os/macos/fallout2-ce.icns")
set_source_files_properties("os/macos/fallout2-ce.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
if(IOS)
set(RESOURCES
"os/ios/AppIcon.xcassets"
"os/ios/LaunchScreen.storyboard"
)
target_sources(${EXECUTABLE_NAME} PUBLIC ${RESOURCES})
set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/os/ios/Info.plist"
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.alexbatalov.fallout2-ce"
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"
)
set(MACOSX_BUNDLE_BUNDLE_NAME "${EXECUTABLE_NAME}")
set(MACOSX_BUNDLE_DISPLAY_NAME "Fallout 2")
else()
set(RESOURCES
"os/macos/fallout2-ce.icns"
)
target_sources(${EXECUTABLE_NAME} PUBLIC ${RESOURCES})
set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
set_target_properties(${EXECUTABLE_NAME} PROPERTIES
OUTPUT_NAME "Fallout II Community Edition"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/os/macos/Info.plist"
XCODE_ATTRIBUTE_EXECUTABLE_NAME "${EXECUTABLE_NAME}"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.alexbatalov.fallout2-ce"
)
set(MACOSX_BUNDLE_ICON_FILE "fallout2-ce.icns")
set(MACOSX_BUNDLE_BUNDLE_NAME "Fallout II: Community Edition")
set(MACOSX_BUNDLE_DISPLAY_NAME "Fallout II")
endif()
set_target_properties(${EXECUTABLE_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/os/macos/Info.plist")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.alexbatalov.fallout2-ce")
set(MACOSX_BUNDLE_BUNDLE_NAME "${EXECUTABLE_NAME}")
set(MACOSX_BUNDLE_ICON_FILE "fallout2-ce.icns")
set(MACOSX_BUNDLE_DISPLAY_NAME "Fallout 2")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.1.0")
set(MACOSX_BUNDLE_BUNDLE_VERSION "1.1.0")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.3.0")
set(MACOSX_BUNDLE_BUNDLE_VERSION "1.3.0")
endif()
if((NOT ${CMAKE_SYSTEM_NAME} MATCHES "Emscripten"))
if(FALLOUT_VENDORED)
add_subdirectory("third_party/zlib")
add_subdirectory("third_party/sdl2")
else()
find_package(ZLIB)
find_package(SDL2)
endif()
else()
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
--use-port=sdl2 \
--use-port=sdl2_mixer \
--use-port=zlib" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
--use-port=sdl2 \
--use-port=sdl2_mixer \
--use-port=zlib \
-std=c++17" )
set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O1")
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O1")
if(OPTION_WASM_64)
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sMEMORY64" )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -sMEMORY64" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sMEMORY64" )
add_compile_options( -sMEMORY64 )
endif()
if(OPTION_WASM_JSPI)
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sJSPI" )
else()
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sASYNCIFY" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sASYNCIFY_STACK_SIZE=20480" )
endif()
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sENVIRONMENT=web" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sALLOW_MEMORY_GROWTH" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-MEMORY_GROWTH_LINEAR_STEP=32mb" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sNO_DISABLE_EXCEPTION_CATCHING" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-lidbfs.js" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sCASE_INSENSITIVE_FS" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sMODULARIZE" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sEXPORTED_RUNTIME_METHODS=callMain,addRunDependency,removeRunDependency" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sEXPORT_ALL" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sEXPORT_NAME=fallout2ce" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sEXIT_RUNTIME" )
target_link_options( ${EXECUTABLE_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-g>" )
endif()
add_subdirectory("third_party/fpattern")
target_link_libraries(${EXECUTABLE_NAME} ${FPATTERN_LIBRARY})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${FPATTERN_INCLUDE_DIR})
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_subdirectory("third_party/zlib")
add_subdirectory("third_party/sdl2")
else()
find_package(ZLIB)
find_package(SDL2)
endif()
target_link_libraries(${EXECUTABLE_NAME} fpattern::fpattern)
target_link_libraries(${EXECUTABLE_NAME} ${ZLIB_LIBRARIES})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${ZLIB_INCLUDE_DIRS})
@@ -315,23 +430,20 @@ target_link_libraries(${EXECUTABLE_NAME} ${SDL2_LIBRARIES})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
if(APPLE)
install(TARGETS ${EXECUTABLE_NAME} DESTINATION .)
install(CODE "
include(BundleUtilities)
fixup_bundle(${CMAKE_BINARY_DIR}/${MACOSX_BUNDLE_BUNDLE_NAME}.app \"\" \"\")
"
COMPONENT Runtime)
if(IOS)
install(TARGETS ${EXECUTABLE_NAME} DESTINATION "Payload")
if (CPACK_BUNDLE_APPLE_CERT_APP)
install(CODE "
execute_process(COMMAND codesign --deep --force --options runtime --sign \"${CPACK_BUNDLE_APPLE_CERT_APP}\" ${CMAKE_BINARY_DIR}/${MACOSX_BUNDLE_BUNDLE_NAME}.app)
"
COMPONENT Runtime)
set(CPACK_GENERATOR "ZIP")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_FILE_NAME "fallout2-ce")
set(CPACK_ARCHIVE_FILE_EXTENSION "ipa")
else()
install(TARGETS ${EXECUTABLE_NAME} DESTINATION .)
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK ON)
set(CPACK_PACKAGE_FILE_NAME "Fallout II Community Edition")
endif()
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK ON)
set(CPACK_PACKAGE_FILE_NAME "fallout2-ce")
include(CPack)
endif()
+205
View File
@@ -0,0 +1,205 @@
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 19,
"patch": 0
},
"configurePresets": [
{
"name": "base",
"hidden": true,
"binaryDir": "${sourceDir}/out/build/${presetName}"
},
{
"name": "windows-base",
"hidden": true,
"inherits": [
"base"
],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows-x86",
"inherits": [
"windows-base"
],
"generator": "Visual Studio 16 2019",
"architecture": "Win32",
"cacheVariables": {
"CMAKE_GENERATOR_TOOLSET": "v141_xp",
"CMAKE_C_FLAGS": "/D_WIN32_WINNT=0x0501",
"CMAKE_CXX_FLAGS": "/D_WIN32_WINNT=0x0501",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$<CONFIG:Debug>:Debug>"
}
},
{
"name": "windows-x64",
"inherits": [
"windows-base"
],
"generator": "Visual Studio 16 2019",
"architecture": "x64",
"cacheVariables": {
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$<CONFIG:Debug>:Debug>"
}
},
{
"name": "linux-base",
"hidden": true,
"inherits": [
"base"
],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"cacheVariables": {
"FALLOUT_VENDORED": "OFF"
}
},
{
"name": "linux-x86-base",
"hidden": true,
"inherits": [
"linux-base"
],
"cacheVariables": {
"CMAKE_C_FLAGS": "-m32",
"CMAKE_CXX_FLAGS": "-m32",
"CMAKE_SYSTEM_NAME": "Linux",
"CMAKE_SYSTEM_PROCESSOR": "i386"
}
},
{
"name": "linux-x86-debug",
"inherits": [
"linux-x86-base"
],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "linux-x86-release",
"inherits": [
"linux-x86-base"
],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "linux-x64-debug",
"inherits": [
"linux-base"
],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "linux-x64-release",
"inherits": [
"linux-base"
],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "darwin-base",
"hidden": true,
"inherits": [
"base"
],
"generator": "Xcode",
"cacheVariables": {
"CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY": ""
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos",
"inherits": [
"darwin-base"
]
},
{
"name": "ios",
"inherits": [
"darwin-base"
],
"cacheVariables": {
"CMAKE_SYSTEM_NAME": "iOS"
}
}
],
"buildPresets": [
{
"name": "windows-x86-debug",
"configurePreset": "windows-x86",
"configuration": "Debug"
},
{
"name": "windows-x86-release",
"configurePreset": "windows-x86",
"configuration": "RelWithDebInfo"
},
{
"name": "windows-x64-debug",
"configurePreset": "windows-x64",
"configuration": "Debug"
},
{
"name": "windows-x64-release",
"configurePreset": "windows-x64",
"configuration": "RelWithDebInfo"
},
{
"name": "linux-x86-debug",
"configurePreset": "linux-x86-debug"
},
{
"name": "linux-x86-release",
"configurePreset": "linux-x86-release"
},
{
"name": "linux-x64-debug",
"configurePreset": "linux-x64-debug"
},
{
"name": "linux-x64-release",
"configurePreset": "linux-x64-release"
},
{
"name": "macos-debug",
"configurePreset": "macos",
"configuration": "Debug"
},
{
"name": "macos-release",
"configurePreset": "macos",
"configuration": "RelWithDebInfo"
},
{
"name": "ios-debug",
"configurePreset": "ios",
"configuration": "Debug"
},
{
"name": "ios-release",
"configurePreset": "ios",
"configuration": "RelWithDebInfo"
}
]
}
-50
View File
@@ -1,50 +0,0 @@
{
"configurations": [
{
"name": "x86-Debug",
"generator": "Visual Studio 16 2019",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
},
{
"name": "x86-Release",
"generator": "Visual Studio 16 2019",
"configurationType": "Release",
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
},
{
"name": "x64-Debug",
"generator": "Visual Studio 16 2019 Win64",
"configurationType": "Debug",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
},
{
"name": "x64-Release",
"generator": "Visual Studio 16 2019 Win64",
"configurationType": "Release",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
}
]
}
+74 -4
View File
@@ -1,8 +1,14 @@
# Fallout 2 Community Edition
Fallout 2 Community Edition is a fully working re-implementation of Fallout 2, with the same original gameplay, engine bugfixes, and some quality of life improvements, that works (mostly) hassle-free on multiple platforms.
Popular Fallout 2 total conversion mods are partially supported. Original versions of Nevada and Sonora (that do not rely on extended features provided by Sfall) likely work, although there is no complete walkthrough confirmation yet. [Fallout 2 Restoration Project](https://github.com/BGforgeNet/Fallout2_Restoration_Project), [Fallout Et Tu](https://github.com/rotators/Fo1in2) and [Olympus 2207](https://olympus2207.com) are not yet supported. Other mods (particularly Resurrection and Yesterday) are not tested.
There is also [Fallout Community Edition](https://github.com/alexbatalov/fallout1-ce).
## Installation
You must own the game to play. Purchase your copy on [GOG](https://www.gog.com/game/fallout_2) or [Steam](https://store.steampowered.com/app/38410). Download latest release or build from source.
You must own the game to play. Purchase your copy on [GOG](https://www.gog.com/game/fallout_2), [Epic Games](https://store.epicgames.com/p/fallout-2) or [Steam](https://store.steampowered.com/app/38410). Download latest [release](https://github.com/alexbatalov/fallout2-ce/releases) or build from source. You can also check latest [debug](https://github.com/alexbatalov/fallout2-ce/actions) build intended for testers.
### Windows
@@ -12,6 +18,14 @@ Download and copy `fallout2-ce.exe` to your `Fallout2` folder. It serves as a dr
- Use Windows installation as a base - it contains data assets needed to play. Copy `Fallout2` folder somewhere, for example `/home/john/Desktop/Fallout2`.
- Alternatively you can extract the needed files from the GoG installer:
```console
$ sudo apt install innoextract
$ innoextract ~/Downloads/setup_fallout2_2.1.0.18.exe -I app
$ mv app Fallout2
```
- Download and copy `fallout2-ce` to this folder.
- Install [SDL2](https://libsdl.org/download-2.0.php):
@@ -30,19 +44,75 @@ $ sudo apt install libsdl2-2.0-0
- Alternatively you can use Fallout 2 from Macplay/The Omni Group as a base - you need to extract game assets from the original bundle. Mount CD/DMG, right click `Fallout 2` -> `Show Package Contents`, navigate to `Contents/Resources`. Copy `GameData` folder somewhere, for example `/Applications/Fallout2`.
- Or if you're a Terminal user and have Homebrew installed you can extract the needed files from the GoG installer:
```console
$ brew install innoextract
$ innoextract ~/Downloads/setup_fallout2_2.1.0.18.exe -I app
$ mv app /Applications/Fallout2
```
- Download and copy `fallout2-ce.app` to this folder.
- Run `fallout2-ce.app`.
### Android
> **NOTE**: Fallout 2 was designed with mouse in mind. There are many controls that require precise cursor positioning, which is not possible with fingers. When playing on Android you'll use fingers to move mouse cursor, not a character, or a map. Double tap to "click" left mouse button in the current cursor position, triple tap to "click" right mouse button. It might feel awkward at first, but it's super handy - you can play with just a thumb. This is not set in stone and might change in the future.
> **NOTE**: Fallout 2 was designed with mouse in mind. There are many controls that require precise cursor positioning, which is not possible with fingers. Current control scheme resembles trackpad usage:
- One finger moves mouse cursor around.
- Tap one finger for left mouse click.
- Tap two fingers for right mouse click (switches mouse cursor mode).
- Move two fingers to scroll current view (map view, worldmap view, inventory scrollers).
- Use Windows installation as a base - it contains data assets needed to play. Copy `Fallout2` folder to your device, for example to `Downloads`. You need `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder.
> **NOTE**: From Android standpoint release and debug builds are different apps. Both apps require their own copy of game assets and have their own savegames. This is intentional. As a gamer just stick with release version and check for updates.
- Use Windows installation as a base - it contains data assets needed to play. Copy `Fallout2` folder to your device, for example to `Downloads`. You need `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder. Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)).
- Download `fallout2-ce.apk` and copy it to your device. Open it with file explorer, follow instructions (install from unknown source).
- When you run the game for the first time it will immediately present file picker. Select the folder from the first step. Wait until this data is copied. A loading dialog will appear, just wait for about 30 seconds. The game will start automatically.
- When you run the game for the first time it will immediately present file picker. Select the folder from the first step. Wait until this data is copied. A loading dialog will appear, just wait for about 30 seconds. If you're installing total conversion mod or localized version with a large number of unpacked resources in `data` folder it can take up to 20 minutes. Once copied, the game will start automatically.
### iOS
> **NOTE**: See Android note on controls.
- Download `fallout2-ce.ipa`. Use sideloading applications ([AltStore](https://altstore.io/) or [Sideloadly](https://sideloadly.io/)) to install it to your device. Alternatively you can always build from source with your own signing certificate.
- Run the game once. You'll see error message saying "Couldn't find/load text fonts". This step is needed for iOS to expose the game via File Sharing feature.
- Use Finder (macOS Catalina and later) or iTunes (Windows and macOS Mojave or earlier) to copy `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder to "Fallout 2" app ([how-to](https://support.apple.com/HT210598)). Watch for file names - keep (or make) them lowercased (see [Configuration](#configuration)).
### Browser
> **NOTE**: WebAssebly build with emscripten
```
docker run --rm -v $(pwd):/src emscripten/emsdk:3.1.74 sh -c 'git config --global --add safe.directory "*" && mkdir -p build && cd build && emcmake cmake ../ -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/Emscripten.cmake && emmake make'
```
- Demo available at https://github.com/ololoken/fallout2-ce-ems.git
## Configuration
The main configuration file is `fallout2.cfg`. There are several important settings you might need to adjust for your installation. Depending on your Fallout distribution main game assets `master.dat`, `critter.dat`, `patch000.dat`, and `data` folder might be either all lowercased, or all uppercased. You can either update `master_dat`, `critter_dat`, `master_patches` and `critter_patches` settings to match your file names, or rename files to match entries in your `fallout2.cfg`.
The `sound` folder (with `music` folder inside) might be located either in `data` folder, or be in the Fallout folder. Update `music_path1` setting to match your hierarchy, usually it's `data/sound/music/` or `sound/music/`. Make sure it matches your path exactly (so it might be `SOUND/MUSIC/` if you've installed Fallout from CD). Music files themselves (with `ACM` extension) should be all uppercased, regardless of `sound` and `music` folders.
The second configuration file is `f2_res.ini`. Use it to change game window size and enable/disable fullscreen mode.
```ini
[MAIN]
SCR_WIDTH=1280
SCR_HEIGHT=720
WINDOWED=1
```
Recommendations:
- **Desktops**: Use any size you see fit.
- **Tablets**: Set these values to logical resolution of your device, for example iPad Pro 11 is 1668x2388 (pixels), but it's logical resolution is 834x1194 (points).
- **Mobile phones**: Set height to 480, calculate width according to your device screen (aspect) ratio, for example Samsung S21 is 20:9 device, so the width should be 480 * 20 / 9 = 1067.
In time this stuff will receive in-game interface, right now you have to do it manually.
The third configuration file is `ddraw.ini` (part of Sfall). There are dozens of options that adjust or override engine behaviour and gameplay mechanics. This file is intended for modders and advanced users. Currently only a small subset of these settings are actually implemented.
## Contributing
+48
View File
@@ -0,0 +1,48 @@
# Get author name
execute_process(
COMMAND git log -1 --pretty=format:%an
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE AUTHOR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get current branch
execute_process(
COMMAND git branch --show-current
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get hash of the latest commit
execute_process(
COMMAND git log --pretty=format:%h -n 1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get last tag
execute_process(
COMMAND git describe --tags --abbrev=0
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE LATEST_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get date of the latest commit
execute_process(
COMMAND git log -1 --date=format:"%b %d %Y %H:%M:%S" --pretty=format:%cd
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Define a variable for CI_BUILD
set(CI_BUILD 0)
# Create git_version.h file
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/src/platform/git_version.h.in
${CMAKE_CURRENT_SOURCE_DIR}/src/platform/git_version.h
)
+18
View File
@@ -0,0 +1,18 @@
set( CMAKE_SYSTEM_NAME "Emscripten" )
add_compile_definitions("DEBUG=$<CONFIG:Debug>")
set( CMAKE_C_COMPILER "emcc" )
set( CMAKE_CXX_COMPILER "em++" )
set( EXECUTABLE_NAME fallout2-ce.js )
option(OPTION_WASM_64 "Build wasm64 module" OFF)
option(OPTION_WASM_JSPI "Build wasm with JSPI support instead of asyncify module" OFF)
# Touch toolchain variable to suppress "unused variable" warning.
# This happens if CMake is invoked with the same command line the second time.
if(CMAKE_TOOLCHAIN_FILE)
endif()
-4
View File
@@ -1,4 +0,0 @@
set( CMAKE_SYSTEM_NAME "Linux" )
set( CMAKE_SYSTEM_PROCESSOR "i386" )
set( CMAKE_C_FLAGS "-m32" )
set( CMAKE_CXX_FLAGS "-m32" )
+2 -2
View File
@@ -9,8 +9,8 @@ android {
applicationId 'com.alexbatalov.fallout2ce'
minSdk 21
targetSdk 32
versionCode 2
versionName '1.1.0'
versionCode 4
versionName '1.3.0'
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_static'
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,405 @@
package org.libsdl.app;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
/**
SDLSurface. This is what we draw on, so we need to know when it's created
in order to do anything useful.
Because of this, that's where we set up the SDL thread
*/
public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
View.OnKeyListener, View.OnTouchListener, SensorEventListener {
// Sensors
protected SensorManager mSensorManager;
protected Display mDisplay;
// Keep track of the surface size to normalize touch events
protected float mWidth, mHeight;
// Is SurfaceView ready for rendering
public boolean mIsSurfaceReady;
// Startup
public SDLSurface(Context context) {
super(context);
getHolder().addCallback(this);
setFocusable(true);
setFocusableInTouchMode(true);
requestFocus();
setOnKeyListener(this);
setOnTouchListener(this);
mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
setOnGenericMotionListener(SDLActivity.getMotionListener());
// Some arbitrary defaults to avoid a potential division by zero
mWidth = 1.0f;
mHeight = 1.0f;
mIsSurfaceReady = false;
}
public void handlePause() {
enableSensor(Sensor.TYPE_ACCELEROMETER, false);
}
public void handleResume() {
setFocusable(true);
setFocusableInTouchMode(true);
requestFocus();
setOnKeyListener(this);
setOnTouchListener(this);
enableSensor(Sensor.TYPE_ACCELEROMETER, true);
}
public Surface getNativeSurface() {
return getHolder().getSurface();
}
// Called when we have a valid drawing surface
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.v("SDL", "surfaceCreated()");
SDLActivity.onNativeSurfaceCreated();
}
// Called when we lose the surface
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.v("SDL", "surfaceDestroyed()");
// Transition to pause, if needed
SDLActivity.mNextNativeState = SDLActivity.NativeState.PAUSED;
SDLActivity.handleNativeState();
mIsSurfaceReady = false;
SDLActivity.onNativeSurfaceDestroyed();
}
// Called when the surface is resized
@Override
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {
Log.v("SDL", "surfaceChanged()");
if (SDLActivity.mSingleton == null) {
return;
}
mWidth = width;
mHeight = height;
int nDeviceWidth = width;
int nDeviceHeight = height;
try
{
if (Build.VERSION.SDK_INT >= 17) {
DisplayMetrics realMetrics = new DisplayMetrics();
mDisplay.getRealMetrics( realMetrics );
nDeviceWidth = realMetrics.widthPixels;
nDeviceHeight = realMetrics.heightPixels;
}
} catch(Exception ignored) {
}
synchronized(SDLActivity.getContext()) {
// In case we're waiting on a size change after going fullscreen, send a notification.
SDLActivity.getContext().notifyAll();
}
Log.v("SDL", "Window size: " + width + "x" + height);
Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, mDisplay.getRefreshRate());
SDLActivity.onNativeResize();
// Prevent a screen distortion glitch,
// for instance when the device is in Landscape and a Portrait App is resumed.
boolean skip = false;
int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT) {
if (mWidth > mHeight) {
skip = true;
}
} else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) {
if (mWidth < mHeight) {
skip = true;
}
}
// Special Patch for Square Resolution: Black Berry Passport
if (skip) {
double min = Math.min(mWidth, mHeight);
double max = Math.max(mWidth, mHeight);
if (max / min < 1.20) {
Log.v("SDL", "Don't skip on such aspect-ratio. Could be a square resolution.");
skip = false;
}
}
// Don't skip in MultiWindow.
if (skip) {
if (Build.VERSION.SDK_INT >= 24) {
if (SDLActivity.mSingleton.isInMultiWindowMode()) {
Log.v("SDL", "Don't skip in Multi-Window");
skip = false;
}
}
}
if (skip) {
Log.v("SDL", "Skip .. Surface is not ready.");
mIsSurfaceReady = false;
return;
}
/* If the surface has been previously destroyed by onNativeSurfaceDestroyed, recreate it here */
SDLActivity.onNativeSurfaceChanged();
/* Surface is ready */
mIsSurfaceReady = true;
SDLActivity.mNextNativeState = SDLActivity.NativeState.RESUMED;
SDLActivity.handleNativeState();
}
// Key events
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return SDLActivity.handleKeyEvent(v, keyCode, event, null);
}
// Touch events
@Override
public boolean onTouch(View v, MotionEvent event) {
/* Ref: http://developer.android.com/training/gestures/multi.html */
int touchDevId = event.getDeviceId();
final int pointerCount = event.getPointerCount();
int action = event.getActionMasked();
int pointerFingerId;
int i = -1;
float x,y,p;
/*
* Prevent id to be -1, since it's used in SDL internal for synthetic events
* Appears when using Android emulator, eg:
* adb shell input mouse tap 100 100
* adb shell input touchscreen tap 100 100
*/
if (touchDevId < 0) {
touchDevId -= 1;
}
// 12290 = Samsung DeX mode desktop mouse
// 12290 = 0x3002 = 0x2002 | 0x1002 = SOURCE_MOUSE | SOURCE_TOUCHSCREEN
// 0x2 = SOURCE_CLASS_POINTER
if (event.getSource() == InputDevice.SOURCE_MOUSE || event.getSource() == (InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN)) {
int mouseButton = 1;
try {
Object object = event.getClass().getMethod("getButtonState").invoke(event);
if (object != null) {
mouseButton = (Integer) object;
}
} catch(Exception ignored) {
}
// We need to check if we're in relative mouse mode and get the axis offset rather than the x/y values
// if we are. We'll leverage our existing mouse motion listener
SDLGenericMotionListener_API12 motionListener = SDLActivity.getMotionListener();
x = motionListener.getEventX(event);
y = motionListener.getEventY(event);
SDLActivity.onNativeMouse(mouseButton, action, x, y, motionListener.inRelativeMode());
} else {
switch(action) {
case MotionEvent.ACTION_MOVE:
for (i = 0; i < pointerCount; i++) {
pointerFingerId = event.getPointerId(i);
x = event.getX(i) / mWidth;
y = event.getY(i) / mHeight;
p = event.getPressure(i);
if (p > 1.0f) {
// may be larger than 1.0f on some devices
// see the documentation of getPressure(i)
p = 1.0f;
}
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_DOWN:
// Primary pointer up/down, the index is always zero
i = 0;
/* fallthrough */
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_POINTER_DOWN:
// Non primary pointer up/down
if (i == -1) {
i = event.getActionIndex();
}
pointerFingerId = event.getPointerId(i);
x = event.getX(i) / mWidth;
y = event.getY(i) / mHeight;
p = event.getPressure(i);
if (p > 1.0f) {
// may be larger than 1.0f on some devices
// see the documentation of getPressure(i)
p = 1.0f;
}
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
break;
case MotionEvent.ACTION_CANCEL:
for (i = 0; i < pointerCount; i++) {
pointerFingerId = event.getPointerId(i);
x = event.getX(i) / mWidth;
y = event.getY(i) / mHeight;
p = event.getPressure(i);
if (p > 1.0f) {
// may be larger than 1.0f on some devices
// see the documentation of getPressure(i)
p = 1.0f;
}
SDLActivity.onNativeTouch(touchDevId, pointerFingerId, MotionEvent.ACTION_UP, x, y, p);
}
break;
default:
break;
}
}
return true;
}
// Sensor events
public void enableSensor(int sensortype, boolean enabled) {
// TODO: This uses getDefaultSensor - what if we have >1 accels?
if (enabled) {
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(sensortype),
SensorManager.SENSOR_DELAY_GAME, null);
} else {
mSensorManager.unregisterListener(this,
mSensorManager.getDefaultSensor(sensortype));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
// Since we may have an orientation set, we won't receive onConfigurationChanged events.
// We thus should check here.
int newOrientation;
float x, y;
switch (mDisplay.getRotation()) {
case Surface.ROTATION_90:
x = -event.values[1];
y = event.values[0];
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE;
break;
case Surface.ROTATION_270:
x = event.values[1];
y = -event.values[0];
newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
break;
case Surface.ROTATION_180:
x = -event.values[0];
y = -event.values[1];
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
break;
case Surface.ROTATION_0:
default:
x = event.values[0];
y = event.values[1];
newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT;
break;
}
if (newOrientation != SDLActivity.mCurrentOrientation) {
SDLActivity.mCurrentOrientation = newOrientation;
SDLActivity.onNativeOrientationChanged(newOrientation);
}
SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
y / SensorManager.GRAVITY_EARTH,
event.values[2] / SensorManager.GRAVITY_EARTH);
}
}
// Captured pointer events for API 26.
public boolean onCapturedPointerEvent(MotionEvent event)
{
int action = event.getActionMasked();
float x, y;
switch (action) {
case MotionEvent.ACTION_SCROLL:
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
SDLActivity.onNativeMouse(0, action, x, y, false);
return true;
case MotionEvent.ACTION_HOVER_MOVE:
case MotionEvent.ACTION_MOVE:
x = event.getX(0);
y = event.getY(0);
SDLActivity.onNativeMouse(0, action, x, y, true);
return true;
case MotionEvent.ACTION_BUTTON_PRESS:
case MotionEvent.ACTION_BUTTON_RELEASE:
// Change our action value to what SDL's code expects.
if (action == MotionEvent.ACTION_BUTTON_PRESS) {
action = MotionEvent.ACTION_DOWN;
} else { /* MotionEvent.ACTION_BUTTON_RELEASE */
action = MotionEvent.ACTION_UP;
}
x = event.getX(0);
y = event.getY(0);
int button = event.getButtonState();
SDLActivity.onNativeMouse(button, action, x, y, true);
return true;
}
return false;
}
}
+89 -89
View File
@@ -1,89 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 KiB

@@ -0,0 +1,14 @@
{
"images" : [
{
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${MACOSX_BUNDLE_DISPLAY_NAME}</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

Some files were not shown because too many files have changed in this diff Show More