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

156 Commits

Author SHA1 Message Date
Laserlicht
3e4a5b7d80
border and variable 2023-09-25 00:31:32 +02:00
Laserlicht
a6b68be2df
offsets 2023-09-24 23:50:50 +02:00
Laserlicht
8b5c9db21b
basic offset 2023-09-24 23:15:09 +02:00
Laserlicht
240d291de9
big spellbook 2023-09-24 22:24:51 +02: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
41210c1dbf Client-side support for multiple battles 2023-09-06 16:03:47 +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
97b7d44c88 Use ResourcePath for video accessing 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
d746a96d55 vcmi: use SpellSchool identifier instead of enum
Use identifier instead of enum inside callbacks. It is better and more
expandable solution.
2023-08-23 17:53:09 +03:00
Konstantin
344593e891 vcmi: made some CSpell properties private
There are getters for it.
2023-08-23 17:53:08 +03:00
Konstantin
8724181a0f vcmi: spell resistance rework
Now instead of XXX_IMMUNITY bonuses we have 2 bonuses with spellSchool
subtype: SPELL_SCHOOL_IMMUNITY and NEGATIVE_EFFECT_IMMUNITY.
All previous bonuses of subtype 0 is covered by SPELL_SCHOOL_IMMUNITY,
and all previous bonuses of subtype 1 is covered by
NEGATIVE_EFFECT_IMMUNITY. Unit tests are updated accordingly.
2023-08-23 17:52:16 +03:00
Ivan Savenko
44d16b32fe Use API identical to std classes where possible 2023-08-23 16:32:29 +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
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
563d7dd41f Renamed RCLICK -> SHOW_POPUP 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
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
c77f8482e3 Replaced event handling break system with key capturing 2023-05-20 01:51:49 +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
243773b6ef Renamed some adventure map files & classes 2023-05-09 13:10:33 +03:00
Konstantin P
057a33c508 SpellSchool: use identifier instead of int
Needs redifinition of MAGIC_SCHOOL_SKILL in all mods
2023-05-07 20:37:32 +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
f6d480cbb2 Moved player-specific heroes & towns information to new class 2023-04-20 22:04:24 +03:00
Ivan Savenko
4ec32e4dcd Renamed CAdvMapInt to its proper full name 2023-04-20 22:04:24 +03:00
Ivan Savenko
f245080cba Fix missing error message on casting spell in hotseat 2023-04-20 19:24:13 +03:00
Ivan Savenko
644f0f4b32 Removed ARRAY_COUNT in favor of std::size 2023-04-12 01:04:26 +03:00
Ivan Savenko
506c3d29bc Replaced vstd clamp with std version 2023-04-12 01:03:14 +03:00
Konstantin
5366f9190e vcmi: reduce boost::lexical_cast usage 2023-03-09 16:36:46 +03:00
Ivan Savenko
f8c1c46562 removed CAdvMapInt::handleRightClick method 2023-02-14 11:18:41 +02:00
Ivan Savenko
62151cd20c Replaced genRect with Rect constructor call 2023-02-03 19:17:59 +02:00
Ivan Savenko
7c58a46279 Removed some instances of access to screen surface 2023-02-03 18:23:53 +02:00
Ivan Savenko
3fef2a5e1f Moved Colors to a separate file, updated includes 2023-02-03 11:39:40 +02:00
Ivan Savenko
cfcaf5cbb6 renamed keyDown -> keyPressed 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
6669ffd4b3 Moved input-related code from SDL_Extensions to GuiHandler 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
e35a669eeb Refactoring of CPicture class to improve encapsulation 2023-01-30 13:58:13 +02:00
Ivan Savenko
42df5626d9 Added Color class to replace SDL_Color 2023-01-30 00:12:43 +02:00
Ivan Savenko
ee7a573cb8 Refactoring of SDL API usage:
- Rect no longer inherits from SDL_Rect
- renamed vcmi functions that used SDL naming format
- moved all functions in SDL_Extensions file into CSDL_Ext namespace
- SDL_Rect is now used only by SDL_Extensions, all other code uses Rect
2023-01-20 16:11:43 +02:00
Ivan Savenko
5da407e822 All spell texts are now passed through translator 2023-01-20 15:18:36 +02:00
Ivan Savenko
bdb8e0ee5c Introduced string identifiers for H3 texts, still WIP 2023-01-01 14:56:44 +02:00
Ivan Savenko
d29c9d6445 Fortify CLabel interface to prevent unchecked access 2022-12-19 22:04:50 +02:00
Ivan Savenko
c855823528 Renamed files in client/battle to match new names of classes 2022-12-09 13:38:46 +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
lainon
7fdad4e0f6 Code refactor following C++ standard and condition fixes 2022-11-15 03:20:55 +03:00
Andrey Filipenkov
0163190ac5 move hardcoded strings to JSON file 2022-09-18 17:43:37 +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
KasyanDiGris
fa5a14e2d8 Stabilize vcmi (#488)
* Shared statusbar
* Fixed server fails on client disconnected
2018-08-26 19:09:56 +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
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
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
6d9f99d4de Code style: and one more pass on lambda expressions parameter list 2017-07-19 02:11:17 +03:00
ArseniyShestakov
ea0ceb1805 Merge pull request #323 from vcmi/CStackTweaks
CStack tweaks
2017-07-15 00:42:08 +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
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
AlexVinS
6dd89efc9a tweaks 2017-07-03 21:43:05 +03:00
AlexVinS
a65befaa08 Moved town portal logic to mechanics class 2017-07-03 21:43:04 +03:00
AlexVinS
3d1a84875e Queries refactoring
* Moved SUMMON_BOAT special case to mechanics
* Partially moved Town portal logic to mechanics class
* Added generic query reply to CCallback
* Redesigned Queries so that base API do not depends on CGameHandler
* Got rid of CGameHandler::castSpellRequest
* Removed CGameHandler::castSpell
* Added new Query type for town portal dialog (not used yet)
2017-07-03 21:43:04 +03:00
AlexVinS
195e979a18 get rid of CBattleInfoCallback::battleCanCastThisSpell 2017-06-05 23:46:55 +03:00
AlexVinS
2cfb2e6ae0 get rid of CPlayerBattleCallback::battleCanCastThisSpell 2017-06-05 22:53:42 +03:00
AlexVinS
4d430f6ad8 get rid of CPlayerBattleCallback::battleCanCastSpell 2017-06-05 22:16:12 +03:00
AlexVinS
66cfc2fef9 CSpell::canBeCast tweaks 2017-06-05 21:30:25 +03:00
AlexVinS
f370cdf1c7 Possible fix for https://bugs.vcmi.eu/view.php?id=2678 2017-05-25 20:09:38 +03:00
FeniksFire
3de891b4b4 Moving/dividing classes from BattleState to separate files. 2017-03-17 16:48:44 +01:00
AlexVinS
312793efd9 try to plug a few coverity false positives 2016-11-27 23:41:17 +03:00
AlexVinS
28dd12089b CSpellWindow fixes. 2016-10-18 02:15:43 +03:00
AlexVinS
5346ecb6df tweak 2016-10-17 05:42:29 +03:00
AlexVinS
3bd8cde8e0 fix 2016-10-17 05:21:43 +03:00
AlexVinS
345dd913f6 use CLabel in SpellArea 2016-10-17 05:05:48 +03:00
AlexVinS
e3ee51a28f Use label object for mana 2016-10-17 04:05:33 +03:00
AlexVinS
bc2f0ba6f1 fixed spell school ordering http://bugs.vcmi.eu/view.php?id=91 2016-10-17 03:33:29 +03:00
AlexVinS
ba5b65ff93 get rid of CDefHandler in CSpellWindow 2016-10-16 15:27:35 +03:00
AlexVinS
2a6bab119b Use CAnimImage for SpellArea 2016-10-16 13:22:07 +03:00
AlexVinS
3a52a3c663 Allow CAnimImage to share animation object. 2016-10-16 12:58:18 +03:00
AlexVinS
a0300b0447 CSpellWindow widgets capturing 2016-10-16 12:01:18 +03:00
AlexVinS
e1f9b2c74a SpellArea tweak 2016-10-16 10:43:49 +03:00
AlexVinS
2eb61533fa use only CSpell in CSpellWindow 2016-10-16 10:32:12 +03:00
AlexVinS
63cbf960df cleaned up spell window creation 2016-10-16 09:27:22 +03:00
AlexVinS
415bd8247a Moved SpellbookInteractiveArea into CSpellWindow class 2016-10-16 09:17:23 +03:00
AlexVinS
c4b72342de CSpellWindow: improved constructor readability 2016-10-16 09:03:13 +03:00
AlexVinS
85863dbed6 Fix build 2016-10-02 17:25:55 +03:00
Piotr Wójcik
ea6545b1d3 Prevent flipping empty spellbook
When hero has no travel spells he can no longer flip spell book opened from right panel button
2016-10-01 21:39:40 +02:00
AlexVinS
7c91d378c8 Display specific message if cast blocked by CURSED_GROUND 2016-10-01 18:35:56 +03:00
AlexVinS
52ae5b4a86 Fixed http://bugs.vcmi.eu/view.php?id=482 2016-10-01 18:18:46 +03:00
Vadim Markovtsev
2c1dddde33 Fix memory problems with BonusList
Bonus * -> std::shared_ptr<Bonus>

This cures the following problems:

1) Memory corruption at exit. Some Bonus-es were deleted twice (mods?).
2) Memory leaks. Some Bonuses were not deleted.
3) Reduce the number of "Orphaned child" messages.

