1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Unblock basic adventure map actions (scrolling / right-click) in multiplayer

This commit is contained in:
Dydzio 2023-07-26 21:20:11 +02:00
parent 7b17c5ae18
commit ff1a635e9e
3 changed files with 17 additions and 2 deletions

View File

@ -192,7 +192,7 @@ void AdventureMapInterface::handleMapScrollingUpdate(uint32_t timePassed)
Point scrollDelta = scrollDirection * scrollDistance; Point scrollDelta = scrollDirection * scrollDistance;
bool cursorInScrollArea = scrollDelta != Point(0,0); bool cursorInScrollArea = scrollDelta != Point(0,0);
bool scrollingActive = cursorInScrollArea && isActive() && shortcuts->optionSidePanelActive() && !scrollingWasBlocked; bool scrollingActive = cursorInScrollArea && shortcuts->optionMapScrollingActive() && !scrollingWasBlocked;
bool scrollingBlocked = GH.isKeyboardCtrlDown() || !settings["adventure"]["borderScroll"].Bool(); bool scrollingBlocked = GH.isKeyboardCtrlDown() || !settings["adventure"]["borderScroll"].Bool();
if (!scrollingWasActive && scrollingBlocked) if (!scrollingWasActive && scrollingBlocked)

View File

@ -36,6 +36,14 @@
#include "../../lib/mapping/CMap.h" #include "../../lib/mapping/CMap.h"
#include "../../lib/pathfinder/CGPathNode.h" #include "../../lib/pathfinder/CGPathNode.h"
bool isCurrentPlayerHuman()
{
PlayerColor currentPlayer = LOCPLINT->cb->getCurrentPlayer();
bool isHuman = LOCPLINT->cb->getStartInfo()->playerInfos.count(currentPlayer)
&& LOCPLINT->cb->getStartInfo()->playerInfos.at(currentPlayer).isControlledByHuman();
return isHuman;
}
AdventureMapShortcuts::AdventureMapShortcuts(AdventureMapInterface & owner) AdventureMapShortcuts::AdventureMapShortcuts(AdventureMapInterface & owner)
: owner(owner) : owner(owner)
, state(EAdventureState::NOT_INITIALIZED) , state(EAdventureState::NOT_INITIALIZED)
@ -461,7 +469,13 @@ bool AdventureMapShortcuts::optionSidePanelActive()
return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW; return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW;
} }
bool AdventureMapShortcuts::optionMapScrollingActive()
{
return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || (state == EAdventureState::ENEMY_TURN && isCurrentPlayerHuman());
}
bool AdventureMapShortcuts::optionMapViewActive() bool AdventureMapShortcuts::optionMapViewActive()
{ {
return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || state == EAdventureState::CASTING_SPELL; return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || state == EAdventureState::CASTING_SPELL
|| (state == EAdventureState::ENEMY_TURN && isCurrentPlayerHuman());
} }

View File

@ -81,6 +81,7 @@ public:
bool optionInMapView(); bool optionInMapView();
bool optionInWorldView(); bool optionInWorldView();
bool optionSidePanelActive(); bool optionSidePanelActive();
bool optionMapScrollingActive();
bool optionMapViewActive(); bool optionMapViewActive();
void setState(EAdventureState newState); void setState(EAdventureState newState);