1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00
Commit Graph

3154 Commits

Author SHA1 Message Date
Andrey Filipenkov
802147c5b7 add some asserts that shouldn't fire 2022-09-26 14:06:55 +03:00
Tomasz Zieliński
25f66097cc Handle RoadType by value / reference 2022-09-26 10:20:39 +02:00
Tomasz Zieliński
f804f8a326 Store RiverType by value, handle by reference 2022-09-26 09:51:36 +02:00
Tomasz Zieliński
11dd71515a comment 2022-09-26 09:18:01 +02:00
Tomasz Zieliński
2bd30556a3 Store TerrainType by havlue and handle by reference 2022-09-26 09:17:55 +02:00
Tomasz Zieliński
cd3a1a02c2 More style tweaks 2022-09-25 21:47:44 +02:00
Andrii Danylchenko
27dbee6069
Merge pull request #975 from Nordsoft91/incomatibility-response
Incompatibility response
2022-09-25 18:26:02 +03:00
Andrii Danylchenko
d6c2d05376
Merge pull request #992 from kambala-decapitator/msvc-ai-dlls
[MSVC] place AI dependencies into the right location at build time
2022-09-25 17:53:16 +03:00
Andrii Danylchenko
127a7e6653
Merge pull request #959 from kambala-decapitator/fix-cursor-attack
fix cursor image on hover when there're multiple creatures nearby
2022-09-25 17:44:10 +03:00
Andrey Filipenkov
3286eb613d [msvc] move AI dll dependencies to the main bin dir after build 2022-09-25 14:09:09 +03:00
Andrey Filipenkov
96c2db4d56 remove useless variable 2022-09-25 13:13:37 +03:00
Nordsoft91
d4f97aadf0
Merge branch 'develop' into incomatibility-response 2022-09-25 13:26:07 +04:00
Tomasz Zieliński
4ea57ea7fc A variety of suggested style tweaks 2022-09-25 09:33:56 +02:00
Andrey Filipenkov
72feb538ce add explicit null pointer checks 2022-09-25 10:05:16 +03:00
Andrey Filipenkov
9f46bf5bff Apply suggestions from code review
Co-authored-by: Nordsoft91 <nordsoft@yahoo.com>
2022-09-24 15:55:26 +03:00
Andrey Filipenkov
b8eef4ce35 support building against iOS SDK < 13.0 2022-09-24 15:55:25 +03:00
Andrey Filipenkov
d2ded404bb use system background color for the keyboard textfield
fix kambala-decapitator/vcmi#45
2022-09-24 15:55:25 +03:00
Andrey Filipenkov
605d5b6481 add dedicated macro when building as single process
fix kambala-decapitator/vcmi#40
2022-09-24 15:55:25 +03:00
Andrey Filipenkov
f56acf8a80 fix crash on exiting Custom Campaign
fix kambala-decapitator/vcmi#46
2022-09-24 15:55:25 +03:00
Andrey Filipenkov
ef2e45a977 stop text input on connection start 2022-09-24 15:55:25 +03:00
Andrey Filipenkov
3ab21d8491 show loading indicator when starting local server
single player or hosting a multiplayer game
2022-09-24 15:55:25 +03:00
Andrey Filipenkov
031ba967d3 fix indentation 2022-09-24 15:55:24 +03:00
Andrey Filipenkov
e1c9903a45 extract iOS helpers into a shared lib 2022-09-24 15:55:24 +03:00
Andrey Filipenkov
84111d99ca add VCMI logo to splash screen
fix kambala-decapitator/vcmi#42
2022-09-24 15:55:24 +03:00
Andrey Filipenkov
7b411a5fc4 fix building vcmiERM for iOS 2022-09-24 15:55:24 +03:00
Andrey Filipenkov
f115a49926 update app icon
fix kambala-decapitator/vcmi#41
2022-09-24 15:55:24 +03:00
Andrey Filipenkov
5b50d69db1 use Android's letterboxing code and code style cleanup 2022-09-24 15:55:24 +03:00
Andrey Filipenkov
902de3af7c CMake cleanup 2022-09-24 15:55:24 +03:00
Andrey Filipenkov
7631e7ef06 move linking to system frameworks to appropriate Find* scripts 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
8dcd3146e7 generate zip with ipa structure using cpack
fix kambala-decapitator/vcmi#6
2022-09-24 15:55:23 +03:00
Andrey Filipenkov
1bb6a20b76 get rid of the custom toolchain 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
7d8f09c6d4 add overriding launch type via environment variable VCMI_LAUNCH_TYPE 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
5f24307ac8 fix observing SDL window's view creation on iOS 15
also improves observers handling
fix kambala-decapitator/vcmi#38
2022-09-24 15:55:23 +03:00
Andrey Filipenkov
fab3216df0 add setting to control app launch type: launcher or game
- removes custom AppDelegate
- now starting launcher using qt_main_wrapper
- when starting SDL from launcher, SDLUIKitDelegate is created and assigned as app delegate

