1
0
mirror of https://github.com/vcmi/vcmi.git synced 2026-04-28 20:04:33 +02:00

502 Commits

Author SHA1 Message Date
Michał Zaremba 24b987174a Fix level up dialogs (queries) on the very first turn 2026-01-24 13:18:00 +01:00
Ivan Savenko 4c66867702 Fix reset of AI settings on Launcher start. Rename config keys to reset
settings for players
2025-12-29 22:08:00 +02:00
Laserlicht a267901989 replace emergency save with pause autosave 2025-12-13 21:36:35 +01:00
Ivan Savenko 3576efc3f3 Initial version of antilag support 2025-07-19 18:04:20 +03:00
Ivan Savenko 58de180083 Split CConnection into GameConnection and IGameConnection classes 2025-07-19 18:04:20 +03:00
Ivan Savenko 790c5cb455 Remove static variable 2025-07-19 18:04:20 +03:00
Ivan Savenko 3d63284c51 Extracted interface through which GameHandler interacts with VCMIServer 2025-07-19 18:04:20 +03:00
Ivan Savenko 8721bdd728 Split CCreatureSet file on .h/.cpp per class basis 2025-07-07 19:12:31 +03:00
Ivan Savenko 2ad186130f Split MapDefines file on .h per class basis 2025-07-07 18:16:42 +03:00
Ivan Savenko ff0f5290f7 CClient no longer inherits from CGameInfoCallback 2025-05-23 14:17:43 +03:00
Ivan Savenko 716da918f8 Completely remove IGameCallback class
- CClient now inherits directly from CPrivilegedInfoCallback, like
IGameCallback did before. However CClient no longer needs dummy
implementation of IGameEventCallback
- CGObjectInstance hierarchy now uses CPrivilegedInfoCallback for
callback. Actual events can only be emitted in calls that receive
IGameEventCallback pointer, e.g. heroVisit
- CGameHandler now inherits directly from both CPrivilegedInfoCallback
and IGameEventCallback as it did before via IGameCallback
2025-05-14 13:39:41 +03:00
Ivan Savenko 2c17c2d5b7 Rework CCallback <-> CClient interaction
- callback is now part of lib instead of weird class that is shared by
client and AI while being part of client
- callback interacts with client class via minimal interface class
- removed no longer used unlockGsWhileWaiting field
2025-05-12 22:07:10 +03:00
Ivan Savenko 35644da2b7 Reogranize callback-related classes on 1 file = 1 class basis 2025-05-12 22:07:09 +03:00
kdmcser 7bb7d07230 fix crash when loading game in battle 2025-05-07 22:22:48 +08:00
Ivan Savenko 4d57a8ed36 Prefer to pass CGameState as reference instead of pointer 2025-04-27 14:57:31 +03:00
Ivan Savenko 912c2eae94 Fix regressions 2025-04-27 14:57:31 +03:00
Ivan Savenko 93b18ee94b Fix some issues detected by Sonar & code review, fix build 2025-04-27 14:57:31 +03:00
Ivan Savenko 586620a290 Basic code review, remove unused code from serializers 2025-04-27 14:57:31 +03:00
Ivan Savenko d1d2cf4189 Fix crashes on game start, gamestate now derives from GameCallbackHolder 2025-04-27 14:57:31 +03:00
Ivan Savenko f03cc06176 Battle Info uses ObjectInstanceID's instead of pointers 2025-04-27 14:57:31 +03:00
Ivan Savenko 6d65641a43 Gamestate is now passed as shared pointer 2025-04-27 14:57:30 +03:00
Ivan Savenko 2b286378e8 Remove logic for banks in 1.5 format 2025-03-19 08:02:39 +00:00
Ivan Savenko 62cb5412ff CGameState::map is now a private, unique_ptr with accessors 2025-03-08 14:05:14 +00:00
Ivan Savenko b6026084ea StartInfo in gamestate now use unique_ptr 2025-03-08 14:04:51 +00:00
Ivan Savenko 219eea86ff Better handling of AI shutdown 2025-03-02 14:33:11 +00:00
Ivan Savenko d3de0d525f Removed GameEngine::curInt member
- event processing is now initiated by GameEngine instead of weird chain
engine -> player interface -> engine
- introduced GameEngineUser interface (implemented by GameInstance) to
remove mutual depedency between GameEngine and GameInstance (some
technically still remains for now, in form of some free functions)
2025-03-01 21:16:40 +00:00
Laserlicht 7dfb499edf replace boost locks with std 2025-02-28 15:25:58 +01:00
Ivan Savenko 645b95ba02 Renamed LibClasses * VLC to GameLibrary * LIBRARY 2025-02-21 16:54:56 +00:00
Ivan Savenko 156de5b17e Added GameInstance class
- available as global GAME
- integrates LOCPLINT (CPlayerInterface)
- integrates CGI->mh (CMapHandler)
- integrates CSH (CServerHandler)
2025-02-21 16:54:06 +00:00
Ivan Savenko ffd37a8fa8 Removed CGI in favor of VLC. Map handle is for now global variable 2025-02-21 16:53:14 +00:00
Ivan Savenko cacceda950 Renamed CGuiHandler to GameEngine
- class CGuiHandler is now called GameEngine to better describe its
functionality
- renamed global GH to more clear ENGINE
- GH/ENGINE is now unique_ptr to make construction / deconstruction
order more clear and to allow interface / implementation split
- CGuiHandler.cpp/h is now called GameEngine.cpp/h and located in root
directory of client dir
2025-02-21 16:53:13 +00:00
Ivan Savenko 32391dc7a9 Pathfinder cache is now stored separately per playerBlocked
- human player will now use pathfinder settings from config (as before)
- nullkiller AI will now use its own, modified settings
- added option to configure NKAI usage of monolith to config
- fixed pathfinder costs not updating on receiving levelup
2025-01-23 15:28:44 +00:00
Ivan Savenko 786f80871e Replace more usages of pointers to packs with references 2024-10-07 14:59:14 +00:00
Ivan Savenko c1c552d394 Replaced some of pointers to CPack's with references 2024-10-07 14:59:14 +00:00
MichalZr6 7fa965e78b Fix unintentionally broken line endings to LF in Client.cpp 2024-09-19 09:20:36 +02:00
MichalZr6 e13e72d093 Moved code from NetpacksClient.cpp to Client.cpp
Created new function CClient::updatePath that will invalidate paths and update given hero displayed path
2024-09-19 08:43:54 +02:00
Ivan Savenko 01396b62b7 Extracted handling of type ID's from serializer into a separate class 2024-08-26 19:48:46 +00:00
Ivan Savenko 232a759db7 Remove type registration from library pack applying 2024-08-26 19:48:46 +00:00
Ivan Savenko b84af1a6de Significantly simplify packs applying
Apparently our logic for packs applying with types registration is
overcomplicated and by now completely unnecessary - it became redundant
after introduction of visitor pattern.
2024-08-26 19:48:46 +00:00
Ivan Savenko 2a05fbdd50 Unified handling of battle sides ID's
- Replaced BattleSide namespace-enum with enum class
- Merged two different BattleSide enum's into one
- Merged BattlePerspective enum into BattleSide enum
- Changed all places that use integers to represent battle side to use
BattleSide enum
- Added BattleSideArray convenience wrapper for std::array that is
always 2-elements in size and allows access to its elements using
BattleSide enum
2024-08-11 20:54:44 +00:00
Ivan Savenko 0d66ddbeec GameState now uses random generator from server. Blocked access to rmg
on client
2024-07-16 13:13:38 +00:00
Ivan Savenko 3bea383b59 Merge branch 'vcmi/beta' into 'vcmi/develop' 2024-06-21 12:58:36 +00:00
Ivan Savenko e08f76ddf0 Add missing lock to Android shutdown logic 2024-06-17 16:17:01 +00:00
Ivan Savenko 6b9d2809b1 Fix crash on Android OS shutdown request 2024-06-17 13:23:44 +00:00
Ivan Savenko b8beb4fb13 Fixes for various minor issues detected by Sonar Cloud 2024-06-01 11:48:30 +00:00
Ivan Savenko df83fa33a1 Merge branch 'vcmi/master' into 'vcmi/develop' 2024-05-31 09:34:21 +00:00
Ivan Savenko d6ff7896fe Fix possible crash on closing game from main menu 2024-05-20 10:57:25 +00:00
Ivan Savenko d502850054 Add network thread termination logic for adventure map animations 2024-05-18 12:15:48 +00:00
Ivan Savenko 9bfe000724 Added semi-workaround method for network thread shutdown:
Currently closing game while network thread is waiting for something is
very bug-prone, since network thread may resume during shutdown and
access partially destroyed client state.

Now if exit has been requested, the very first step would be semi-
graceful shutdown of network thread (via exception throwing). This may
in theory skip some cleanup in non-RAII code, but since game is shutting
down this does not matters much.

This logic applies to:
- shutting down while network thread is waiting for dialogs
- shuttind down while network thread waiting for animations in combat
2024-05-18 11:04:10 +00:00
Ivan Savenko 8754e0ebb3 Code formatting and cleanup 2024-05-17 17:10:29 +00:00