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
7461df161c
lib now uses shared_ptr for entities. Removed manual memory management.
2024-05-17 15:04:05 +00:00
Ivan Savenko
85d8e093df
Battle console: attempt to re-split string if it is too long to fit into
...
two lines due to line break
2024-05-17 12:22:21 +00:00
Ivan Savenko
721b15d9de
Merge branch 'vcmi/master' into 'vcmi/develop'
2024-05-17 08:26:37 +00:00
Ivan Savenko
540bd16e7b
Fixed video widget playback
2024-05-16 16:50:36 +00:00
Ivan Savenko
d08c7b7b8f
Added VideoWidget to hide implementation details
2024-05-15 17:05:16 +00:00
Ivan Savenko
d27b854cb1
Reorganized music, video and sound players:
...
- All XXXplayers are now in client/media directory
- Reogranized code on one class per file basis
- Extracted interfaces from handlers. Handlers now implement
corresponding interface.
- CCS now only stores pointer to an interface
2024-05-15 17:05:12 +00:00
Laserlicht
f596fbc9b3
Apply suggestions from code review
...
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2024-05-14 12:44:08 +02:00
Laserlicht
e06c09d709
battle log expansion
2024-05-14 02:50:57 +02:00
Ivan Savenko
278e8ac65e
Do not show preview for ranged retaliation - not implemented in lib
2024-05-10 19:51:36 +00:00
Ivan Savenko
d094a17298
Added simple damage preview for retaliations
2024-05-10 19:40:33 +00:00
Ivan Savenko
30e0a16ee9
Fix some 'new' issues reported by Sonar Cloud
2024-05-06 15:33:30 +00:00
Ivan Savenko
2861ebb515
Capture members by copy instead of capturing this due to short lifetime
2024-04-16 18:55:21 +03:00
Ivan Savenko
07d201502e
Refactoring of button class to prepare for configurable button
2024-02-29 13:57:25 +02:00
Ivan Savenko
e6b339448f
Refactoring & deduplication of infowindow code
2024-02-26 18:32:15 +02:00
Ivan Savenko
af671d109f
Made graphical primitive-based UI more configurable
2024-02-18 20:48:45 +02:00
Laserlicht
5e3f0e631c
possibility to show small queue outside
2024-02-01 21:17:08 +01:00
Laserlicht
25188aead8
change config name
2024-02-01 20:50:58 +01:00
Laserlicht
aa2fc4b88a
adjustable queue size for embedded queue
2024-02-01 20:38:38 +01:00
Ivan Savenko
a9866bb5c6
Added RandomGeneratorUtil::nextItemWeighted convenience method
2024-01-31 00:17:40 +02:00
Ivan Savenko
5d8b65befd
Merge pull request #3575 from Laserlicht/infobox_pos
...
fix infobox position while disabling
2024-01-30 17:36:30 +02:00
Laserlicht
7cc004e139
code review
2024-01-29 21:33:20 +01:00
Laserlicht
7ddc87f4a2
removed unused param; optimized pos
2024-01-29 21:11:18 +01:00
Laserlicht
36881c226f
fix infobox position while disabling
2024-01-27 22:08:15 +01:00
Laserlicht
cad0d5db16
consider unlimited replay (or not)
2024-01-27 15:02:03 +01:00
Laserlicht
3e71cbcc39
Block feature is battle against human
2024-01-27 14:35:54 +01:00
Laserlicht
a2fd5039ab
setting
2024-01-27 01:16:55 +01:00
Laserlicht
e8c541f873
end with auto combat
2024-01-26 23:15:56 +01:00
Ivan Savenko
2a193effcc
Merge branch 'master' into 'develop'
2024-01-25 16:23:13 +02:00
Ivan Savenko
d8a96066c6
Merge pull request #3533 from Laserlicht/battle_text
...
fix battle text position
2024-01-21 10:10:26 +02:00
Ivan Savenko
24d25730ad
Changed checks for null with checks for hasValue
2024-01-20 16:41:10 +02:00
Laserlicht
3084cb2e46
fix battle text position
...
fix space
2024-01-20 14:35:21 +01:00
Ivan Savenko
6e629a6a5f
split getBonusLocalFirst into two distinct method:
...
- const method getFirstBonus that returns single matching bonusToString
- non-const method getLocalBonus that returns bonus from current node
2024-01-19 13:56:06 +02:00
Ivan Savenko
bd5682ecc3
Merge remote-tracking branch 'vcmi/master' into develop
2024-01-19 13:49:54 +02:00
Alexander Wilms
73019c204d
Replace redundant types with auto
for the lvalues of template factory functions for smart pointers
...
grep -r --include \*.h --include \*.cpp "= std::" * | grep -v auto | grep -Po ".*[^ ]+ [^ ]+ [^ ]*[ ]*=.*;" | grep -v "auto\|int\|char\|bool\|float|\double\|for\|if\|googletest\|fuzzylite\|size_t\|using\|return" | grep -v double | grep -v si64 | grep -v si32 | grep -v ui32 | grep \< | grep -v float | tr -d '\t' | grep -v assert > redundant_types.txt
import re
with open("redundant_types.txt") as f:
for line in f:
line = line.strip()
path = line.split(":", 1)[0]
original_code = ":".join(line.split(":")[1:]).strip()
print()
print(path)
print(original_code)
prefix = "auto "
if original_code.startswith("static"):
static = True
else:
static = False
cpp_type = " ".join(original_code.split("=")[0].strip().split(" ")[0:-1])
print(cpp_type)
if static:
new_code = "static auto "+ " ".join(original_code.split(" ")[2:])
else:
new_code = "auto "+ " ".join(original_code.split(" ")[1:])
print(new_code)
if True:
with open(path, "r") as f:
filedata = f.read()
filedata = filedata.replace(original_code, new_code)
with open(path, "w") as f:
f.write(filedata)
2024-01-17 12:50:00 +00:00
Ivan Savenko
0d0d3d8c80
Renamed speed -> getMovementRange, remove misleading default parameter
2024-01-14 17:14:36 +02:00
Ivan Savenko
f6e0f46040
Merge pull request #3467 from dydzio0614/hota-fixes
...
Fix HotA creature abilities (add bonuses allowing implementing them)
2024-01-12 21:55:18 +02:00
M
815fa26fb3
Change nix rounding, revert assert comment
2024-01-10 22:18:53 +01:00
Dydzio
d309a00025
Extra fix: fix amount position in battle creature labels
2024-01-07 21:45:39 +01:00
Dydzio
bb925e4cb0
First version of sea witch / sorceress ability
2024-01-07 19:27:32 +01:00
Laserlicht
7a6722bc45
fix spell hover
2024-01-07 18:12:17 +01:00
Laserlicht
f4bff876d5
make queue interactable
2024-01-07 16:38:37 +01:00
Laserlicht
cb9c4bbaf0
unlimited replay option
2023-12-28 20:48:19 +01:00
Laserlicht
f577f4cf6b
bugfix: enable first, then set text
2023-12-28 17:17:01 +01:00
Ivan Savenko
a9005da01e
Merge pull request #3366 from Laserlicht/battle_informations
...
Battle stacks informations
2023-12-28 12:39:26 +02:00
Ivan Savenko
172e385f67
Merge pull request #3375 from Laserlicht/round_counter
...
turn indicator
2023-12-24 16:25:04 +02:00
Laserlicht
4f8dcb0f33
fix wrong value if unit dead
2023-12-24 01:06:02 +01:00
Ivan Savenko
85de3143ff
Fixed Genie spellcasting logic to account for spell immunities
2023-12-24 01:13:19 +02:00
Laserlicht
fe8bf92a20
only a bar in small mode
2023-12-23 22:00:28 +01:00
Laserlicht
c540dd1183
round_counter
2023-12-23 19:57:19 +01:00
Laserlicht
f0c97b344a
add duration + morale/luck
2023-12-23 16:07:12 +01:00
Laserlicht
7a541c7a42
implement spells
2023-12-23 14:51:26 +01:00
Laserlicht
8c14509d72
spell area
2023-12-23 03:32:42 +01:00
Laserlicht
0b4cf14a3d
basic functionality
2023-12-23 03:06:48 +01:00
Laserlicht
56e1265097
use stacks
2023-12-22 22:26:35 +01:00
Ivan Savenko
9bf1e72a19
Merge pull request #3346 from IvanSavenko/better_timers
...
[1.4.2] Better timers
2023-12-22 23:19:20 +02:00
Ivan Savenko
0a8b81b2c4
Fix deactivation of current stack if player does not acts in time
2023-12-22 22:46:09 +02:00
Laserlicht
72911ec9a3
Army window
2023-12-22 21:26:40 +01:00
Ivan Savenko
ebbba0029f
Fix positioning and size of turn timers widget with English fonts
2023-12-22 18:40:29 +02:00
Ivan Savenko
241add394c
Fixed timer widget in pvp battle
2023-12-22 18:40:28 +02:00
Ivan Savenko
f834cb3d99
Display different timers separately when applicable
2023-12-22 18:40:28 +02:00
Dydzio
39c3db04f3
Add missing antimagic functionality to antimagic garrisons
2023-12-21 18:09:33 +01:00
Ivan Savenko
a1f34e059a
Fix possible crash on starting 2nd battle while intro sound from 1st one
...
is still playing
2023-12-13 19:35:02 +02:00
Ivan Savenko
e21e3f8386
Do not display "Spell Cancelled" message on right-click when no stack is
...
active
2023-11-27 14:09:08 +02:00
Ivan Savenko
d06ae15c6e
Fix teleporting animation
2023-11-27 14:08:49 +02:00
Laserlicht
f7a31865f3
basic touch introduction implementation
2023-11-14 21:52:30 +01:00
Andrii Danylchenko
3b27e07385
#3003 - fix hypnotize
2023-11-03 13:50:16 +02:00
Andrii Danylchenko
73b89d4e84
#2977 - fix obstackle path deserialization
2023-10-29 16:07:00 +02:00
Ivan Savenko
b88a8da4e8
Split off some netpack structures into separate files
2023-10-23 13:59:15 +03:00
Ivan Savenko
3880ea58b9
Merge branch 'josch/dos2unix' into develop
2023-10-22 18:39:03 +03:00
Ivan Savenko
ac925bb786
Renamed new types for consistency with code style
2023-10-22 16:55:19 +03:00
Ivan Savenko
80e6485965
MetaIdentifier now uses std::variant internally
2023-10-22 16:55:19 +03:00
Ivan Savenko
b394158dc9
Bonus Source ID now uses metaidentifier
2023-10-22 16:55:18 +03:00
Ivan Savenko
77facf9387
Implement missing functions, fixes linking errors
2023-10-22 16:54:56 +03:00
Johannes Schauer Marin Rodrigues
a1a5bc28c2
convert line endings from CRLF (Windows) to LF (Linux/Unix)
...
Mixed line endings cause problems when exporting patches with
git-format-patch and then trying to "git am" a patch with mixed and
non-matching line endings. In such a situation git will fail to apply
the patch.
This commit runs the dos2unix tools on the remaining files with CRLF
(\r\n) line endings to convert them to line-feeds (\n) only.
Files that are Windows specific like *.vcxproj and *.props files were
not converted.
Closes : #3073
2023-10-19 16:23:21 +02:00
Laserlicht
7ef9e91741
new approach
2023-10-08 21:19:04 +02:00
Laserlicht
42bf5fdd58
video fix
2023-10-07 14:31:49 +02:00
Ivan Savenko
037efdf5fc
Improvements to type safety of Identifier class
...
- Constructor of Identifier from integer is now explicit
- Lobby hero/town selection now uses Identifiers instead of int's
- Removed serialization workaround for hero portraits
- Added dummy objects for custom heroes portraits for ID resolver to use
- HeroInstance now stores portrait ID only in case of custom portrait
- Fixed loading of campaign heroes portraits on RoE maps
2023-10-04 18:05:23 +03:00
Ivan Savenko
195320dcf2
Removed remaining references to 'pim' name
2023-09-27 18:50:01 +03:00
Ivan Savenko
d6b9fa8fbd
Replaced CPlayerInterface::pim with CGuiHandler::interfaceLock
...
- Removed CPlayerInterface::pim since this lock does not actually
protects LOCPLINT but rather entire game UI state
- added more logical CGuiHandler::interfaceLock
- interface lock is now non-recursive and is locked only once by initial
caller that want to access GUI
2023-09-27 18:33:52 +03:00
Ivan Savenko
e8453916cf
Merge remote-tracking branch 'vcmi/beta' into develop
2023-09-08 18:49:06 +03:00
Ivan Savenko
5d67481aaf
Merge pull request #2774 from IvanSavenko/beta_bugfixing
...
(1.3.2) Beta bugfixing
2023-09-08 13:15:52 +03:00
Ivan Savenko
f39fbe5151
Merge pull request #2757 from IvanSavenko/filesystem_refactor
...
Filesystem refactor - part 1
2023-09-07 10:51:02 +03:00
Ivan Savenko
346eead8e0
Show spell cursor when casting spell in touch input mode
2023-09-06 23:01:43 +03:00
Ivan Savenko
d7fb2bcf83
Show message on cancelling spell in combat
2023-09-06 21:54:26 +03:00
Ivan Savenko
9fa7a93fb0
Properly pass battleID in all battle netpack's
2023-09-06 16:03:47 +03:00
Ivan Savenko
41210c1dbf
Client-side support for multiple battles
2023-09-06 16:03:47 +03:00
Ivan Savenko
5d1d559d81
Fix possible unprotected access to battleint
2023-09-05 23:31:07 +03:00
Ivan Savenko
86a7f5f5cd
Removed getStr(bool), replaced with similar toString()
2023-09-04 22:21:02 +03:00
Ivan Savenko
1d0e696db6
Added RenderHandler that acts as factory for images and animations
2023-09-04 18:22:34 +03:00
Ivan Savenko
8dfdfffd87
Use ResourcePath for audio files
2023-09-04 18:22:34 +03:00
Ivan Savenko
97b7d44c88
Use ResourcePath for video accessing
2023-09-04 18:22:34 +03:00
Ivan Savenko
6f0108e462
Use ResourcePath for referencing texts and json's
2023-09-04 18:22:34 +03:00
Ivan Savenko
823ffa7a07
Always use ResourcePath for referencing images and animations
2023-09-04 18:22:34 +03:00
Konstantin
e554a2766d
BattleActions: do not pass unnecessary targetStack
...
It was unused for everything except teleport, so pass it only wher we
attempt to teleport.
Reworking sacrifice is out of scope from beta
2023-08-31 23:44:00 +03:00
Ivan Savenko
695a51d8c8
Merge remote-tracking branch 'vcmi/beta' into develop
2023-08-28 21:19:53 +03:00
Dydzio
cba9ddd66a
Update client/battle/BattleActionsController.cpp
...
Co-authored-by: Nordsoft91 <nordsoft@yahoo.com>
2023-08-27 23:01:04 +02:00
Dydzio
321c9c2ca6
Remove now unused enum
2023-08-27 20:18:19 +02:00
Dydzio
e1eb245565
Better default stack action handling + "F shortcut" mode fixes
2023-08-27 17:33:10 +02:00
Ivan Savenko
e2718db791
Converted several enumerations into constants
2023-08-25 13:38:02 +03:00
Ivan Savenko
0240ee886d
Converted (almost) all namespace enum's to enum classes
2023-08-25 13:38:02 +03:00
Ivan Savenko
b0eec85aca
Merge pull request #2632 from rilian-la-te/resist-rework-pt1
...
Spell resistance rework: part 1
2023-08-25 01:13:57 +03:00
Ivan Savenko
e40dc76304
Fix giving commands in battles in hotseat
2023-08-24 23:34:33 +03:00
Ivan Savenko
81242d3500
Fixed ending of battles due to retreat/surrender
2023-08-23 18:46:56 +03:00
Konstantin
344593e891
vcmi: made some CSpell properties private
...
There are getters for it.
2023-08-23 17:53:08 +03:00
Ivan Savenko
3eb19e6ed7
Fix possible unprotected access to battleint
2023-08-23 16:32:29 +03:00
Ivan Savenko
44d16b32fe
Use API identical to std classes where possible
2023-08-23 16:32:29 +03:00
Ivan Savenko
142889e3a5
Give all threads created by client human-readable name for debug
2023-08-23 16:32:29 +03:00
Ivan Savenko
1c552ba9d9
Remove unused code
2023-08-21 17:55:49 +03:00
Ivan Savenko
013417fb7e
Code cleanup
2023-08-21 17:55:49 +03:00
Ivan Savenko
6297140bf5
Start of stabilization - battles now start correctly
2023-08-21 17:55:49 +03:00
Ivan Savenko
44832f3797
Split BattleProcessor into few more parts
2023-08-21 17:55:49 +03:00
Dydzio
6bfbe80cc9
Allow toggling quick combat spells usage
2023-08-19 17:23:55 +02:00
Ivan Savenko
f13a53c1d9
Merge remote-tracking branch 'vcmi/beta' into develop
2023-08-12 17:28:47 +03:00
Ivan Savenko
8ba3f771be
Merge pull request #2529 from IvanSavenko/hero_defeat_fix
...
Fix potential access to empty std function on hero vs hero combat
2023-08-11 11:37:12 +03:00
Ivan Savenko
dc2135da7f
Fix potential access to empty std function on hero vs hero combat
2023-08-09 00:46:55 +03:00
Ivan Savenko
62a5eeebbc
Fixed rendering priority of battlefield background obstacles
2023-08-07 21:18:43 +03:00
Ivan Savenko
537f9fa048
Merged master into develop
2023-08-03 23:38:32 +03:00
Ivan Savenko
3213800097
Fix assertion failure on teleport cast
2023-08-03 14:20:54 +03:00
Ivan Savenko
791eb1a37b
Added workaround for running game with outdated extras mod from 1.2
2023-08-01 14:47:17 +03:00
Ivan Savenko
43795c39a5
Replaced all usage of SDL_Color outside of render with ColorRGBA
2023-07-31 21:07:30 +03:00
Ivan Savenko
aed8c411fc
Minor rework & cleanup of combat replays
2023-07-27 19:25:55 +03:00
Ivan Savenko
32f7a95e38
Use capture by value since thread might start after local method returns
2023-07-25 22:33:59 +03:00
Ivan Savenko
a280cc8845
Merge pull request #2384 from IvanSavenko/bugfixing_beta
...
Bugfixing iteration
2023-07-24 00:49:34 +03:00
Dydzio
47b6358e6e
Improve feature by triggering hero window refresh in response to netpack
2023-07-22 21:51:14 +02:00
Ivan Savenko
5be4f6ec2f
Fix visibility of creature amount label after casting spell before turn
2023-07-22 22:49:48 +03:00
Dydzio
05735a20e1
Fix for hero info window mana points not getting spent on spellcast
2023-07-22 15:32:00 +02:00
Ivan Savenko
e6d8b65e2c
Fix toggling of auto combat
2023-07-22 12:15:27 +03:00
Ivan Savenko
cefbe5152e
Merge pull request #2359 from IvanSavenko/crashfixing
...
Fix crashes from 1.2.1 statistics on Google Play
2023-07-21 15:44:37 +03:00
Ivan Savenko
9e58f67ab5
Fix autocombat AI threading
2023-07-19 12:09:03 +03:00
Ivan Savenko
556763fb7b
Fixed handling of tactics
2023-07-18 22:02:35 +03:00
Ivan Savenko
1bf6bbd9b6
Significantly simplified threading model in battles
2023-07-18 19:55:59 +03:00
Ivan Savenko
5e8a778e7d
Attempt to fix / trace crashes from Google Play statistics
2023-07-18 17:31:21 +03:00
Dydzio
f4f789804d
Update client/battle/BattleWindow.cpp
...
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2023-07-18 15:15:58 +02:00
Dydzio
48a72f90f7
Add option for persistent hero info window as in HD mod
2023-07-17 23:25:16 +02:00
Michael
4e242f98fd
Battleintro: Skip with mouse button
2023-07-15 21:18:04 +02:00
Ivan Savenko
18db944083
Replaced clickReleased with clickPressed where applicable in H3
2023-07-09 17:48:25 +03:00
Ivan Savenko
ca889a5c2a
Replaced clickLeft with clickPressed clickReleased methods
2023-07-08 14:33:04 +03:00
Ivan Savenko
85262cf4f5
Moved CGameState files into a separate directory
2023-06-26 17:15:59 +03:00
Ivan Savenko
a84ccb37c2
Merge pull request #2250 from IvanSavenko/event_handling_fixes
...
Slider input event fix
2023-06-25 17:39:55 +03:00
krs
27c488e62f
Small changes after review.
2023-06-23 20:05:15 +03:00
krs
afe0146021
Renamed settings option to reflect that same option is used for both ranges.
2023-06-23 19:50:39 +03:00
krs
b6ab1e1505
Removed #regions
2023-06-23 19:13:39 +03:00
krs
1cba41a3c3
IsHexInRangeLimit() is now a common function
...
Plus some minor rearranging of code.
2023-06-23 19:13:39 +03:00
krs
1ba9a2a42a
calculateRangeLimitAndHighlightImages() is now separate function
2023-06-23 19:13:39 +03:00
krs
e668ea3a03
A common function is used for getting hexes in a certain range
...
getRangeHexes()
2023-06-23 19:13:39 +03:00
krs
192f82152d
A common function is used to get range limit hexes
...
getRangeLimitHexes()
2023-06-23 19:13:39 +03:00
krs
33bbbefdeb
First working prototype that mimics rangedFullDamageLimit code
...
Next step is to create more generic functions that can be shared between the 2.
2023-06-23 19:13:39 +03:00
Ivan Savenko
4e7412faa6
Split mouseDragged event from mouseMoved
2023-06-22 22:11:48 +03:00
Ivan Savenko
967dc95867
Rename panning->gesturing for consistency
2023-06-20 19:58:05 +03:00