fix kambala-decapitator/vcmi#33
2022-09-24 15:55:23 +03:00
Andrey Filipenkov
89f14ea586 improve setting window resolution
fix kambala-decapitator/vcmi#3
2022-09-24 15:55:23 +03:00
Andrey Filipenkov
1c17ad2585 remove locking light mode 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
d113155634 use best scale quality 2022-09-24 15:55:23 +03:00
Andrey Filipenkov
74ba228961 ignore window events: no need to refresh screen 2022-09-24 15:55:22 +03:00
Andrey Filipenkov
1e01780d17 start app with launcher, start SDL from launcher
kambala-decapitator/vcmi#33
2022-09-24 15:55:22 +03:00
Andrey Filipenkov
ba9ace46ad fix compiling storyboard without the need to edit generated xcodeproj manually 2022-09-24 15:55:22 +03:00
Andrey Filipenkov
352358b493 move launch storyboard to iOS subdirectory 2022-09-24 15:55:22 +03:00
Andrey Filipenkov
f43d333721 add UIApplicationSupportsIndirectInputEvents to Info.plist 2022-09-24 15:55:22 +03:00
Andrey Filipenkov
bb00ec8ce2 remove entitlements and shared container usage
they're no longer required since we have a single app now
2022-09-24 15:55:22 +03:00
Andrey Filipenkov
5e838008df merge launcher and client
launcher is a static lib now
2022-09-24 15:55:22 +03:00
Andrey Filipenkov
cd4b68c034 fix repeated launches of single player
now server actually terminates
2022-09-24 15:55:22 +03:00
Andrey Filipenkov
b7bc8495d8 remove copy-paste 2022-09-24 15:55:22 +03:00
Andrey Filipenkov
342a859a3f fix typo 2022-09-24 15:55:21 +03:00
Andrey Filipenkov
7f3baf6831 require fullscreen and only landscape on iPad 2022-09-24 15:55:21 +03:00
Andrey Filipenkov
24a5dd797c fix starting local server 2022-09-24 15:55:21 +03:00
Andrey Filipenkov
de05479532 Revert "attempt to run server in a separate app"
This reverts commit 99fe55b295ad95033626c15011cfe49779269156.
2022-09-24 15:55:21 +03:00
Andrey Filipenkov
c6e51852d0 add ability to build VCMI as single process
"Client process -> shared VCMI lib <- Server process" is turned into "shared Client-VCMI lib -> process <- static Server-VCMI lib"
- adds lib_client and lib_server targets that define distinct namespaces
- lib_client is a dynamic library which is shared with AI libs, lib_server is static
2022-09-24 15:55:21 +03:00
Andrey Filipenkov
ff635edc0b wrap all library code into namespace if VCMI_LIB_NAMESPACE is defined
preparation for having client and server in a single process
2022-09-24 15:55:21 +03:00
Andrey Filipenkov
1319c8f197 fix building Client with the latest cmake
for some reason cmake injects compile flag to Client's resources which breaks ibtool call
2022-09-24 15:55:20 +03:00
Andrey Filipenkov
ede9f33328 fix linking with FFmpeg 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
3388583089 use component-based install to copy only what's needed for every app 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
fae295da88 allow building without codesigning 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
fb32dd0ffc adapt config to new dependencies 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
9dc5f3ed8b improve RPATH handling, apply RPATH when installing dylibs 2022-09-24 15:55:20 +03:00
Andrey Filipenkov
67ef0c234d build Qt launcher, launch Client with it
kambala-decapitator/vcmi#17
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
bb9d19deee fix whitespace 2022-09-24 15:55:19 +03:00
Andrey Filipenkov
f97ff108a7 show SDL's textfield above the keyboard for game chat, extract handling to separate class
kambala-decapitator/vcmi#4 kambala-decapitator/vcmi#31
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
217c83a7e7 convert text input rect to screen coordinates
workarounds SDL bug related to moving window ensuring that the input is always above the native keyboard
kambala-decapitator/vcmi#31
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
1a45b97f5e improve keyboard hide detection 2022-09-24 15:55:19 +03:00
Andrey Filipenkov
bca46d9560 fix focusing input on Save screen 2022-09-24 15:55:19 +03:00
Andrey Filipenkov
123fd5933e trigger chat message with pinch gesture
kambala-decapitator/vcmi#4
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
44d0e19c71 remove focus from active text input after keyboard is closed
allows focusing same text input again
kambala-decapitator/vcmi#4 kambala-decapitator/vcmi#10
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
27b7cb8f1f show long press hints higher
kambala-decapitator/vcmi#29
2022-09-24 15:55:19 +03:00
Andrey Filipenkov
783c0eab26 fix coordinates of long press (right click)
kambala-decapitator/vcmi#1 kambala-decapitator/vcmi#26
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
fd92150566 use same aspect ratio fix as on android
kambala-decapitator/vcmi#26
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
4647bd8981 add App Group entitlement
kambala-decapitator/vcmi#9
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
d716db942c fall back to OpenGLES if Metal is unavailable 2022-09-24 15:55:18 +03:00
Andrey Filipenkov
5823a384bd show keyboard automatically when joining multiplayer
kambala-decapitator/vcmi#10
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
59fe73e454 some random cleanup 2022-09-24 15:55:18 +03:00
Andrey Filipenkov
e3539049cd implement RMB click as long press
kambala-decapitator/vcmi#1
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
2b1e6ca342 prevent showing keyboard automatically in main menu
closes kambala-decapitator/vcmi#10
2022-09-24 15:55:18 +03:00
Andrey Filipenkov
7def214740 more Xcode-compatible Info.plist 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
13dd451ff5 add simple app icons 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
dde9a5d5d2 todo updates 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
d2b1cc00e8 enable same adventure map tweaks as on android 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
6e41e3154c fix running on device from Xcode
proper codesigning
2022-09-24 15:55:17 +03:00
Andrey Filipenkov
cfa22c33ad use rpath properly 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
b6c4126bed install files after building server/client
package required files inside app bundle
2022-09-24 15:55:17 +03:00
Andrey Filipenkov
92a7936202 add Info.plist to sources 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
93e9bc4e51 restrict both apps to 64-bit iPad with multitasking and Metal 2022-09-24 15:55:17 +03:00
Andrey Filipenkov
e72e5cea6f attempt to run server in a separate app
partially reverts 3258f8bb40487e3731bf452dbda1add6294ff4b2
2022-09-24 15:55:17 +03:00
Andrey Filipenkov
2e18299897 make server a static lib, run it in a separate thread
issues to solve:
- dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. 13CPackForLobby, 20LobbyClientConnected, 20LobbyClientConnected.
- error setting socket option: set_option: No buffer space available
2022-09-24 15:55:16 +03:00
Andrey Filipenkov
a33db4f03b fix creating SDL window, enforce landscape 2022-09-24 15:55:16 +03:00
Andrey Filipenkov
fe86ac97b6 make app launch
although it crashes on start because of boost.filesystem
2022-09-24 15:55:16 +03:00
Andrey Filipenkov
c4233ad706 exclude some code similar to android 2022-09-24 15:55:16 +03:00
Andrey Filipenkov
d6a92f23aa fix leading whitespace 2022-09-24 15:55:16 +03:00
Andrey Filipenkov
7a50620e61 enable clang modules and framework auto-linking 2022-09-24 15:55:16 +03:00
Andrey Filipenkov
b824a90295 initial iOS support to fix building
tested with Xcode and Unix Makefiles
2022-09-24 15:55:15 +03:00
Tomasz Zieliński
a5077245a8 Merge remote-tracking branch 'origin/develop' into terrain-rewrite
# Conflicts:
#	lib/Terrain.cpp
#	lib/Terrain.h
2022-09-23 20:01:13 +02:00
Tomasz Zieliński
ebe45d512d Moved roads and rivers to TerrainTypeHandler, by analogy to TerrainType. 2022-09-23 16:24:01 +02:00
nordsoft
e74890c4b1 Add system message about mods incompatibility 2022-09-23 15:02:45 +04:00
Andrii Danylchenko
2b0f02c832
Merge pull request #944 from AgostonSzepessy/dev/agos/937
Add right click to Quick Recruit Window
2022-09-23 14:01:52 +03:00
Andrii Danylchenko
1c62f9db1a
Merge pull request #970 from Nordsoft91/srv-healthcheck
Add simple server healthcheck
2022-09-23 14:00:45 +03:00
nordsoft
7de4d94aff Move text string to translations.json 2022-09-22 20:06:14 +04:00
Andrii Danylchenko
43a1a8b76d
Merge pull request #928 from kambala-decapitator/quick-recruit-no-creatures
show message instead of the Quick Recruit dialog when there're no creatures in town
2022-09-22 18:21:45 +03:00
Andrii Danylchenko
b4d3445559
Merge pull request #971 from kambala-decapitator/fix-warnings
Fix most project warnings
2022-09-22 16:05:32 +03:00
nordsoft
c2f5628fc5 Add system message
# Conflicts:
#	client/CServerHandler.cpp
2022-09-22 15:42:43 +04:00
Andrey Filipenkov
c9c79887a7 remove unused variables 2022-09-22 11:54:10 +03:00
Andrey Filipenkov
2ce78ba8c9 fix operator precedence 2022-09-22 11:54:09 +03:00
Andrey Filipenkov
a1cf120ea6 add missing virtual destructors 2022-09-22 11:54:09 +03:00
nordsoft
667d97d300 Add simple healthcheck 2022-09-22 05:06:49 +04:00
Andrey Filipenkov
7e6ed0583c disable all scripting code when configuring without scripting modules 2022-09-21 19:31:42 +03:00
Tomasz Zieliński
fa31309eed Fixed minimap colors 2022-09-21 14:42:22 +02:00
Tomasz Zieliński
11e1bb44a2 Load sounds for new terrains later 2022-09-21 13:43:00 +02:00
Tomasz Zieliński
494b0f0226 First version that compiles 2022-09-21 11:34:23 +02:00
Tomasz Zieliński
b20f649521 stash 2022-09-19 16:13:58 +02:00
Agoston Szepessy
411038195c Add clickeable area on top of creature picture
A class that wraps an instance of `CIntObject` creates an area
that users can right click to view information about the creature
they're buying.