Valgrind reports 0 leaked memory now and no invalid reads/writes.
2016-09-29 15:08:00 +02:00
AlexVinS
921d2f6210 Fixed http://bugs.vcmi.eu/view.php?id=2522 2016-09-29 10:21:22 +03:00
AlexVinS
3873e5047e Attempt to fix 2293 2016-03-01 13:24:46 +03:00
Vadim Markovtsev
bdd87be10d Try to fix http://bugs.vcmi.eu/view.php?id=2362 2016-02-02 11:46:33 +03:00
AlexVinS
ed281a3cc6 SDL1 wipe, part 4. Codebase cleanup finished. Untested. 2015-06-21 01:59:32 +03:00
AlexVinS
a061e3c2f7 Fix use-after-free in spell window 2015-04-11 10:18:40 +03:00
AlexVinS
6c334174d9 Use and check movement points in town portal.
* fixes mantiss 0002031
2015-04-01 04:48:50 +03:00
AlexVinS
d564520f04 Allow town portal to ally town.
fixes mantiss 0002064
2015-04-01 04:04:02 +03:00
AlexVinS
685deddac1 Start spell-relatet files reorganisation
* moved existing files to separate directory
-> todo: split mechanics
2015-02-26 08:39:48 +03:00
AlexVinS
c7c235c0ca Rename afterCast to applyBattle
* afterXXX will be used in future event-driven mechanics
2015-02-26 08:39:47 +03:00