1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-12 10:03:53 +02:00
Commit Graph

517 Commits

Author SHA1 Message Date
Michael
6ca5518ff1
Buxfix 2023-08-11 20:09:41 +02:00
Ivan Savenko
9d7f46f985 Fix crash on right-clicking player flags in RMG UI 2023-08-11 18:50:39 +03:00
Michael
2d9bb34825
format 2023-08-11 01:49:10 +02:00
Michael
2b093b8850
case handling 2023-08-11 01:46:22 +02:00
Michael
092a0d72a1
whitespace format 2023-08-11 00:19:24 +02:00
Michael
c260ce5814
current folder in first line 2023-08-10 23:52:16 +02:00
Michael
48747eea9d
bigger line for folder 2023-08-10 23:37:19 +02:00
Michael
f24c636d17
code review suggestions 2023-08-10 22:15:32 +02:00
Michael
92fd317a84
erase -> pop_back 2023-08-09 20:27:24 +02:00
nordsoft
f4869cbfb0 Tutorial load game mode 2023-08-09 15:29:48 +04:00
nordsoft
1def98a862 Tutorial implemented 2023-08-09 03:54:09 +04:00
Michael
6013549ef8
no old selection 2023-08-09 00:41:13 +02:00
Michael
8693dab9ec
fix filter 2023-08-09 00:13:02 +02:00
Michael
bbe04c747d
Folder Icon, Save, Folder on top... 2023-08-08 23:46:30 +02:00
Michael
855b94b316
fix 2023-08-08 02:30:28 +02:00
Michael
8b8006c0e0
bring it to work... 2023-08-08 02:04:06 +02:00
Michael
5e1f1294e5
rework 2023-08-08 00:38:13 +02:00
Michael
e5627b4bb7
tests 2023-08-07 00:10:06 +02:00
Ivan Savenko
9bd27c50a0 Allowed loading saves from inside mods 2023-08-06 19:39:55 +03:00
Ivan Savenko
723c674d81
Merge pull request #2447 from IvanSavenko/modding_handler_refactoring
(develop) Modding handler refactoring
2023-08-02 21:26:05 +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
62fddca21e Split massive CModHandler class/file into multiple parts:
- IdentifierStorage is now a separate handler in VLC
- Renamed ModHandler::Incompatibility exception to ModIncompatibility
- Extracted ModScope namespace from ModHandler
- Extracted ModUtilities namespace from ModHandler
- Split CModHandler.cpp on per-class basis
- Replaced some direct members with unique_ptr to reduce header includes
2023-07-30 22:17:47 +03:00
Ivan Savenko
823080be86 Fix error on opening map list with hota maps 2023-07-24 23:27:26 +03:00
Tomasz Zieliński
d26e46ddfe Remove old id, replace with randomTemplate 2023-07-24 17:39:32 +02:00
Tomasz Zieliński
6522cec969 Just the notes 2023-07-24 08:44:37 +02:00
Tomasz Zieliński
e8855e20c4 Merge remote-tracking branch 'origin/beta' into fix_rmg_teams 2023-07-22 12:16:14 +02:00
Michael
0f16cec3b9
whitespace 2023-07-20 22:05:09 +02:00
Michael
f313597968
Use boost::format 2023-07-20 22:02:39 +02:00
Michael
36e870ae45
Descriptions 2023-07-20 21:37:23 +02:00
Tomasz Zieliński
57bb011468 - Do not allow 0 or 1 teams
- Do not allow player to set only 1 team in GUI
2023-07-20 20:34:00 +02:00
Michael
a86406d090
check list length 2023-07-20 02:20:54 +02:00
Michael
3484059a40
fix indentation 2023-07-20 02:01:00 +02:00
Michael
c28c0d2a13
Popup - Mapselection 2023-07-20 01:53:33 +02:00
Ivan Savenko
280085b95d
Merge pull request #2308 from IvanSavenko/remove_client_savegame
Remove client savegames
2023-07-19 14:46:46 +03:00
Ivan Savenko
9ef959a7f8
Merge pull request #2310 from IvanSavenko/left_click_refactor
Left click input refactor
2023-07-13 13:03:06 +03:00
Mike
3c707d8e31 Cleanup 2023-07-11 23:12:59 -07:00
Mike
5134583111 Added missing redraw after selection update 2023-07-11 23:10:02 -07:00
Mike
90397a9604 Merge remote-tracking branch 'upstream/develop' into develop 2023-07-11 19:06:21 -07:00
DjWarmonger
f6cc61e0be
Merge pull request #2297 from vcmi/rmg_roads
Rmg roads
2023-07-11 09:25:24 +02:00
Ivan Savenko
0deeff30b9 replaced clickPressed with clickReleased where applicable to H3 2023-07-09 17:55:39 +03:00
Ivan Savenko
9449899098 Fix regressions 2023-07-09 17:08:37 +03:00
Ivan Savenko
8750aa2c5b Merged server savegame and (broken and unused) client savegame files 2023-07-09 15:30:47 +03:00
Mike
b327f890f2 Partially fixed initial loading of save file
Brought back the missing save file info in the info card. Still need to fix the input text box and selection highlight.
2023-07-08 23:00:48 -07:00
Ivan Savenko
ca889a5c2a Replaced clickLeft with clickPressed clickReleased methods 2023-07-08 14:33:04 +03:00
Tomasz Zieliński
730b36612c Respect GUI settings for roads. By default, all road types are enabled. 2023-07-08 08:44:10 +02:00
Ivan Savenko
b775385179 Fix usage of left/right button to select amounts, e.g. in recruit screen 2023-07-04 21:35:26 +03:00
Ivan Savenko
4fd5a2b3ea Fixed sorting maps breaking after multiple clicks in succession 2023-07-04 20:28:00 +03:00
Ivan Savenko
900b1c1763 Simplified text input handling, fixes hotkeys on windows with text input 2023-07-04 18:42:52 +03:00
Ivan Savenko
8b61c0d59b Replaced CIntObject::type bitfield with bool's. Added input blocking. 2023-07-03 19:24:12 +03:00
Ivan Savenko
cdc27d1fcf Play correct music file in campaign menu 2023-06-27 20:09:11 +03:00
Ivan Savenko
0fdbf54937 Use HeroTypeID instead of int 2023-06-27 19:32:27 +03:00
Ivan Savenko
96eab03b16 Fix UI updates 2023-06-27 14:09:04 +03:00
Ivan Savenko
0f8d53e978 Replaced SDL user events list with dispatching of arbitrary functors 2023-06-26 21:51:10 +03:00
Ivan Savenko
e2bd98e21e CampaignRegions class encapsulation 2023-06-26 17:15:59 +03:00
Ivan Savenko
f6b2f58da9 Use inheritance instead of composition for campaign header 2023-06-26 17:15:59 +03:00
Ivan Savenko
a08fe09517 Added encapsulation for CampaignState class 2023-06-26 17:15:59 +03:00
Ivan Savenko
8420a90aa4 Reorganization of campaigns code 2023-06-26 17:15:59 +03:00
Ivan Savenko
d1e5a347ff Refactoring of campaign handler: rename types and use strong typing 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
Ivan Savenko
69dc95c3c8
Merge pull request #2235 from IvanSavenko/hota_h3m_support
Hota h3m support
2023-06-23 13:32:10 +03:00
Ivan Savenko
a505cc464e Fixed slider's behavior, especially for mobile systems 2023-06-22 23:49:38 +03:00
Ivan Savenko
7c5dcfd47b Fix closing dropdown box via clicking outside bounds 2023-06-22 22:34:05 +03:00
Ivan Savenko
563d7dd41f Renamed RCLICK -> SHOW_POPUP 2023-06-20 19:58:05 +03:00
Ivan Savenko
8ad577255f Replaced isMouseButtonPressed with isMouseLeftButtonPressed 2023-06-20 19:58:05 +03:00
Ivan Savenko
d4aa778547 Replaced clickRight event with showPopupWindow/closePopupWindow 2023-06-20 19:58:05 +03:00
Ivan Savenko
d51fe62804 Win/loss condition texts use MetaString 2023-06-20 19:37:27 +03:00
Ivan Savenko
0e36a3ab5a Use Scrollable class for all appropriate locations 2023-06-05 19:18:33 +03:00
Ivan Savenko
052d0d314a Implemented Scrollable class, to server as common base for such classes 2023-06-05 19:17:04 +03:00
Ivan Savenko
6fe00ad55c Moved slider class to a separate file 2023-06-05 19:16:01 +03:00
Ivan Savenko
57df1c3e0d Implemented gesture for town/hero lists and town/hero selection 2023-06-05 19:12:24 +03:00
Ivan Savenko
360bf48031 Implemented panning/swiping gesture for sliders 2023-06-05 19:09:56 +03:00
Ivan Savenko
2a30eccb2d Allow mouse wheel for astart options setup (town/hero/bonus) 2023-06-05 19:00:57 +03:00
Ivan Savenko
48859e186e Added panning gesture, activated by mouse wheel press 2023-06-05 19:00:56 +03:00
Ivan Savenko
503bd1dd66 Fix double-clicking to start scenario 2023-06-05 19:00:56 +03:00
Ivan Savenko
8ea0ecaec1 show/showAll methods now use Canvas instead of SDL_Surface
- added compatibility method to Canvas to allow SDL_Surface access
- added drawBorder method to Canvas to replace CSDL_Ext method
- added drawColor method to Canvas to replace CSDL_Ext method
- minor changes to Tavern and Trade windows to adapt to new API
2023-06-02 16:42:18 +03:00
Ivan Savenko
acac42291e Remove excessive CMap.h includes 2023-05-31 23:18:38 +03:00
Ivan Savenko
62595cb039 Split massive CMap.h a bit 2023-05-31 23:01:57 +03:00
Ivan Savenko
de769a04d6 Remove unnecessary includes from headers 2023-05-31 23:01:57 +03:00
Ivan Savenko
daaaf84392 Icon index for map format is now defined in config 2023-05-31 23:01:57 +03:00
Ivan Savenko
fb55719671 Map format support status can now be loaded from gameSettings 2023-05-31 23:01:57 +03:00
Ivan Savenko
e23dfec6c5 Fix SDL_Hints location 2023-05-20 01:51:49 +03:00
Ivan Savenko
0e70f2998f SDL event handling is now done exclusively in input handler 2023-05-20 01:51:49 +03:00
Ivan Savenko
1f513fd280 Extracted event management from GuiHandler and CIntObject 2023-05-20 01:51:49 +03:00
Ivan Savenko
ad3e54e6c0 Reduced usage of topWindow() method 2023-05-16 21:57:45 +03:00
Ivan Savenko
e2ef136003 Renamed "Int" -> "Window" in WindowHandler API 2023-05-16 19:10:22 +03:00
Ivan Savenko
7838190ef4 Moved window stack management from GuiHandler to new class 2023-05-16 19:10:21 +03:00
Ivan Savenko
c5a48a01ce Remove no longer used code 2023-05-09 13:10:33 +03:00
Ivan Savenko
edd5d11734 Fix issues discovered by self-review 2023-05-09 13:10:33 +03:00
Ivan Savenko
c688411bab Extracted window management from CMT to new class 2023-05-09 13:10:33 +03:00
Ivan Savenko
dea10e6091 Use more descriptive names for hotkeys 2023-05-01 17:59:20 +03:00
Ivan Savenko
832e56e005 Implementation of (very basic) shortcuts system
- Added EShortcut enumeration that contains all in-game shortcuts
- CIntObject::keyPressed now receive values from hotkey enumeration
- On keypress, SDL key code will be translated to shortcut ID
- Removed access to SDL key codes from most of engine
2023-05-01 17:58:17 +03:00
Ivan Savenko
fb739e7186 Merge beta -> develop 2023-04-26 22:48:08 +03:00
Ivan Savenko
3ac713d6a8 Fix crash on dereferencing nullptr 2023-04-24 17:17:12 +03:00
nordsoft
753b72f96d Revert "Hidden maps"
This reverts commit e669d31d33.
2023-04-20 19:50:00 +04:00
Ivan Savenko
b3207f3465 RMG tab will now show all templates but will block invalid map sizes 2023-04-19 23:14:23 +03:00
Ivan Savenko
b517adfb25 Fixed crash on empty save game list after filtering 2023-04-19 23:12:30 +03:00
Ivan Savenko
3d30e04184 Fixed centering of scenario information window 2023-04-19 23:11:44 +03:00
nordsoft
80220fda5b Merge remote-tracking branch 'upstream/develop' into vcmi-campaign
# Conflicts:
#	lib/mapping/CMap.h
2023-04-17 04:54:57 +04:00
nordsoft
70f4cc5e0f Refactor campaign regions 2023-04-17 04:26:35 +04:00
nordsoft
954a2abb71 Verifying mods before starting map 2023-04-16 15:38:13 +04:00
Ivan Savenko
cc8c1c769a Fix duplicated maps in scenario selection screen 2023-04-15 17:20:38 +03:00
Ivan Savenko
3738171b21 Refactoring of H3M loader to make HotA format support easier
- extracted low-level reader from MapFormatH3M class
- added separate structure to define version-specific values
- cleared up some H3M format edge cases
- replaced witch hut skill vector with set
- converted several fields to enum type
2023-04-15 17:20:38 +03:00
nordsoft
e28dd128e0 Revert "Auxiliary commit to revert individual files from fb4db41891e157f4f7d72ee759141754d2df680c"
This reverts commit 46d35541b453b6c026c457bf0c788f79311968b3.
2023-04-13 12:45:10 +04:00
nordsoft
fb4db41891 Single player spectator 2023-04-13 02:01:13 +04:00
nordsoft
e669d31d33 Hidden maps 2023-04-12 02:44:17 +04:00
nordsoft
30281d5991 Merge remote-tracking branch 'upstream/develop' into vcmi-campaign 2023-04-11 21:44:31 +04:00
Ivan Savenko
dfa2e2a349 Merge beta into develop 2023-04-11 19:37:35 +03:00
nordsoft
08809f1cdc String building id 2023-04-09 04:53:06 +04:00
nordsoft
307fb071a2 VCMI campaign format support prototype 2023-04-09 03:24:40 +04:00
nordsoft
9e5e1aebbc Remove hardcoded campaign screens 2023-04-09 00:16:11 +04:00
Adriankhl
57409a0d94 fix: close dropbox with left mouse click outside of the dropbox 2023-04-06 18:32:21 +02:00
Konstantin
11b237a23c vcmi: massive refactoring v1 2023-04-05 22:33:12 +03:00
Ivan Savenko
383387ef29 Integrated defaultMods into mod system 2023-03-16 17:55:09 +02:00
Adriankhl
eba4e4dd2c No longer save/load common game state to/from client file 2023-03-13 10:10:44 +01:00
Konstantin
5366f9190e vcmi: reduce boost::lexical_cast usage 2023-03-09 16:36:46 +03:00
Ivan Savenko
4260726e4b Provide encoding information to maps & campaigns loaders 2023-03-05 17:39:27 +02:00
Ivan Savenko
cfcaf5cbb6 renamed keyDown -> keyPressed 2023-02-03 11:39:40 +02:00
Ivan Savenko
e1bd0d2a04 API for custom events no longer requires SDL access 2023-02-03 11:39:40 +02:00
Ivan Savenko
d4fba3787c Removed usage of SDL_KeyboardEvent from UI code 2023-02-03 11:39:40 +02:00
Ivan Savenko
108a42e4ba Reorganized includes for new layout. New class - IImageLoader 2023-02-01 20:42:06 +02:00
Ivan Savenko
9c3030603d Removed most SDL includes from headers, removed SDL int's 2023-01-30 19:55:32 +02:00
Ivan Savenko
87218c63c4 CPicture now uses IImage internally 2023-01-30 17:18:59 +02:00
Ivan Savenko
e35a669eeb Refactoring of CPicture class to improve encapsulation 2023-01-30 13:58:13 +02:00
Ivan Savenko
50a0fc4fb2 Removed pointer to current SDL_Event from GuiHandler 2023-01-27 23:17:40 +02:00
Konstantin
cf56f7ccce vcmi: remove unused-but-set-variables 2023-01-26 23:49:00 +03:00
Ivan Savenko
a19c9eccc4 Fix ios compile 2023-01-20 16:11:43 +02:00
Ivan Savenko
05a1d7c6e3 All text for factions/towns/building are passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
388ed88b5d All artifact strings now pass through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
d2b837b116 All creature-related texts go through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
fa6f7513e8 All heroes-related strings are passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
e22f6283c2 Secondary skills strings are now passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
5da407e822 All spell texts are now passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
e48bd39b9c Moved road & river handlers into a separate file 2023-01-11 15:17:24 +02:00
Ivan Savenko
4f3ea0d1d9 Renamed Terrain.h/cpp -> TerrainHandler.h/cpp 2023-01-10 00:01:35 +02:00
Ivan Savenko
f51b3bca57 use JsonKey or NameTranslated instead of ambiguos Name 2023-01-10 00:01:35 +02:00
Ivan Savenko
e1799379dd Terrain/Road/River handler are now in compileable state 2023-01-10 00:01:35 +02:00
Ivan Savenko
1fece0ce18
Merge pull request #1229 from IvanSavenko/battle_improvements
Battle: Fixing bugs & Implementation of missing features
2023-01-09 22:07:13 +02:00
Ivan Savenko
bde988ca43
Merge pull request #1329 from IvanSavenko/translate_game
Translations support - base functionality for main game texts
2023-01-09 20:33:56 +02:00
Ivan Savenko
396b7740c3 Removed unused variable 2023-01-05 17:37:40 +02:00
Ivan Savenko
d3ecd43aba Merge remote-tracking branch 'vcmi/develop' into battle_improvements 2023-01-04 16:20:53 +02:00
nordsoft
660d25a335 Make control panel configurable 2023-01-03 13:02:54 +04:00
Ivan Savenko
6fd50a7ded MXE compile fix 2023-01-01 22:26:07 +02:00
Ivan Savenko
7c0d5666a0 Return string by copy to fix cases when string is constructed on stack 2023-01-01 20:55:43 +02:00
Ivan Savenko
cb4f5edae9 All Heroes 3 texts are now passed through translator 2023-01-01 14:56:45 +02:00
Ivan Savenko
5d80457eda Merge with vcmi/develop branch 2022-12-30 00:52:23 +02:00
Ivan Savenko
7a35bcc812
Merge pull request #1221 from IvanSavenko/warnings_fix
Fix remaining compiler warnings
2022-12-29 21:51:55 +02:00
Ivan Savenko
fa355c3356 Fix build 2022-12-26 01:38:25 +02:00
Ivan Savenko
bb65246aa3 Merge remote-tracking branch 'vcmi/develop' into battle_improvements 2022-12-26 01:15:44 +02:00
Ivan Savenko
325c29da0d Merge remote-tracking branch 'vcmi/develop' into battle_improvements 2022-12-23 14:51:34 +02:00
Ivan Savenko
eb20a4b208 Merge remote-tracking branch 'vcmi/develop' into warnings_fix 2022-12-23 14:40:45 +02:00
nordsoft
ad5bf2ac4f Fix msvc build 2022-12-22 02:10:56 +04:00
nordsoft
e245dbaf9d Use kind-of-factory approach for widget builders 2022-12-22 02:05:29 +04:00
nordsoft
8f7025328f Read default template from config, named custom types 2022-12-22 01:37:33 +04:00
nordsoft
7e7071fc95 Merge remote-tracking branch 'upstream/develop' into interface-builder 2022-12-22 01:24:29 +04:00
nordsoft
521328addd Adding macros for targeted object binding 2022-12-22 00:54:06 +04:00
Ivan Savenko
d29c9d6445 Fortify CLabel interface to prevent unchecked access 2022-12-19 22:04:50 +02:00
nordsoft
d7b0770b71 Remove excessive code 2022-12-17 20:50:33 +04:00
nordsoft
9b76a8000f Making team alignments widget customizable 2022-12-17 20:38:16 +04:00
nordsoft
b590e4a0e4 Fixes for multiplyer 2022-12-17 08:38:33 +04:00
nordsoft
b1f2c7aed4 Team alignments implemented 2022-12-17 08:19:16 +04:00
nordsoft
4f5fab702e Support roads selection in random map tab 2022-12-17 04:54:37 +04:00
nordsoft
42281f51e8 Revert "Remove uncompleted code"
This reverts commit 0c41787ca5.
2022-12-17 03:53:26 +04:00
nordsoft
8f089b3302 Rename folder 2022-12-16 02:19:23 +04:00
nordsoft
0c41787ca5 Remove uncompleted code 2022-12-16 02:17:10 +04:00
nordsoft
d3c3feb037 Configurable template selection 2022-12-16 02:15:53 +04:00
Ivan Savenko
864990db13 Implemented Bloodlust & Petrification effect
- ColorFilter is now in separate file
- Moved lerp function into global.h
- Bloodlust visuals mostly matches H3
- Petrify visual matches H3
- TODO: Adjust timing of all ColorFilter efects to match H3
- TODO: Petrify should pause stack animations
- TODO: ColorFilter-powered effects should be configurable in Spell system
2022-12-15 23:24:03 +02:00
nordsoft
1d4209d97e Continue refactoring 2022-12-16 00:57:10 +04:00
nordsoft
2371e3e9a2 Interface builder refactored 2022-12-16 00:46:36 +04:00
nordsoft
2fe951f819 Merge remote-tracking branch 'upstream/develop' into interface-builder
# Conflicts:
#	client/lobby/RandomMapTab.cpp
2022-12-15 04:47:11 +04:00
nordsoft
4c3288dd61 Fix teams 2022-12-14 05:45:50 +04:00
nordsoft
fc7f1dbc5a Fix template selection 2022-12-14 05:23:21 +04:00
nordsoft
53b2f68560 Serialize template 2022-12-14 04:37:11 +04:00
nordsoft
1e2abae62b Template selections works 2022-12-13 04:38:18 +04:00
nordsoft
f90cb1be90 Template list prototype looks fine 2022-12-13 03:47:29 +04:00
nordsoft
cd58e8a860 Rename InterfaceBuilder 2022-12-12 11:48:39 +04:00
nordsoft
5e3504f578 Add improvements 2022-12-12 11:38:27 +04:00
nordsoft
8dbc5c1c1f Make each windows coniguration in separate file 2022-12-12 04:52:44 +04:00
nordsoft
b3d60ec418 Add new map sizes 2022-12-12 04:46:42 +04:00
nordsoft
3be9969154 Prevent crashes for custom config 2022-12-12 03:58:39 +04:00
nordsoft
0104c77d61 Interface builder for random map tab 2022-12-12 03:27:59 +04:00
Ivan Savenko
facf77b3ae vstd::unique -> std::unique 2022-12-07 23:36:20 +02:00
Ivan Savenko
a512e0d58f Fixed ugly solid-white status bars in pregame, removed operator* from
CPicture
2022-11-29 17:07:21 +02:00
Ivan Savenko
a0157d6117 replaced C array with std::array 2022-11-28 21:20:46 +02:00
Ivan Savenko
3e58d1e3c5 Merge remote-tracking branch 'refs/remotes/vcmi/develop' into battleint_refactor 2022-11-28 16:10:13 +02:00
Ivan Savenko
0cae259f53 Most of rendering in BattleInt is done via canvas
- refactoring of CBattleStacksController.cpp
- moved EAlignment enum to Geometries.h from CIntObject
- renamed EAlignment to ETextAlignment, to avoid conflict with good/evil
alignemt
- ETextAlignment is now enum class
2022-11-26 23:12:20 +02:00
nordsoft
41e652dad2 Move buttons blocks at proper place 2022-11-25 14:36:17 +04:00
nordsoft
ebb65b5d0e Prevent multiple clicks 2022-11-25 14:26:59 +04:00
Ivan Savenko
abb553d975 Next step of code refactoring:
- refactoring of CBattleFieldController code (except for 2 arcane
methods)
- introduced class CCanvas for encapsulated rendering surface
- battleint rendering is now partially done with CCanvas
- removed unused includes of CBitmapHandler
2022-11-25 11:46:47 +02:00
Ivan Savenko
6b3beb05e5 BattleInt split is finished, start of refactoring:
- Refactoring of siege controller code
- Replaced some usages of C struct SDL_Surface with proper c++ class
IImage
- Refactoring of rendering of battlefield objects (WIP)
2022-11-25 00:26:14 +02:00
nordsoft
625c18a889 Fix #3234 2022-11-18 04:05:35 +04:00
Andrey Filipenkov
f0b909f772 code improvement 2022-09-27 11:56:12 +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
f56acf8a80 fix crash on exiting Custom Campaign
fix kambala-decapitator/vcmi#46
2022-09-24 15:55:25 +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
bca46d9560 fix focusing input on Save screen 2022-09-24 15:55:19 +03:00
Nordsoft91
4f1f9e3c5d
Fix start game button for rmg without templates (#781) 2022-08-30 08:30:21 +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
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
Dmitry Orlov
a65feb29f5 Fixed: Advanced options window issues 2021-11-13 17:02:11 +02: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
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
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
John Bolton
c61bae4060 Fixed RETURN_IF_BATTLE(). Undid disabled warnings. Fixed indentation. 2020-10-05 16:28:28 -07:00
John Bolton
a05ae78e67 Fixed lots of warnings.
Disabled the following (for MSVC only) that couldn't (or shouldn't) be fixed.

4003: not enough actual parameters for macro 'identifier'
4250: 'class1' : inherits 'class2::member' via dominance
4251: 'type' : class 'type1' needs to have dll-interface to be used by clients of class 'type2'
4275: non dll-interface class 'type1' used as base for dll-interface class 'type2'
2020-10-04 02:20:18 -07:00
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
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
Dydzio
c428e326b9 Optimize button responsiveness during pregame options 2019-04-20 18:26:54 +02: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
Dydzio
b61d1ac857 Fix broken RMG monster strength buttons 2018-08-24 19:20:27 +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
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
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