The constants were based off the existing ones in the code and were
refined by guessing and checking where clicking falls inside/outside
the border of the rectangle.
2022-09-18 22:53:11 -07:00
Agoston Szepessy
dfdaf57803 Set position for CreaturePurchaseCard
This will make it pick up on right clicks. It was 0 before, so it wasn't
doing it.
2022-09-18 16:00:54 -07:00
Andrey Filipenkov
beeef8527f Apply suggestions from code review
Co-authored-by: Nordsoft91 <nordsoft@yahoo.com>
2022-09-18 17:43:40 +03:00
Andrey Filipenkov
81dec1405f fix typo: purhase -> purchase 2022-09-18 17:43:40 +03:00
Andrey Filipenkov
a320af837d fix includes in client subdirectories 2022-09-18 17:43:40 +03:00
Andrey Filipenkov
0163190ac5 move hardcoded strings to JSON file 2022-09-18 17:43:37 +03:00
DjWarmonger
7ba271edf1
Rotation rebase2 (#912)
* Instead of [x][y][z] coordinates, map will be stored as [z][x][y].
* Nullkiller AI can get it too.
* Use boost::multi_array instead of nested vectors
* In MapHandler too
* Rotate foreach algorithms, too
* VCAI gets rotated, too
2022-09-18 17:39:10 +03:00
Andrey Filipenkov
90d355dd05 check availability only of town creatures
QRD shows only town creatures ignoring Summoning Portal
2022-09-18 15:58:15 +03:00
Andrey Filipenkov
a0832c39f9 show message instead of the Quick Recruit dialog when there're no creatures in town 2022-09-18 15:50:06 +03:00
Andrey Filipenkov
e85f8a56bb make FFmpeg dependency optional 2022-09-18 09:25:10 +03:00
Andrey Filipenkov
99af5bbe4c add dedicated method to get logs path 2022-09-18 09:24:36 +03:00
Nordsoft91
ad01c7ffce
Vlc obstacles [part 1] (#888)
* obstacles content handler, entity service and VLC integration
2022-09-15 11:06:54 +03:00
DjWarmonger
3d2dc2335b Switch ObjectTemplate to shared_ptr<const> (#870) 2022-09-11 16:13:53 +03:00
Andrey Filipenkov
e6e7679a2c activate battle hexes after heroes
gives hexes higher priority when performing "hit test" for mouse click as CGuiHandler::handleElementActivate() uses push_front to a list
this fixes RMB click on the topmost corner stacks: now it shows stack info instead of hero
2022-09-11 13:40:38 +03:00
Andrey Filipenkov
bccc658e8b fix launching server when Windows user name has non-latin characters 2022-09-11 11:31:28 +03:00
Andrey Filipenkov
d44780d2ac add standard hotkeys to the Quick Recruitment dialog 2022-09-11 11:31:28 +03:00
Nordsoft91
4bd0ff680a Random map generator refactoring (#762)
random map generator refactoring and improvements
2022-09-11 11:31:27 +03:00
Andrii Danylchenko
4b4cc3cf4b battlefields in VLC and custom bonuses for terrain patches 2022-09-11 11:31:27 +03:00
Nordsoft91
c4035134e5 New battlegrounds (#758) 2022-09-11 11:31:26 +03:00
Nordsoft91
aaa07e4d2e New terrain support - part 1 (#755)
Initial support of new terrains
2022-09-11 11:31:26 +03:00
Andrii Danylchenko
23bbb69eb9 #793 U shortcut for creature stack stats window 2022-09-04 10:18:25 +03:00
Andrey Filipenkov
d7650ce9c0
use Conan to make macOS CI builds for both Intel and ARM (#782)
* [CI] append platform to output artifact name if it's given
2022-08-30 17:29:00 +03:00
Nordsoft91
4f1f9e3c5d
Fix start game button for rmg without templates (#781) 2022-08-30 08:30:21 +03:00
Evgeniy Meshcheryakov
ff00747ecf Fixed 3206 Bugged 'Start Walking' animation 2022-08-15 09:23:35 +03:00
Andrey Filipenkov
c0825149cf fix error C2338 when building Client on Windows
Windows headers require the default packing option. Changing this can lead to memory corruption. This diagnostic can be disabled by building with WINDOWS_IGNORE_PACKING_MISMATCH defined.
2022-08-06 11:47:09 +03:00
Andrey Filipenkov
7150ee565a [macOS] text input handling must be done on main thread
Xcode's Main Thread Checker warns about that
2022-08-03 12:09:49 +03:00
Andrey Filipenkov
f2187f6767 fix infinite recursion when using SDL_mixer v2.6
Mix_HaltChannel -> soundFinishedCallback -> Mix_FreeChunk -> soundFinishedCallback -> ...
2022-08-03 12:08:41 +03:00
Andrey Filipenkov
0429ff61b0 don't link client to TBB 2022-07-29 11:18:36 +03:00
nordsoft
53b9434a22 Fix crash 2022-07-29 11:08:38 +03:00
Evgeniy Meshcheryakov
e38b822303 Fix crash in scenario information window if campaign has no difficulty settings 2022-07-28 11:35:14 +03:00
Andrii Danylchenko
c4dec67acc Fix movement freeze after battle in teleport 2022-06-20 09:05:05 +03:00
Soar Qin
188607b05f Replace cotire with CMake builtin precompiled headers support (Requires CMake version >= 3.16) 2022-06-17 17:20:08 +03:00
Andrii Danylchenko
2521e7bac9 Fix flickering in fullscreen 2022-06-13 16:11:53 +03:00
Andrii Danylchenko
1128abc593 Fix hero movement animation 2022-06-07 15:00:39 +03:00
Soar Qin
b061c4988c
Changes to resolution check on window creation (#747)
* Changes to resolution check on window creation:
1. Allow scaled rendering in window mode
2. Match closest logical rendering resolution while scaling is used
2022-06-06 09:46:24 +03:00
nordsoft
d92356f085 Fixed game crash: divide by zero due to threads racing 2022-05-28 14:34:36 +03:00
Konstantin
8fc14369a4
CMake presets. (#744)
* CI: use single build action
* CMake: use imported targets
* CI: do not build boost for linux
* CMake: add FORCE_BUNDLED_MINIZIP option
* linux: use external minizip and fuzzylite
* CMake: add presets
* .gitignore: ignore cmake build dirs
* github: use cmake presets
2022-05-26 08:55:20 +03:00
Andrii Danylchenko
c293b655f5 Fix one more battle ai related crash. 2022-05-21 15:41:56 +03:00
Konstantin
c6b198ce14
Warning fix (I moved C++17 and CI to another branch) (#739)
* clang warning fixes
* use CMake 3.10 due to MXE CI does not have 3.13 yet

Co-authored-by: Konstantin <rilian@niisi.ras.ru>
2022-05-19 15:14:50 +03:00
Andrii Danylchenko
b269d7fed6 Fix case when defender creature is killed with pre-attack spell like liches death ripple 2022-05-14 17:38:06 +03:00
Andrii Danylchenko
6c36a1a2f6 Tray notifications for MXE 2022-05-14 13:23:09 +03:00
Andrii Danylchenko
2fc7cf02b0 tray notification for windows 2022-05-14 13:23:09 +03:00
Konstantin
8757a577e3 CVideoHandler: fix codecContext according to docs 2022-05-14 13:22:41 +03:00
Konstantin
e7b753c222 CVideoHandler: use new ffmpeg 2022-05-14 13:22:41 +03:00
Andrii Danylchenko
1e97859fbf Fix crash when clicking scenario info during campaign gameplay. 2022-05-10 09:48:05 +03:00
Andrii Danylchenko
2710d1df50 Android: make keyboard appear and disappear only on demand 2022-05-08 17:09:17 +03:00
Andrii Danylchenko
0d15089dd4 Do not remove hero if left only with commander 2022-05-01 09:30:30 +03:00
Andrii Danylchenko
e0e3787748 When the battle is won with only summoned creatures - defeat 2022-05-01 09:30:30 +03:00
Andrii Danylchenko
fa9a420f99 Fix a few crashes 2022-04-17 09:10:53 +03:00
Andrii Danylchenko
4defbc314a Fix saves when some humans become AI. (PlayerInterface destructor clears LOCPLINT) 2022-03-21 09:38:14 +02:00
Dmitry Orlov
ea2931c6ea Fix: Get rid of 'Tile is not visible' error message 2022-01-30 12:31:07 +02:00
Andrii Danylchenko
84948820b2 exchange window move single stacks buttons 2022-01-03 15:13:46 +02:00
Andrii Danylchenko
0fd13d2f3b Change HD mod assets 2022-01-03 15:13:46 +02:00
Andrii Danylchenko
78efd09e2e Refactor HD mod army exchange 2022-01-03 15:13:46 +02:00
Andrii Danylchenko
3c0935a5b9 Artifact exchange 2022-01-03 15:13:46 +02:00
Andrii Danylchenko
8fa0b30985 Army exchange implementation 2022-01-03 15:13:46 +02:00
Andrii Danylchenko
2ce73fd4e1 Army exchange implementation 2022-01-03 15:13:46 +02:00
Arseniy Lartsev
222a0e40c7 Added code to display some HD mod buttons in hero exchange window 2022-01-03 15:13:46 +02:00
Arseniy Lartsev
24d2d5b702 New layout for hero exchange dialog with HD mod features 2022-01-03 15:13:46 +02:00
Arseniy Lartsev
c502cfc223 Added constructor with target size argument for CAnimImage
The image will be scaled to the given width (height is ignored)
2022-01-03 15:13:46 +02:00
Dmitry Orlov
8cae3398ba Feature: Army Management Shortcuts should work as in HD+ Mod 2021-11-28 20:00:43 +02:00
Dmitry Orlov
a65feb29f5 Fixed: Advanced options window issues 2021-11-13 17:02:11 +02:00
Dmitry Orlov
1ce7701168 Fixed: Animation errors should not lead to hanging 2021-11-10 20:32:54 +02:00
Dmitry Orlov
0427fa45dd Fix: Terrain description should be shown correctly 2021-11-08 21:01:30 +02:00
Dmitry Orlov
7cfd1fe0ca Fix: Captured town should not be duplicated on the UI 2021-10-31 17:33:26 +02:00
Dmitry Orlov
30b879ae5d Fixed: duplicated bonusing building. Improved: opposite bonus propagation 2021-09-12 14:30:54 +03:00
Dmitry Orlov
25d9ea1ddf Feature: Opposite Side Limiter 2021-09-04 14:15:38 +03:00
Dmitry Orlov
6f0864b47c Feature: Town Negative Bonuses. Fix: Negative bonus bearers should not be affected 2021-09-04 14:15:37 +03:00
Andrii Danylchenko
83f690e059 change SDL color key alpha to transparent 2021-08-21 09:32:52 +03:00
Andrii Danylchenko
27b3a88dda Replace App Veyor 2021-08-21 09:32:52 +03:00
Sergei Trofimovich
23215e039c client/CVideoHandler.cpp: fix crash on video playback
Avoid buffer overflow caused by sws_scale():
    http://trac.ffmpeg.org/ticket/9254
Currently (ffmpeg-4.4 with SSE3 enabled) sws_scale()
has a few requirements for target data buffers on rescaling:
1. buffer has to be aligned to be usable for SIMD instructions
2. buffer has to be padded to allow small overflow by SIMD instructions
Unfortunately SDL_Surface does not provide these guarantees.
This means that atempt to rescale directly into SDL surface causes
memory corruption. Usually it happens on campaign selection screen
where short video moves start spinning on mouse hover.

To fix [1.] we use av_malloc() for memory allocation.
To fix [2.] we add an `ffmpeg_pad` that provides plenty of space.
We have to use intermdiate buffer and then use memcpy() to land it
to SDL_Surface.

Without the change crash has the following backtrace:

```
(gdb) bt
    (c=0x47508940, src=0x1ffeffef50, srcStride=0x1ffeffef30, srcSliceY=0, srcSliceH=116, dst=0x1ffeffef70, dstStride=0x1ffeffef40) at src/libswscale/x86/yuv2rgb_template.c:119
    (c=<optimized out>, srcSlice=<optimized out>, srcStride=0x432afa20, srcSliceY=<optimized out>, srcSliceH=116, dst=<optimized out>, dstStride=0x1ffefff0a0) at src/libswscale/swscale.c:969
    (this=0x1abaa330, x=90, y=72, dst=0x1a85a4c0, forceRedraw=<optimized out>, update=<optimized out>)
    at ../vcmi-9999/client/CVideoHandler.cpp:332
    at ../vcmi-9999/client/gui/CIntObject.cpp:83
    at ../vcmi-9999/client/gui/CGuiHandler.cpp:462
```

valgrind points to corruption right in sws_scale():

```
Invalid write of size 8
   at 0x6C50BD3: ??? (in /usr/lib64/libswscale.so.5.7.100)
   by 0x6C4FAE6: yuv420_rgb32_ssse3 (yuv2rgb_template.c:119)
   by 0x6C28DF2: sws_scale (swscale.c:969)
   by 0x4566F6: CVideoPlayer::nextFrame() (CVideoHandler.cpp:293)
   by 0x4573A6: CVideoPlayer::update(int, int, SDL_Surface*, bool, bool) (CVideoHandler.cpp:332)
   by 0x25EC94: CIntObject::show(SDL_Surface*) [clone .part.0] (CIntObject.cpp:83)
   by 0x34E855: CMainMenu::update() (CMainMenu.cpp:319)
   by 0x25D589: CGuiHandler::renderFrame() (CGuiHandler.cpp:462)
   by 0x1F7450: mainLoop (CMT.cpp:1387)
   by 0x1F7450: main (CMT.cpp:513)
 Address 0x475088a8 is 0 bytes after a block of size 92,840 alloc'd
   at 0x483F7E5: malloc (vg_replace_malloc.c:380)
   by 0x52B4E23: SDL_malloc_REAL (SDL_malloc.c:5387)
   by 0x5266237: SDL_SIMDAlloc_REAL (SDL_cpuinfo.c:963)
   by 0x52EF042: SDL_CreateRGBSurfaceWithFormat_REAL (SDL_surface.c:123)
   by 0x2649AC: CSDL_Ext::newSurface(int, int, SDL_Surface*) (SDL_Extensions.cpp:42)
   by 0x457B20: CVideoPlayer::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, bool, bool) (CVideoHandler.cpp:182)
   by 0x457C60: CVideoPlayer::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool) (CVideoHandler.cpp:84)
   by 0x35B14E: CCampaignScreen::CCampaignButton::show(SDL_Surface*) (CCampaignScreen.cpp:126)
   by 0x25EC94: CIntObject::show(SDL_Surface*) [clone .part.0] (CIntObject.cpp:83)
   by 0x34E855: CMainMenu::update() (CMainMenu.cpp:319)
   by 0x25D589: CGuiHandler::renderFrame() (CGuiHandler.cpp:462)
   by 0x1F7450: mainLoop (CMT.cpp:1387)
   by 0x1F7450: main (CMT.cpp:513)
```

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2021-07-31 14:35:31 +03:00
Andrii Danylchenko
3fa7e0976f Nullkiller: update / fix build, core changes required for Nullkiller AI 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
b4241670ba Nullkiller: rename VCAI to AIGateway 2021-07-26 21:02:50 +03:00
Sergei Trofimovich
e407d4e547 client/lobby/CBonusSelection.cpp: fix difficulty overflow in bonus UI
Before the change campaign bonus selection screen had inconsistent
overflow behaviour for difficulty selection:

```
    0 1 2 3 4 | available buttons: '-' to decrease
      ^       |                    '+' to increase
```

Before the change:

1. If we click '+' 5 times we will end up on difficulty=4 (ok, saturated).
2. If we click '-' 5 times we will end up on difficulty=1 (unexpected, wrap around).

After the change:

1. If we click '+' 5 times we will end up on difficulty=4 (saturated).
2. If we click '-' 5 times we will end up on difficulty=0 (saturated).

The inconsistency happens because `difficulty` variable has `ui8` type
and server uses `difficulty = vstd::abetween(difficulty, 0, 4)` to
implement the saturation.

For large positive values saturation works as expected:
    vstd::abetween(difficulty=5, 0, 4) -> 4
For small values it does not:
    vstd::abetween(difficulty=-1, 0, 4) -> 4

The change makes client to avoid using negative values.
2021-07-25 21:01:17 +03:00
Sergei Trofimovich
e4dd2f6dd8 client/lobby/SelectionTab.cpp: initialize generalSortingBy before use
Noticed use of uninitialized value when built vcmi with -fsanitize=undefined:

```
  Established connection with
    VCMI 0.99 b310f2e61e (server).
    UUID: bab9a90d-7416-4566-8817-e367ffcac7c1
  ../vcmi-9999/client/lobby/SelectionTab.cpp:138:16:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
  /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include/g++-v12/tuple:190:4:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
  /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include/g++-v12/tuple:190:4:
    runtime error: load of value 32717, which is not a valid value for type 'ESortBy'
```

Here (before the change) `SelectionTab()` used `generalSortingBy` before
first use:

```
    SelectionTab::SelectionTab(ESelectionScreen Type) {
        ...
        if(tabType != ESelectionScreen::campaignList)
        {
            ...
                ESortBy criteria = (ESortBy)i;
                if(criteria == _name)
                    criteria = generalSortingBy;

                buttonsSortBy.push_back(... std::bind(&SelectionTab::sortBy, this, criteria)));
            ...
        }
        ...
        switch(tabType)
        {
        case ESelectionScreen::newGame:
                generalSortingBy = ESortBy::_name;
        ....
```

The change moves `generalSortingBy` initialization before first use.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2021-07-25 21:00:31 +03:00
Andrii Danylchenko
9c8d776398 Merge branch 'develop' into handlersAbstraction
# Conflicts:
#	CI/linux/before_install.sh
#	CI/mac/before_install.sh
#	CI/mxe/before_install.sh
#	lib/CModHandler.cpp
#	lib/mapObjects/CObjectClassesHandler.cpp
#	lib/mapObjects/CObjectClassesHandler.h
#	lib/mapObjects/CommonConstructors.cpp
#	server/CGameHandler.cpp
#	test/CMakeLists.txt
#	test/spells/effects/TeleportTest.cpp
2021-07-16 00:32:13 +03:00
AlexVinS
483a4689ce Fixes for code review issues 2021-02-20 04:57:50 +03:00
Vladislav Yakovlev
8e57d36b8c [3167] Fix SDL_StopTextInput extra calls 2021-02-15 21:11:18 +03:00
AlexVinS
a59e12ca5f tweaks 2021-02-15 15:03:32 +03:00
AlexVinS
ecaa9f5d0b Entities redesign and a few ERM features
* Made most Handlers derived from CHandlerBase and moved service API there.
* Declared existing Entity APIs.
* Added basic script context caching
* Started Lua script module
* Started Lua spell effect API
* Started script state persistence
* Started battle info callback binding
* CommitPackage removed
* Extracted spells::Caster to own header; Expanded Spell API.
* implemented !!MC:S, !!FU:E, !!FU:P, !!MA, !!VR:H, !!VR:C
* !!BU:C, !!BU:E, !!BU:G, !!BU:M implemented
* Allow use of "MC:S@varName@" to declare normal variable (technically v-variable with string key)
* Re-enabled VERM macros.
* !?GM0 added
* !?TM implemented
* Added !!MF:N
* Started !?OB, !!BM, !!HE, !!OW, !!UN
* Added basic support of w-variables
* Added support for ERM indirect variables
* Made !?FU regular trigger
* !!re (ERA loop receiver) implemented
* Fixed ERM receivers with zero args.
2021-02-14 19:05:43 +03:00
Alexander Shishkin
db1f9a15b0
Merge pull request #675 from ShubusCorporation/do/fix/mod_system_and_interface_bugs
Fixed: Mods dependency issues leading to hanging & 'Restart Scenario' button functionality
2021-02-08 07:32:09 +03:00
Andrii Danylchenko
ade84699b0 found a bug in code where AI can change client gamestate directly causing sorting crash 2021-01-30 17:29:49 +02:00
Alexander Shishkin
5dc6d782f7
Merge pull request #674 from ShubusCorporation/do/fix/game_interface/load_and_main_menu_buttons
Fix: 'Load' and 'Main Menu' in-game buttons should work properly
2021-01-20 21:52:51 +03:00
Dmitry Orlov
3add3156e2 Fix: 'Restart Scenario' button should work properly 2021-01-20 21:29:50 +03:00
Dmitry Orlov
c99b8b54e6 Fix: 'Load' and 'Main menu' in-game buttons should work properly 2021-01-17 19:18:26 +03:00
Dmitry Orlov
8cd1af6998 Fix: Siege crashes when creature on the archer's tower is not a shooter 2021-01-17 15:02:58 +03:00
Dmitry Orlov
854a2e6c39 Feature: Mods system improvement, Part III. Bunusing buildings customization. 2021-01-14 01:02:13 +03:00
Dmitry Orlov
9cf953157a Fix: client crashes while browsing saves, if some factions are removed 2021-01-06 17:19:59 +03:00
Dmitry Orlov
39de2f6435 Fix: Morale bonus should be shown correctly 2020-11-11 22:43:40 +03:00
Alexander Shishkin
9ca9c809c6
Merge pull request #660 from ShubusCorporation/shc_rmg_issue
Mod system improvement: Patch 2
2020-10-26 09:26:14 +03:00