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

159 Commits

Author SHA1 Message Date
Ivan Savenko
dfa2e2a349 Merge beta into develop 2023-04-11 19:37:35 +03:00
Ivan Savenko
07230f3b47 Attempt to fix stack splitting on macos 2023-04-10 14:34:17 +03:00
krs
3194999809 Add SHIFT + hover shortcut to show movement highlight while pressed. 2023-04-08 20:42:37 +03:00
Ivan Savenko
a8fe8c0f3b Converted timer event into tick event that is called every frame 2023-03-22 23:10:50 +02:00
Konstantin
5366f9190e vcmi: reduce boost::lexical_cast usage 2023-03-09 16:36:46 +03:00
Ivan Savenko
2e69a4769d Implemented framerate limit option (not available in UI) 2023-03-05 21:06:52 +02:00
Ivan Savenko
105d988624 Remove debug code 2023-03-05 19:55:38 +02:00
Ivan Savenko
5fb5513572 Attempt to trace crash caused by iterator invalidation 2023-03-05 19:55:38 +02:00
Ivan Savenko
c976176453 Added additional buttons for movement speeds 2023-03-05 19:53:26 +02:00
Ivan Savenko
b57a07b10f Restored ambient sounds functionality 2023-03-05 18:02:59 +02:00
Ivan Savenko
34dcb4127a Removed text utilities from SDL_Extensions 2023-02-03 18:55:25 +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
aab082fd2e Remove remaining access to SDL_Events 2023-02-03 11:39:40 +02:00
Ivan Savenko
594b7614cf Fix CI build 2023-02-03 11:39:40 +02:00
Ivan Savenko
cfcaf5cbb6 renamed keyDown -> keyPressed 2023-02-03 11:39:40 +02:00
Ivan Savenko
b1821d4442 Removed some SDL access from non-SDL code 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
860fe43131 Merged two mouse button enums 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
214fc19e74 CIntObject now receives mouse position as point instead of SDL event 2023-02-03 11:39:39 +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
42df5626d9 Added Color class to replace SDL_Color 2023-01-30 00:12:43 +02:00
Konstantin
080d4b13dd vcmi: suppress warning on IOS
Let CI passes on develop.
2023-01-29 21:30:37 +03:00
Ivan Savenko
57ee9a9bf3 Merge vcmi/beta into vcmi/develop 2023-01-29 18:21:55 +02:00
Ivan Savenko
50a0fc4fb2 Removed pointer to current SDL_Event from GuiHandler 2023-01-27 23:17:40 +02:00
Ivan Savenko
4d1c338503
Merge pull request #1498 from rilian-la-te/conan-v2
Conan as MXE replacement
2023-01-27 23:14:37 +02:00
Konstantin
a7bd7232ce CGuiHandler: fix false positive dangling pointer
Making this an auto variable fixes compilation with Werror.
2023-01-25 17:14:41 +03:00
Andrey Filipenkov
08b04a3527 handle double-click in Town Portal dialog 2023-01-23 15:43:55 +03:00
Ivan Savenko
fc0f5a9fb3 Reduced SDL includes 2023-01-20 16:11: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
Andrii Danylchenko
9a765e5f67 Remove not supported method, allow relative mode for iOS 2023-01-19 08:26:35 +02:00
Andrii Danylchenko
6c843bce0b SDL relative pointer for android 2023-01-18 10:38:55 +02:00
Andrii Danylchenko
c24b89fe06 2 finger rclick block adwmap scrolling and disable for iOS 2023-01-17 16:22:44 +02:00
Andrii Danylchenko
2b1511df99 SDL fix 2 finger touch when you remove fingers instantly 2023-01-16 13:39:45 +02:00
Andrii Danylchenko
7ccfcf51e9 Handle 2 fingers gesture as rclick via SDL 2023-01-16 09:46:52 +02:00
Ivan Savenko
0e8ee929df Renamed CCursorHandler -> CursorHandler 2023-01-15 21:18:34 +02:00
Ivan Savenko
d8c4209ded Movement animation is now more smooth at high animation speeds 2023-01-04 17:21:40 +02:00
Ivan Savenko
f8dec3861b Fixed animation skipping with no sound mod and enemy having first turn 2022-12-30 11:56:26 +02:00
Ivan Savenko
16c4851d3b Animated cursor for spell selection, removed hardcoded cursor ID's 2022-12-18 22:32:07 +02:00
Ivan Savenko
c79634b6a7 Moved all animation ordering logic to callers
Previously, CBattleAnimation & inheritors were controlling animation
ordering - e.g. which animations should play after which.
Now, this is controlled by caller, e.g. BattleInterface & its
controllers.
H3 animations are fairly linear and can be split in stages which are
already somewhat implemented via waitForAnims
2022-12-13 21:31:49 +02:00
Ivan Savenko
c855823528 Renamed files in client/battle to match new names of classes 2022-12-09 13:38:46 +02:00
Andrii Danylchenko
2521e7bac9 Fix flickering in fullscreen 2022-06-13 16:11:53 +03:00
Andrii Danylchenko
1128abc593 Fix hero movement animation 2022-06-07 15:00:39 +03:00
nordsoft
d92356f085 Fixed game crash: divide by zero due to threads racing 2022-05-28 14:34:36 +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
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
Arseniy Lartsev
fca9bcdd7f
Fixed possible freezes while dragging visible area on minimap (#638) 2020-05-03 01:26:30 +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
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
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
69dbf339fc CGuiHandler: fix invalid read on event handling 2018-01-18 06:34:57 +03: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
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
9423555015 Declare ownership of CCursorHandler::dndObject
# Conflicts:
#	AI/FuzzyLite
#	client/gui/CGuiHandler.cpp
2017-09-05 15:25:31 +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
64d9dadd64 Logging cleanup. 2017-08-11 15:47:50 +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
Arseniy Shestakov
dbcd79c48a Code cleanup: remove double and unneded semicolons 2017-07-12 22:01:10 +03:00
Dydzio
182210421d Fix #2 for bug #2476 2017-07-11 14:04:43 +02:00
Fay
02fa478bfb Refactor: unified logic for notyfing CIntObjs about left/right mouse click events;
Added support for middle-click;
2017-06-07 20:16:18 +02:00
Arseniy Shestakov
3f7cb9f893 Client: add some shortcuts for spectator mode
Following mode only work when client is started in spectator mode:
F5 - Pause / resume game by locking of pim
F6 - Toggle spectate-ignore-hero
F7 - Toggle spectate-skip-battle
F8 - Toggle spectate-skip-battle-result
F9 - Skip current battle
2017-06-06 07:30:16 +03:00
Arseniy Shestakov
18161d3688 Client: implement spectator mode via command-line options
If running with --spectate/-s CPlayerInterface will appear even without human players.
Following command-line options also available:
 --spectate-ignore-hero
 --spectate-hero-speed=N
 --spectate-battle-speed=N
 --spectate-skip-battle
 --spectate-skip-battle-result
Boolean options can also be changed in runtime via client console:
 set spectate-ignore-hero on / off
Spectator mode also:
 - Work with --onlyAI option when starting game or loading saves.
 - Allow to use any cheat codes.
 - Give recon on towns and heroes.
2017-06-06 07:30:16 +03:00
dydzio
944edaf0bb Fix bug #2476 2017-03-27 23:47:26 +02:00
AlexVinS
abe4beebc6 Fixed CID 1197516 2016-11-27 19:13:40 +03:00
AlexVinS
c4ab962cc0 Fixed a few CWE-457 2016-11-27 17:48:18 +03:00
Vadim Markovtsev
4bcc43d3d0 Fix Mantis #2234
CPlayerInterface instances were removed from CClient::playerint with
clear() and finish() was not called on each. Added multiple insurance.
2016-10-22 16:22:00 +02:00
Sandy Carter
6a3c2d3071 gui: Fix in parameter for scroll events
Refetch mouse position before checking if mouse is in widget Rect
Give acurate position of the mouse when scrolling
2015-08-22 12:40:14 -04:00
AlexVinS
371e4b8714 Fix mantiss 2235, 2237 2015-08-22 16:47:40 +03:00
AlexVinS
5f7a90237c More smooth fps counter 2015-06-23 01:08:25 +03:00
AlexVinS
32c15a8266 Extract fps counter drawing 2015-06-22 23:57:34 +03:00
AlexVinS
cc669b0ae7 Move gui locking to GUIHandler 2015-06-22 21:53:47 +03:00
AlexVinS
ed281a3cc6 SDL1 wipe, part 4. Codebase cleanup finished. Untested. 2015-06-21 01:59:32 +03:00
AlexVinS
8c236e30bb SDL1 wipe, part 3. Untested. 2015-06-21 01:59:32 +03:00
AlexVinS
b6a2323e01 SDL1 wipe, part 2. Untested. 2015-06-21 01:59:31 +03:00
AlexVinS
dca1e28bc1 SDL1 wipe, part 1. Untested. 2015-06-21 01:59:30 +03:00
AlexVinS
c46999bcb8 Conurrency related tweaks. Crashes in renderFrame should be fixed, but synchronization is still not perfect 2015-02-15 04:53:01 +03:00
Ivan Savenko
731aedf3a1 Split CIntObjectClasses into multiple smaller files. This should be the last change in files 2014-07-15 10:14:49 +03:00
Ivan Savenko
647b9c683f Reorganized client source tree:
- client/widgets for reusable GUI elements
- client/windows for independent windows
- client/gui for base GUI classes which should remain internal
2014-07-13 20:53:37 +03:00
AlexVinS
9b8ad51cd3 Run all rendering with pim lock if possible 2014-07-03 22:05:59 +04:00
AlexVinS
8a488aeb86 Cleanup 2014-07-03 19:57:21 +04:00
AlexVinS
ecc7b8e05a Draw cursor on each frame. Fix TTF rendering under cursor. 2014-07-03 18:05:07 +04:00
AlexVinS
c948891fc6 Fix threaded handlers initialization, cleanup 2014-07-03 12:26:15 +04:00
AlexVinS
ac7703ffb0 Fix hero movement rendering 2014-06-21 12:13:19 +04:00
AlexVinS
5fa5ba622f Start preparation for moveHero threaded implementation 2014-06-18 14:31:11 +04:00
AlexVinS
c2dd696e96 simplify CGuiHandler::handleEvents()
Threre is no need to allow (and I doubt is was in fact possible with old code) new events to arrive during processing events. Let them to be processed in next frame.
2014-06-18 08:30:23 +04:00
AlexVinS
5fdc63ab5b tiny fixes 2014-06-16 14:32:37 +04:00
AlexVinS
41a0319985 remove separate GUI thread
+ this fixes OGL
- has some issues(f.e. hero movement)
2014-06-13 07:55:49 +04:00
Ivan Savenko
8eb661461c - vcmi compiles with SDL2 on Linux, video player is disabled for now 2014-06-13 07:55:45 +04:00
AlexVinS
d289c6a34a Prefere opengl rendering
- broken ...
2014-06-13 07:55:44 +04:00
AlexVinS
6474e37b76 try to fix hotkeys 2014-06-13 07:55:43 +04:00
AlexVinS
ac2896da42 Implemented SDL2 unicode input. Hotkeys are sill broken. 2014-06-13 07:55:42 +04:00
AlexVinS
0ef16feca9 Refactoring towards backward compatibility (WiP) 2014-06-13 07:55:41 +04:00
AlexVinS
cd81e85a61 fix loading to pregame. Looks awful. More work to do.
* video temprorary disabled
* multithread loading seems to be broken - disabled
2014-06-13 07:55:39 +04:00
AlexVinS
62d42465de fix compilation
* may not even run
* text input disabled
2014-06-13 07:55:38 +04:00