1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-28 23:06:24 +02:00
Commit Graph

2992 Commits

Author SHA1 Message Date
laikh
edc1d06f4e Random Map Generator Option: Allow having more computer only players than human/computer players
Remove unused variable humanPlayersCount and function getHumanOnlyPlayerCount()
2020-07-07 19:45:53 +08:00
laikh
90e2ab58a8 Include header SDL_Compat.h in AdventureMapClasses.cpp 2020-07-05 21:10:29 +08:00
Victor Luchits
f68b449e5e More formatting 2020-05-17 11:21:49 +03:00
Victor Luchits
604246bc7a VS 2019/Windows 10 Kit fix 2020-05-05 15:25:07 +03:00
Victor Luchits
febbeaeeed Close the global log targets on exit, flushing log files to disk 2020-05-05 15:25:07 +03:00
Arseniy Lartsev
fca9bcdd7f
Fixed possible freezes while dragging visible area on minimap (#638) 2020-05-03 01:26:30 +03:00
AlexVinS
55b54024a8 Cherry-picked essential fix from #631. This fixes https://bugs.vcmi.eu/view.php?id=3074. 2020-03-18 00:06:07 +03:00
Alexander Shishkin
00de1fd734
Merge pull request #625 from Toneyisnow/toneyisnow/Battle_Clone_Effect
Implement the Clone Effect in battle.
2020-01-27 13:42:58 +03:00
toneyisnow
1319175bdc Removed the create functions in the ColorShifter classes. 2020-01-27 00:34:59 -08:00
toneyisnow
a03e696ec0 Updated const. 2020-01-26 16:18:07 -08:00
toneyisnow
8db638c054 Fix tiny space issue and remove reference of SDL.h 2020-01-26 00:05:38 -08:00
toneyisnow
468584d469 Update the originalPalette, and use SDL_Palette methods to improve memory management. 2020-01-26 00:01:48 -08:00
toneyisnow
0f4a9e5106 Updated resolved some issues. 2020-01-25 18:49:53 -08:00
toneyisnow
0f3dabab9a Initialize the change:
1. Make color shifter for CAnimation, and use that in the clone effect.
2. Update the original position of the cloned object.
2020-01-25 01:21:26 -08:00
Alexander Shishkin
304b6e2fb2
Merge pull request #624 from Toneyisnow/toneyisnow/Fixbug_LobbyScreen_LoadGame
Fix bug: LobbyScreen UI has a bug on the Difficulty toggle group.
2020-01-23 16:13:51 +03:00
toneyisnow
8341ba3c27 Update according to comments. 2020-01-22 23:07:20 -08:00
toneyisnow
01ca21ae67 Fix bug: LobbyScreen UI has a bug on the Difficulty toggle group.
Scenario: In LoadGame Lobby screen, the difficulty toggle group is showing multiple choices, but actually only one valid is working.

The reason is, in the Lobby screen Initialization code will set the difficulty = 0, and each time the player changes a map in the selection, the toggle group control is not resetting the difficulty buttons to disabled state.

How fix:
Add a new method to ToggleGroup class: setSelectedOnly, which will disable all other buttons and then set the selected button.

Note:
During the game loading time, the client is loading the map, and send a NetPack to server: LobbySetMap, and send a NetPack to Interface: LobbyUpdateState.
In the LobbyUpdateState it sets the map difficulty.
2020-01-21 01:09:08 -08:00
toneyisnow
0fe3c0a569 Initialize the change. 2020-01-19 04:12:59 +00:00
Alexander Shishkin
5afcb070fa
Merge pull request #621 from sztupy/android_fix_sdl_letterboxing
Fix SDL letterboxing on Android builds
2020-01-08 10:17:03 +03:00
Zsolt Sz. Sztupák
e6f1ab6539 Fix SDL letterboxing on Android builds
On Android calling `SDL_RenderSetLogicalSize` with dimensions having a different aspect ratio than the screen will cause letterboxing with blinking garbage data in that areas (instead of having black bars). This is annoying and makes the game really hard to play.

This change will make sure that on Android `SDL_RenderSetLogicalSize` will always be called with dimensions where the aspect ratio is the same as the screen to make sure there is no letterboxing.

The only problem with this is that during drawing the adventure map nothing will clear out the areas that would have been letterboxes, so there is an added explicit clear screen command for `totalRedraw()`.

The changes are only applied to Android builds in order not to affect PC builds - but some changes, especially clearing the screen could be easily added to the PC builds as well
2020-01-06 18:46:56 +00:00
Zsolt Sz. Sztupák
3c5194a232 Add support for the Android App to notify if the server has been closed
When winning the campaign there is a lock that waits for the old server to stop before allowing to continue with restarting the server. While the lock was released on PC builds as the server runs differently on Android this was missed making campaigns always hang the app when you win.

This change adds a new native method that can be called from the Android app to signal that the server has stopped, so the client can continue with requesting a new server and showing the new campaign scenatio screen.

Note: this change alone doesn't fix the bug but it's required for a fix on vcmi-android's side. It doesn't break anything and can be merged before the vcmi-android changes
2020-01-06 16:43:02 +00:00
JakubK
a8d5081895 More mouse scrolling fixes
Defect:
After my previous change that enabled map layer (`CAdvMapInt`) to listen to all mouse move events via `strongInterest` bool, I noticed that there are a few scenario that start scrolling the map unexpectedly. The two that were the easiest to reproduce were using keyboard arrows to move the hero or dimissing a popup dialog.

I traced this down to unexpected mouse move event (`SDL_MouseMotionEvent`) that SDL seems to dispatch in this situation. The windowID that comes with the event in this scenario is 0 (so no window with mouse focus). I don't know why SDL dispatches this mysterious (to me) mouse move event in that case (note that there is no actual mouse movement in either repro case).

Fix:
Don't handle the mouse move event if the windowID of the mouse motion event is 0.

Notes:
Impacts scrolling of the game map. Did some play testing and didn't notice the scrolling not working when expected. The two specific cases where the map would scroll unexpectedly (move a hero with keyboard arrows or dismiss a popup dialog) no longer move the map.
2020-01-04 22:45:33 -08:00
JakubK
09cd4c072a Defect:
In fullscreen mode, when the adventure window size does not fill the entire monitor (leaving black bars on each side), mouse movement is ignored in these areas. This results in difficulty scrolling the map in fullscreen mode, since you have to be exactly within [0,15] of the edge of the adventure window.

Fix:
Have the adventure map element, CAdvMapInt, subscribe to all mouse move events by setting the `strongInterest` bool to true. This will extend the scroll region to [min, 15], eliminating the dead mouse move space on the side of the window.

Notes:
Impacts adventure window mouse move event handling. Manually validated the scrolling the map now works without having to precisely aim for the edge of the window.
2019-12-26 10:10:39 -08:00
Dydzio
54550b50de Update VS files to 2019, partially fix test project 2019-06-09 17:28:55 +02:00
Dydzio
492d6504b4 Fix all common victory/defeat crashes 2019-06-08 16:59:04 +02:00
Dydzio
fd9f16142d Revert old statusbar hackfix 2019-06-06 22:56:14 +02:00
Alexander Shishkin
5ccc411971
Merge pull request #601 from dydzio0614/HotseatFreezeFix2
Fix dialog showing for losing player
2019-06-02 02:54:58 +03:00
Dydzio
61ae6ce286 Remove useless and wrong recruit conditions 2019-06-01 20:29:49 +03:00
Dydzio
eb19806cf5
Fix dialog showing for losing player 2019-06-01 19:28:21 +02:00
AlexVinS
1f2ee843aa [C::B] Switched to boost shared linkage 2019-05-30 20:55:40 +03:00
Dydzio
5470f9cafe Re-fix map hero movement speed, was too fast on land 2019-05-26 17:11:57 +02:00
Alexander Shishkin
54bbf2abb3
Merge pull request #595 from dydzio0614/BattleConsoleButtons
Fix wrong battle console button image
2019-05-21 10:05:01 +03:00
Alexander Shishkin
6ddebfd43e
Merge pull request #594 from dydzio0614/HeroSpeedFix
Fix hero/boat speed on adventure map
2019-05-19 21:49:53 +03:00
Alexander Shishkin
26e70a236e
Merge pull request #593 from dydzio0614/PerformanceTweak
Tweak statusbar options, fixes mouse stuttering
2019-05-19 21:48:36 +03:00
Dydzio
2c0b0b8cf9 Fix wrong battle console button image 2019-05-19 19:58:53 +02:00
Dydzio
8df015b3ad Fix hero/boat speed on adventure map 2019-05-19 19:08:32 +02:00
Dydzio
a06ca4b5cf Tweak statusbar options, fixes mouse stuttering 2019-05-19 16:19:16 +02:00
Dydzio
cd78779d9c Remove false warning indicating something is wrong 2019-05-19 12:22:41 +02:00
Ewilhan
1afbdf7027 CSoundHandler: fix "unmutable" game (#588)
After a sound fade, now uses current volume instead of setting it to 100.

Fixes #3050.
2019-05-07 06:30:44 +03:00
Ewilhan
b5243602ca Fix wrong savefiles shown while playing Hotseat Mode (#585)
* Fix wrong save files shown in HotSeat mode

Previous condition only checked for players' connection ID. HotSeat mode does not use multiple connection IDs, so getLoadMode() thought it was SPMode.
Now checking number of interfaces to cover offline-multiplayer.
2019-05-04 16:56:17 +03:00
Dydzio
54e6e42c46 Fix no player interface swap on being attacked 2019-05-04 10:07:52 +03:00
Dydzio
e50efdc279 Creature spellcast refactor (#569)
* Move some logic to lib
* Mouse action priority queue enhancement
* Get rid of siegehandler dependency
* Improve AI offensive spellcasting
* CBattleInterface cleanup
2019-05-04 06:42:55 +03:00
Dydzio
d50add0246 Remove apparently useless code 2019-05-03 16:50:36 +02:00
Ewilhan
42114fa4fc Fixed wrongCursorOnFriendlyDwelling
Added else condition that covers cases "ObjectAtTile that is not enemy nor is Town nor is current Hero". This should cover all cases of friendly dwellings/mines not having the correct cursor.
2019-05-03 06:20:32 +01:00
ArseniyShestakov
fd2a33bc36
Merge pull request #571 from dydzio0614/VictoryCrashFix
Victory crash/freeze fix
2019-04-22 08:50:00 +03:00
Dydzio
f7262730b1 Defer SDL mixer free on 1st handler release (#578) 2019-04-21 22:09:14 +03:00
Dydzio
c428e326b9 Optimize button responsiveness during pregame options 2019-04-20 18:26:54 +02:00
Dydzio
1cc2ef537b Add proper thread synchronization for campaigns 2019-03-30 00:28:33 +01:00
Dydzio
2b6fe9298a Hackfix for campaigns 2019-03-29 23:29:48 +01:00
Dydzio
97869fc36f Fixed single map victory crash 2019-03-29 22:01:51 +01:00
Michał Kalinowski
ec536e613c CMake more transitive
-Moving AIs cmake to target focusing code
-Beign explicit when link libraries
2019-03-28 16:56:51 +03:00
Alexander Shishkin
34f934370b
Merge pull request #565 from dydzio0614/moralewaitfix
Fix lack of unit action with morale+wait
2019-03-24 10:49:49 +03:00
Alexander Shishkin
9ad71b200f
Merge pull request #562 from dydzio0614/BattleIntroFix
Battle action start on client after intro sound
2019-03-24 10:36:01 +03:00
Dydzio
9e4619c08d Fix lack of unit action with morale+wait 2019-03-23 23:51:50 +01:00
Dydzio
68992fbbb8 Minor fix 2019-03-23 12:12:25 +01:00
Dydzio
262057ad1c Battle action start on client after intro sound 2019-03-22 21:39:53 +01:00
Dydzio
e1bf821c27
Tweak effect / spell animation speed
After reducing the value by half effect / spell projectile speed is really close to original H3 compared to other actions on same speed setting.
2019-03-22 14:21:27 +01:00
AlexVinS
9311966706 [C::B] Switch to MinGW 7.3 2019-02-19 14:59:10 +03:00
Mikko
02c109f9cf
Update CAdvmapInterface.cpp 2019-01-24 15:34:58 +00:00
Mikko
f8ab2db0ea
Update CAdvmapInterface.cpp 2019-01-24 15:30:09 +00:00
Mikko
5b8ff278b9
Fix implicit cast from tribool to bool. 2019-01-24 14:45:40 +00:00
Michał Kalinowski
a0d1808b62 CMake transitive compile dependency
Moving to more target focusing code that provides better transitive scope
2019-01-19 17:38:54 +03:00
Alexander Shishkin
b00e935e4d
Warnings fixes (#538)
Warnings fixes
* Suppress `missing-braces` for Clang
* Fixed many C4275 warnings
* Fixed almost all Clang/GCC warnings
* Silence most frequent MSVC warning.
* Fixed some pessimizing-move warnings
* Fixed some unused capture warnings
2019-01-19 13:52:02 +03:00
AlexVinS
4b5910c2f4 VCAI performance improvements
* Node graph initialization optimized.
* Fixed "Unathorized obstacle access".
* Pathfinding tracing disabled with ifdef.
* Misc bonus calculation optimizations.
* Removed timestamp from log lines. Date formatting eats too much CPU.
* Paths for all heroes in Client are now cached
2019-01-17 10:50:56 +03:00
Dydzio
216d50788b Fix AI build, update default Windows SDK version for projects 2018-12-31 15:18:42 +01:00
Dydzio
c3088e293a Workaround linker bug, set higher optimization by default 2018-11-17 11:34:39 +01:00
Alexander Shishkin
2748650a57
Merge pull request #521 from dydzio0614/BattleMemoryLeak
Fix creature animation callback circular reference
2018-11-15 02:17:20 +03:00
Dydzio
0fd729fd86 Fix creature animation callback circular reference 2018-11-14 23:36:38 +01:00
AlexVinS
614cde4a55 Fixed two memory leaks 2018-11-14 20:58:37 +03:00
AlexVinS
5693e72442 fixed crash on quit 2018-11-07 11:11:07 +03:00
Dydzio
9f3d718e3b Allow AI to be aware of invisible heroes deletion 2018-11-02 16:35:25 +01:00
Alexander Shishkin
e5397c1e23
Merge pull request #504 from janisozaur/shadow-var
Prevent shadowing of global variable in function argument
2018-10-30 06:37:12 +03:00
Alexander Shishkin
3d1bb9850b
Merge pull request #506 from janisozaur/shadow-var2
Prevent shadowing of function arguments by local vars
2018-10-30 05:07:40 +03:00
Michał Janiszewski
aa28fc4794 Remove empty branch from LobbyClientConnected::applyOnLobbyScreen (#507)
It was empty ever since introduction in ac66fc7f42

[ci skip]
2018-10-30 04:59:02 +03:00
Alexander Shishkin
a3a38a6120
Merge pull request #502 from vcmi/StatusbarFix
Fix not responding statusbar, issue 3009
2018-10-30 04:56:34 +03:00
Michał Janiszewski
7be9aa4868 Prevent shadowing of function arguments by local vars 2018-10-29 16:56:14 +01:00
Michał Janiszewski
53d75684ee Prevent shadowing of global variable in function argument 2018-10-29 16:34:03 +01:00
Dydzio
22ce535a2a Fix not responding statusbar 2018-10-29 14:12:07 +01:00
godric3
7ded9dbda8 Fix crash when generating random map with random number of players 2018-10-27 18:18:08 +02:00
Dydzio
57b687a094 Fix crash on portal teleport when it's 1st action in movement (#491) 2018-09-16 17:01:36 +03:00
Fior.in
47ba3b2476 Hero scheme: allow each hero to have a unique battle animation (#480)
* attribute for battle image added on hero class, allowing on hero schemes each hero have a unique battle .def in 'images' structures sided with portraits and specialties images
2018-08-27 09:42:36 +03:00
KasyanDiGris
fa5a14e2d8 Stabilize vcmi (#488)
* Shared statusbar
* Fixed server fails on client disconnected
2018-08-26 19:09:56 +03:00
Dydzio
b61d1ac857 Fix broken RMG monster strength buttons 2018-08-24 19:20:27 +03:00
Konstantin Vukolov
96215233bc macOS: fix packet deserialization (#479) 2018-08-14 01:03:45 +03:00
yupinov
b56f862094 Yog is not able to buy a spellbook in his campaign anymore, as intended (#472)
* Yog is not able to buy a spellbook in his campaign anymore, as intended
2018-08-11 18:25:09 +03:00
AlexVinS
d1931c91d7 Fixed wrong cursor position in full screen mode 2018-08-11 17:42:28 +03:00
Alexander Shishkin
75f8c8b29a Gui cleanup4 (#446)
* use smart pointers for almost all widget fields
* use SDL2 texture for cursor
* a lot af small tweaks and formatting
* removed CompImage class, it is actually useless as long as regular SDLImage support margins
* CGuiHandler: use smart pointers for [push|pop]Int
2018-07-25 01:36:48 +03:00
Dydzio
e4a9ce3efe Do not create main menu UI for game restart (#462) 2018-07-19 00:58:38 +03:00
Dydzio
260981d586 Update project files to match vcmi code changes 2018-07-06 18:52:51 +02:00
Andrii Danylchenko
dcbcff41dc apply review comments for CAndroidVMHelper 2018-05-26 14:50:49 +03:00
Andrii Danylchenko
ee033e9c9c fix android build 2018-05-25 22:57:29 +03:00
Karlis Senko
224ea28433 Fix various memory errors related to server and connections.
* keep connection when restarting scenario
* wrong double free in Connection
* multiple use after free when stopping server
* double free of StartInfo
2018-05-01 00:04:20 +03:00
Karlis Senko
69330de89c Avoid integer overflow and conversion related UB. 2018-05-01 00:02:07 +03:00
Karlis Senko
40e6292ed2 Fix memory leaks in launcher. 2018-05-01 00:01:20 +03:00
Karlis Senko
7fb7ceaad7 Prevent out of bounds array access. 2018-04-30 23:59:36 +03:00
Johannes 'josch' Schauer
5d487c09fe
client/CPlayerInterface.cpp: initialize observerInDuelMode 2018-04-19 16:13:19 +02:00
Johannes 'josch' Schauer
337f22195c
client/CPlayerInterface.cpp: remove unused variable 2018-04-19 15:26:39 +02:00
Johannes 'josch' Schauer
ed5df13e50
client/battle/CBattleInterface.cpp: uncomment unused variable until soundh->playSound() is implemented 2018-04-19 15:20:26 +02:00
Henning Koehler
2ede3783dd Settings: savefrequency is now configurable in launcher
* Client command-line can modify arbitrary settings now
* Only launcher auto-saves to settings.json
2018-04-08 17:12:29 +07:00
karliss
ce0b4b222d Fix double free and use of dead reference when saving (#445) 2018-04-07 22:21:28 +07:00
Arseniy Shestakov
4af288aee4 Refactoring of main menu related code
We need to make sure it's not stay active during gameplay.
Proper fix would require actually removing menu interface from GH, but then GH needs refactoring too.
2018-04-07 18:44:21 +07:00
Alexander Shishkin
5c09f751b3 Gui cleanup3 - UI refactoring to use smart pointers (#440)
* Changed most gui classes to use shared pointers
* Store and use IImage as shared_ptr
* CSpellWindow redesign
* AdventureMapClasses cleanup
* CLabel: store background as smart pointer
* Store CObjectList items as smart pointers
* Removed destroy function of list item
* Store toggle buttons as smart pointers
* Use CComponent as smart pointer
* Attempt to fix artifact merchant drawing
2018-04-07 18:34:11 +07:00
AlexVinS
a8e1c51c36 [c::b] projects update 2018-04-05 21:12:21 +03:00
Arseniy Shestakov
74e5c5bf05 CGameHandler: rename CPackForClient argument and add network logging 2018-04-04 14:24:32 +07:00
Arseniy Shestakov
ac66fc7f42 Full rework of pre-game interface and networking
New features for players:
* Loading for multiplayer. Any save could be used for multiplayer.
* Restart for multiplayer. All clients will restart together.
* Loading from single save.
* Hotseat mixed with network game. Multiple players per client.
* Now connection to server could be cancelled.
* Return to menu on disconnections instead of crashes.
* Restoring of last selected map, save or campaign on next run.

TLDR on important changes in engine code:
* UI: work with server separated from UI
* UI: all explitic blitting replaced with IntObject's
* UI: all new code use smart pointers instead of DISPOSE
* Gameplay always start through lobby controlled by server.
* Threads receiving netpacks now shared for lobby and gameplay.
* Campaigns: heroes for crossover now serialized as JsonNode.
2018-04-04 14:24:26 +07:00
Arseniy Shestakov
14f03e22da CLabelGroup: add currentSize method
Might be someone will suggest me better name.
And actually I need method to clean group too.
2018-04-03 22:11:14 +07:00
Arseniy Shestakov
ab2b9086d3 CLabel: add methods getWidth, setColor, setAutoRedraw
For somethign like map list we need to change CLabel data without redrawing it.
2018-04-03 22:11:14 +07:00
Henning Koehler
6ddcb079a4 Enabled new secondary skills to be created (#438)
* Universities, Scholars and Witch Huts may offer new skills
* Moved encode/decodeSkill to CSkillHandler
* Refactored CSkill interface and CSkill::LevelInfo image storage
* Legacy game constants renamed to ORIGINAL_XXX_QUANTITY
2018-03-31 12:56:40 +07:00
AlexVinS
b09a54fa9c [tweaks] IImage * -> auto 2018-03-30 14:29:55 +03:00
AlexVinS
43acfa160b [tweaks] IImage * -> auto 2018-03-30 14:02:04 +03:00
AlexVinS
031d3204f7 Fixed "Error: accessing unavailable frame" in some cases 2018-03-30 13:40:40 +03:00
Henning Koehler
02b5a5e830 Make bonus stacking configurable + fix duplicate propagation/inheritance (#433)
Addresses several related problems:
* Propagation / unpropagation of duplicate bonuses is inconsistent, causing bugs
* Duplicate bonuses never stack, which is not always intended behaviour (e.g. multiple copies of resource generating artifacts)
* Different bonuses always stack, which is not always intended behaviour (e.g. Angel + Archangel morale bonuses)

This is addressed as follows:
* Duplicate bonuses are never eliminated during propagation/inheritance.
* Unpropagation eliminates only a single copy of duplicated bonus
* Bonus receives a new field stacking that determines stacking behaviour:
* * empty string = no stacking with duplicates (default)
* * "ALWAYS" = stacks with duplicates & everything else
* * some other value = no stacking with bonuses with same stacking value
Also Morale/Luck window now hides non-stacking bonuses.
2018-03-27 14:54:58 +07:00
AlexVinS
cac83379f5 Fixed https://bugs.vcmi.eu/view.php?id=2928 2018-03-22 12:56:15 +07:00
AlexVinS
df0aa2f69c Removes excess assertion in HeroVisit::applyCl 2018-03-17 17:10:13 +03:00
AlexVinS
03cfd2cb78 Do not use StackLocation in netpacks 2018-03-17 13:24:12 +08:00
AlexVinS
8cec07afbd Replaced CGHeroInstance and CGObjectInstance with ObjectInstanceID in NetPacks 2018-03-17 13:24:12 +08:00
Raphnalor
0f00dbf8cf Fix highlighting of a selected bonus for campaign. (#432) 2018-03-17 12:23:22 +08:00
ArseniyShestakov
079cd470c2
Merge pull request #425 from vcmi/CatapultRework
Catapult rework
2018-03-06 01:16:53 +08:00
jerryskye
dec825fdc2 redefined lctrl to lgui for macs (#426)
keyboard shortcuts for splitting armies will use left command key
instead of left control
2018-03-04 10:46:29 +08:00
Dydzio
e68a2e7ef5 Fix arrow tower destruction mechanics 2018-03-02 15:23:07 +01:00
AlexVinS
166c04e2e0 Hack fixed serializer assertion by completely disabling AI goals serialization 2018-02-28 15:00:38 +08:00
Arseniy Shestakov
434deffb54 CAdvMapInt: improve hero reminder by checking hero path
Dialog won't show up if movement points insufficient for first step on current path.
2018-02-24 21:49:42 +08:00
Nikolay Shalakin
3795985de9 Eliminate warnings / errors. Pull request #388 2018-02-11 15:17:14 +03:00
Arseniy Shestakov
8bbe747e8e Cleanup undef for min / max. NOMINMAX is already in Global.h 2018-02-11 05:42:49 +03:00
Arseniy Shestakov
324717acbe Spelling fixes: privilaged -> privileged, retreive -> retrieve 2018-02-10 21:52:23 +03:00
AlexVinS
0a2b04709f Fixed https://bugs.vcmi.eu/view.php?id=2873 2018-02-09 22:12:21 +03:00
Dydzio
d4958ff5f8 update VS files to match spellrefactoring9 changes 2018-02-09 18:53:07 +01:00
AlexVinS
0b70baa95e Spells configuration version 2 (effect-based)
* Indirect spell effects loading
* Json serializer improvements
* spell->canBeCastAt do not allow useless cast for any spell
* Added proxy caster class for spell-created obstacles
* Handle damage from spell-created obstacles inside mechanics
* Experimental GameState integration/regression tests
* Ignore mod settings and load only "vcmi" mod when running tests
* fixed https://bugs.vcmi.eu/view.php?id=2765 (with tests)
* Huge improvements of BattleAI regarding spell casts
* AI can cast almost any combat spell except TELEPORT, SACRIFICE and obstacle placement spells.
* Possible fix for https://bugs.vcmi.eu/view.php?id=1811
* CStack factored out to several classes
* [Battle] Allowed RETURN_AFTER_STRIKE effect on server side to be optional
* [Battle] Allowed BattleAction have multiple destinations
* [Spells] Converted limit|immunity to target condition
* [Spells] Use partial configuration reload for backward compatibility handling
* [Tests] Started tests for CUnitState
* Partial fixes of fire shield effect
* [Battle] Do HP calculations in 64 bits
* [BattleAI] Use threading for spell cast evaluation
* [BattleAI] Made AI be able to evaluate modified turn order (on hypothetical battle state)
* Implemented https://bugs.vcmi.eu/view.php?id=2811
* plug rare freeze when hypnotized unit shots vertically
* Correctly apply ONLY_MELEE_FIGHT / ONLY_DISTANCE_FIGHT for unit damage, attack & defense
* [BattleAI] Try to not waste a cast if battle is actually won already
* Extended JsonSerializeFormat API
* fixed https://bugs.vcmi.eu/view.php?id=2847
* Any unit effect can be now chained (not only damage like Chain Lightning)
** only damage effect for now actually uses "chainFactor"
* Possible quick fix for https://bugs.vcmi.eu/view.php?id=2860
2018-02-08 11:37:21 +03:00
Arseniy Shestakov
fc3b8b2c87 Refactoring: replace macro with variadic templates on client-side
Big thanks to @mwu-tow for helping me with this.
2018-02-05 08:14:01 +03:00
Arseniy Shestakov
69dbf339fc CGuiHandler: fix invalid read on event handling 2018-01-18 06:34:57 +03:00
FeniksFire
b85bb6ec0a Fix positioning
Fix problem for costBacground in QuickRecruitmentWindow.
Position "y" there was scaled which lead to errors with different
resolutions.
2018-01-15 18:00:41 +01:00
Alexander Shishkin
e90fcea3d3
Merge pull request #396 from FeniksFire/update
Update graphics for QuickRecruitmentWindow
2018-01-14 10:42:23 +03:00
Dydzio
38d836d1a5 Update project files to Visual Studio 2017 2018-01-13 16:33:49 +01:00
Arseniy Shestakov
da117e9255 Code style: remove void from constructors without arguments 2018-01-13 11:51:47 +03:00
FeniksFire
1331c81a8b Update graphics for QuickRecruitmentWindow
Adding graphics maded by edeksumo
2018-01-13 09:49:29 +01:00
Arseniy Shestakov
d3b3389a37 Implement configurable object sounds: ambient, visit and removal
* If there more than one sound for visit or removal random is played
* At moment only the first ambient sound will be used
2018-01-02 18:16:35 +01:00
DJWarmonger
20ac1d6880 Merge branch 'develop' of https://github.com/vcmi/vcmi into develop 2018-01-02 17:57:11 +01:00
Dydzio
707257c2c8 Update file names in vs project (#400) 2018-01-02 19:40:23 +03:00
Arseniy Shestakov
fc0ab5b970 TerrainTileObject: store ambientSound for every object
Though ambient sounds won't work for heroes objects since they added separately.
2018-01-02 09:50:05 +01:00
Arseniy Shestakov
d96a3aa5b7 CAudioBase: move mutex to base class since CSoundHandler need it 2018-01-02 09:49:04 +01:00
Arseniy Shestakov
f15cadc87b Implement configurable object sounds: ambient, visit and removal
* If there more than one sound for visit or removal random is played
* At moment only the first ambient sound will be used
2018-01-02 09:49:03 +01:00
DJWarmonger
f523ae5545 Fixed Magic resistance display. 2017-12-30 12:25:29 +01:00
FeniksFire
bf4024c3ac Adding bacground for QuickRecruitmentWindow
Adding bacground for CreaturePurchaseCard in QuickRecruitmentWindow
2017-12-23 13:15:05 +01:00
AlexVinS
368ba0e2bf fixes 2017-12-21 21:27:39 +03:00
FeniksFire
f82fd41a14 Quick Recruitment Window upgrade
Now is possible to switch by button between creatures upgrades.
Fixed small typo, rename from purhase to purchase.
2017-12-21 18:23:28 +01:00
Michał Kalinowski
26a222ac62 Change JsonType to enum class (#393)
Change enum JsonType to enum class JsonType
2017-11-27 00:18:18 +03:00
Dydzio
6ca1845515 Update VS project files to mach latest develop 2017-11-17 16:38:29 +01:00
AlexVinS
9bdd2c8d3f Implemented new debug command "convert txt"
* use it to extract essential texts in json format
2017-11-16 23:23:03 +03:00
AlexVinS
e8a7078bb1 Quick fix for #389.
* modded music support should be redone separately
2017-11-16 17:47:52 +03:00
AlexVinS
805b5215de Client threading tweak 2017-11-16 14:15:43 +03:00
AlexVinS
d7366f04a9 [Map format, PreGame] allow selection of any allowed faction 2017-11-16 02:06:07 +03:00
AlexVinS
9cf3f4fe93 Merge remote-tracking branch 'remotes/godric3/customBattleMusic' into develop 2017-11-15 22:39:14 +03:00
AlexVinS
39194a0629 Merge branch 'SplittingShortcuts' into develop 2017-11-15 22:31:55 +03:00
AlexVinS
42a2aa2020 [C::B] project update 2017-11-15 22:31:30 +03:00
FeniksFire
3c3aaa7bb5 Improvement quick recruitment window
-Position is now relative to castle interface
-The highest level of creature is now presented.
-Improve positioning of creature card, now it's look like in hd mod.
2017-11-15 19:44:54 +01:00
FeniksFire
f2b7c85811 Adding object construction macro with parameter
- Adding macro "OBJECT_CONSTRUCTION_CAPTURING" that take as parameter
action flag.
- Fixed minor errors
2017-11-14 08:52:33 +01:00
FeniksFire
a4f701014b Quick Army Purhase in Town Screen
Mouse click on castle icon (it is now clickable) - quick recruit of all
available creatures.
2017-11-12 17:37:08 +01:00
godric3
76eed8682c Allow mods to add music played during battles and ai turn 2017-11-11 21:16:11 +01:00
AlexVinS
654fea56a4 Fixed memory leak in CAnimation (regression of #376) 2017-11-04 06:03:43 +03:00
AlexVinS
97d73f47b0 Fixed https://bugs.vcmi.eu/view.php?id=2817 2017-11-03 18:39:43 +03:00
Arseniy Shestakov
75c3e30404 CMake: further improvements for generated VS solutions
* Set vcmiclient as VS_STARTUP_PROJECT so it's will be default debug target instead of ALL_BUILD.
* Add AIs and server as dependencies for client so VS will suggest to rebuild them before debugging.
2017-10-31 09:30:58 +03:00
Alexander Shishkin
fd4ecbd40b
Merge pull request #385 from Chocimier/altar
Fixed "Altar of Sacrifice only sacrifices creatures one kind at a time"
* https://bugs.vcmi.eu/view.php?id=2607
2017-10-28 14:04:34 +03:00
Piotr Wójcik
7171fa7ad4 Formatting 2017-10-28 11:04:55 +02:00
AlexVinS
c39cd5f951 Town building build mode fixes
* CGameHandler::buildStructure was using wrong requirements for buildings in auto mode.
* Build mode loading was wrong in case of omitted value
* Show town hall slot for not built building only if it have normal build mode
2017-10-28 03:27:39 +03:00
FeniksFire
86021f0bda Add keyboard shortcuts for quick army management from HD mod.
Just want add fast some really nice shortcuts from HD mod.
1) [LShift] + LClick – splits a half units from the selected stack into
an empty slot. WARNING: The second behaviour ("smart split, ignores
single creatures") of this HD mod option is not done.
2) [LCtrl] + LClick – splits a single unit from the selected stack into
an empty slot.
3) [LCtrl] + [LShift] + LClick – split single units from the selected
stack into all empty hero/garrison slots
2017-10-27 05:21:33 +02:00
Piotr Wójcik
78e5d39ea0 Change variables type 2017-10-18 21:02:23 +02:00
Piotr Wójcik
f9ed952869 Properly calculate experience on altar 2017-10-14 22:10:59 +02:00
Piotr Wójcik
f145b4be91 Correctly sacrifice many stacks or many atrifacts, fixes #2607 2017-10-14 21:30:56 +02:00
ArseniyShestakov
4149662845 Merge pull request #376 from vcmi/newAnimations
New animations
2017-10-11 16:18:06 +03:00
AlexVinS
fc1938c341 fix 2017-10-08 11:03:12 +03:00
godric3
f03a0b1151 fix #2731, now no morale, and no luck texts show properly 2017-10-05 17:13:49 +02:00
AlexVinS
891eb5771a Use hero battle victory and failure animations 2017-09-27 17:35:30 +03:00
Arseniy Shestakov
ec2bef40fb CServerHandler: avoid crash without interprocess memory
Even if shared memory wasn't disabled we shouldn't crash without it.
It's important because Snap packages don't have access to /dev/shm.
2017-09-18 10:46:58 +03:00
Fay
1ee4e232fa Removed unnecessary full screen redraws in swipe mode; (#381) 2017-09-18 08:27:03 +03:00
Arseniy Shestakov
ae13123129 CPlayerInterface: don't stop hero movement on embark / disembark
When hero have free boarding bonus there no reason to stop movement.
2017-09-16 10:42:27 +03:00
AlexVinS
270e1b75ce Support for creature 2-hex attack, alternate death and cast animation types
* margin option .json animation
* Use ranged attack animation for spell cast if there is no cast animation, display cast animation only on active casting.
2017-09-12 19:51:54 +03:00
Arseniy Shestakov
494872937a CGuiHandler: use std:atomic to sync breaks in event handling 2017-09-11 12:18:16 +03:00
Arseniy Shestakov
986fc08b1e CGuiHandler: use SDL_PushEvent in fakeMouseMove to avoid crashes
Somehow this worked on other platforms, but on macOS it's cause constant crashes.
2017-09-11 12:18:16 +03:00
AlexVinS
c30d9f2fd6 Fix 2017-09-06 15:50:59 +03:00
AlexVinS
3bbff27127 Wiped CDefEssential 2017-09-06 15:13:28 +03:00
AlexVinS
6cd0dd9843 Use CAnimation for creature projectiles 2017-09-05 20:04:17 +03:00
AlexVinS
05bb8b13e9 Use CAnimation for battle creature animation 2017-09-05 18:59:26 +03:00
AlexVinS
78b86224a0 Use CAnimation fro custom battle effects 2017-09-05 17:21:44 +03:00
AlexVinS
882e279818 Use CAnimation in CBattleInterfaceClasses 2017-09-05 16:44:27 +03:00
AlexVinS
69c6643893 More CCursorHandler style tweaks
# Conflicts:
#	AI/FuzzyLite
2017-09-05 15:25:49 +03:00
AlexVinS
9423555015 Declare ownership of CCursorHandler::dndObject
# Conflicts:
#	AI/FuzzyLite
#	client/gui/CGuiHandler.cpp
2017-09-05 15:25:31 +03:00
AlexVinS
a8d25ea7b2 CHeroWindow tweaks
# Conflicts:
#	AI/FuzzyLite
#	client/windows/CHeroWindow.cpp
2017-09-05 15:22:48 +03:00
AlexVinS
ce4b206472 More complete support of .def format 2017-09-05 14:32:52 +03:00
AlexVinS
3a9d73da23 [c::b] Update project, fixed build 2017-09-05 14:31:34 +03:00
ArseniyShestakov
ca066841f1 Merge pull request #370 from vcmi/issue/2780
Issue/2780
2017-09-05 01:21:58 +03:00
AlexVinS
2f7968b803 Fixed wrong animation paths 2017-09-04 18:41:22 +03:00
AlexVinS
b964a53abe Fixed battle animation 2017-09-04 17:52:36 +03:00
AlexVinS
df34a2cc96 Dirty hackfix for https://bugs.vcmi.eu/view.php?id=2780 2017-09-03 23:38:15 +03:00
Henning Koehler
abdca71828 skill names and descriptions are fully managed by CSkillHandler 2017-08-30 22:35:23 +12:00
Henning Koehler
0357a4fe3b enabled config of skill descriptions 2017-08-26 10:08:06 +12:00
Arseniy Shestakov
c6ff28936d Client: change intro video position 2017-08-24 03:29:37 +03:00
Dydzio
ea17b0f458 Major overhaul of VS related files 2017-08-19 15:58:55 +02:00
Dydzio
e3ba491fa1 Use multi-core compile by default, fix VCMI_client path 2017-08-19 13:27:24 +02:00
Arseniy Shestakov
5fce56d23e CMake: add ENABLE_DEBUG_CONSOLE option for Windows enabled by default
For now we'll keep console, but in future we need a way to toggle it at runtime.
2017-08-16 23:45:38 +03:00
Arseniy Shestakov
2b3a467728 CMake: structure changes and other small improvements
- Now cmake_minimum_required used properly and set to 2.8.12
- cmake_modules/CMakeCPackOptions.cmake.in is removed
2017-08-16 16:10:08 +03:00
Arseniy Shestakov
fee999300e VCMIDirs: add hack to run from single directory on Mac and Linux
Also change working directory to where binary is on all platforms except Android
2017-08-16 16:10:08 +03:00
Arseniy Shestakov
40af43c46e CMake: massive rework for Mac build and other improvements
- macOS: RPATH-related code all removed or disabled
- macOS: new osx/CMakeLists.txt to run some install-code running after all subdirectories
- Assets copying into the runtime output directory implemented for Mac and Linux development
2017-08-16 16:10:07 +03:00
Arseniy Shestakov
7dca95c8cc CMake: multiple improvements for builds and project generation
- Change default build output directory name from "build" to "bin"
- Implement new function vcmi_get_cmake_debug_info
- Link client with SDL2main on Windows and disable debug console
- Remove all old MinGW-specific options since they outdated and MXE work fine
- Set AUTOGEN_TARGETS_FOLDER for better Xcode and Visual Studio projects
- Remove useless vcmitestFiles custom target for less garbage in project files
2017-08-16 16:10:07 +03:00
Arseniy Shestakov
56f89270db macOS: full rework of Mac packaging process
- Most of outdated CMakeLists code removed.
- All Mac-specific code is removed include Sparkle support and vcmibuilder app.
- DMG buidling reimplemented using macdeployqt command.
2017-08-16 16:10:07 +03:00
Arseniy Shestakov
193f492b99 CMake: cleanup, project generation and other improvements
- Use EXCLUDE_FROM_ALL for FuzzyLite and GoogleTest to avoid inclusion of unneded headers and libraries into installers.
- Set minimum CMake version only in main CMakeLists.txt
- Set project name only in main CMakeLists.txt
- Visual Studio: add assign_source_group function to generate proper filesystem tree
- Visual Studio: set PROJECT_LABEL so generated projects have same names binaries on Windows
- Visual Studio: enabled USE_FOLDERS for projects grouping. This also possibly affect other IDEs.
- Added add_subdirectory_with_folder function to make sure 3rd-party libraries are affected by USE_FOLDERS.
2017-08-16 16:10:07 +03:00
Arseniy Shestakov
c3e6195cc9 CServerHandler: one more small fix when server is crashed 2017-08-13 23:17:56 +03:00
Arseniy Shestakov
9c7c47c754 CServerHandler: for now don't stop client if server crashed
Currently server stable enough and only crash on shutdown.
It's certainly more annoying to crash on end of game than get freeze.
Unfortunately it's crash on shutdown almost every time on macOS.
2017-08-13 23:09:23 +03:00
Arseniy Shestakov
fad2a0a3fb Fix memory leak and remove some garbage files added in last commit 2017-08-13 22:15:25 +03:00
Arseniy Shestakov
cd98dd0b89 CGuiHandler: make terminate_cond non-static
Static variable might be not yet initialized by the time it's used inside CGuiHandler constructor.
This fix let us avoid crash that occur when built with Xcode 8.2.1
2017-08-13 21:54:07 +03:00
AlexVinS
8c0fab1dcf fixes 2017-08-12 14:36:37 +03:00
AlexVinS
15138c23de Finished conversion to new logging API
* removed logger streams
* (float3|int3)::operator() -> (float3|int3)::toString(), it was too ugly and confusing.
2017-08-11 23:06:27 +03:00
AlexVinS
64d9dadd64 Logging cleanup. 2017-08-11 15:47:50 +03:00
AlexVinS
c293589c07 A bit more logging cleanup 2017-08-10 23:47:58 +03:00
AlexVinS
143ff682bc Logging cleanup 2017-08-10 21:59:55 +03:00
AlexVinS
85e952f25f Logging cleanup 3 2017-08-10 20:17:10 +03:00
AlexVinS
61e241308d Logging cleanup 2017-08-10 19:52:05 +03:00
Arseniy Shestakov
21074e13c3 macOS: always change working directory for launcher and server
This make relative paths work properly when launched from DMG or from different directory.
2017-08-09 01:33:12 +03:00
ArseniyShestakov
cb40c093f8 Avoid boost::optional assignment for Boost 1.64 compatibility (#360)
Two options here: to use emplace from 1.56 or boost::make_optional.
Unfortunately Ubuntu 14.04 is using 1.54 and I'd rather not to break it.
2017-08-05 16:09:29 +03:00
ArseniyShestakov
4388e12a3a Merge pull request #358 from Chocimier/altar
Fixed bugs in Altar
2017-08-05 02:25:41 +03:00
AlexVinS
2d31d5710f [tests] Reduced code duplication 2017-08-03 15:56:45 +03:00
Piotr Wójcik
886c8f63c6 Show stacks selected to sacrifice 2017-08-01 17:17:46 +02:00
ArseniyShestakov
9d9c026c85 Code style: serialize everything on own lines for easier debugging (#357) 2017-07-31 16:35:42 +03:00
Piotr Wójcik
137b9cde19 Fix crash in Altar of Sacrifice, fixes #2648 2017-07-29 19:27:39 +02:00
Fay
80f149e296 Better android input handling: sending notifications about CInputText changes to java so that we can display textinput overlay there; (#354) 2017-07-23 20:23:48 +03:00
Arseniy Shestakov
6d9f99d4de Code style: and one more pass on lambda expressions parameter list 2017-07-19 02:11:17 +03:00
Arseniy Shestakov
b540ab73ed Code style: add empty parameters list to more lambda expressions 2017-07-19 01:39:38 +03:00
Arseniy Shestakov
2da3d8a563 Code style: remove senseless comments 2017-07-18 00:04:00 +03:00
ArseniyShestakov
b2f74a93cf Code style: add empty parameter list to all lambda expressions (#345) 2017-07-17 15:35:57 +03:00
Dydzio
81ccecedca Fix color change of highlighted hex borders (#343) 2017-07-17 01:15:05 +03:00
ArseniyShestakov
b52cfe5283 Code style: use parentheses for creating heap-based objects (#344) 2017-07-16 12:58:05 +03:00
AlexVinS
7374689301 Fixed https://bugs.vcmi.eu/view.php?id=2715 2017-07-16 00:02:55 +03:00
ArseniyShestakov
a4c0ad94b1 Code style: remove default value hints in definitions (#342)
Some are outdated and this is something IDE are useful for.
2017-07-15 14:08:20 +03:00
ArseniyShestakov
ea0ceb1805 Merge pull request #323 from vcmi/CStackTweaks
CStack tweaks
2017-07-15 00:42:08 +03:00
AlexVinS
2fb531b6d0 Display actual moral and luck for batlle stack 2017-07-14 21:42:36 +03:00
Arseniy Shestakov
f1e5797834 Code style: move or add licensing information on top of every file 2017-07-14 01:26:03 +03:00
Dydzio
7bf1b91235 Visual Studio files tweaks 2017-07-13 13:18:40 +02:00
Alex Dunn
1d735503d1 CMake: fix macOS app bundle (#337)
Currently the vcmiclient binary is left behind in the build directory.
2017-07-13 11:29:23 +03:00
Arseniy Shestakov
dbcd79c48a Code cleanup: remove double and unneded semicolons 2017-07-12 22:01:10 +03:00
AlexVinS
09df2dcfbb fixed possible race condition 2017-07-12 19:40:14 +03:00
AlexVinS
2c525fc76e Attempt to fix headless tests crash. 2017-07-12 17:02:25 +03:00
Dydzio
252f68cb1a Fix black market behavior to match H3 2017-07-12 01:21:00 +02:00
ArseniyShestakov
2cf7c7b234 Merge pull request #335 from dydzio0614/bug2476_fix2
Fix #2 for bug #2476
2017-07-11 15:40:35 +03:00
Dydzio
182210421d Fix #2 for bug #2476 2017-07-11 14:04:43 +02:00
ArseniyShestakov
fcd63cd982 Merge pull request #333 from dydzio0614/RealFullscreen
Add optional real fullscreen mode support
2017-07-10 21:04:24 +03:00
AlexVinS
1fe01b7254 Moved defensive stance log message building to server side. 2017-07-10 04:05:36 +03:00
AlexVinS
7bf8c9bd69 fixed and cleanup 2017-07-08 21:20:38 +03:00
AlexVinS
4f14f22d3a Unified CStack ammo, casts and counterattacks
* it is possible now to add casts and shoots OTF (f.e. with spell bonus)

Centralized stack 'ammo' loading from bonus system.
* introduced small proxy class for local bonus cache
(no need to use global cache if particular selector used on node only in one place)
* handle killing resurrected creatures
* use IBonusBearer::MaxHealth() where possible
* Fixed https://bugs.vcmi.eu/view.php?id=2486
* Possible fix for 0 HP after resurrection.
* Hack-fixed https://bugs.vcmi.eu/view.php?id=2584
* Unified CStack health API
* Use CHealth for CStack count and health points
* increased SERIALIZATION_VERSION
2017-07-08 20:29:59 +03:00
Dydzio
c377f594a5 Add optional real fullscreen mode support 2017-07-08 18:43:04 +02:00
ArseniyShestakov
3634af10ba Merge pull request #330 from dydzio0614/AmountBoxTweaks
Tweak battle creatures amount box hiding
2017-07-08 15:54:18 +03:00
Dydzio
2d6f964d65 Amount box support for stacked war machines 2017-07-07 19:04:29 +02:00