浏览代码

alt mode to select instead of changing path

Laserlicht 2 年之前
父节点
当前提交
8d160101ed
共有 1 个文件被更改,包括 13 次插入3 次删除
  1. 13 3
      client/adventureMap/AdventureMapInterface.cpp

+ 13 - 3
client/adventureMap/AdventureMapInterface.cpp

@@ -537,8 +537,13 @@ void AdventureMapInterface::onTileLeftClicked(const int3 &mapPos)
 			}
 			else //remove old path and find a new one if we clicked on accessible tile
 			{
-				LOCPLINT->localState->setPath(currentHero, mapPos);
-				onHeroChanged(currentHero);
+				if(canSelect && GH.isKeyboardCtrlDown())
+					LOCPLINT->localState->setSelection(static_cast<const CArmedInstance*>(topBlocking));
+				else
+				{
+					LOCPLINT->localState->setPath(currentHero, mapPos);
+					onHeroChanged(currentHero);
+				}
 			}
 		}
 	} //end of hero is selected "case"
@@ -663,7 +668,12 @@ void AdventureMapInterface::onTileHovered(const int3 &mapPos)
 				if(LOCPLINT->localState->getCurrentArmy()  == objAtTile)
 					CCS->curh->set(Cursor::Map::HERO);
 				else
-					CCS->curh->set(cursorExchange[turns]);
+				{
+					if(GH.isKeyboardCtrlDown())
+						CCS->curh->set(Cursor::Map::HERO);
+					else
+						CCS->curh->set(cursorExchange[turns]);
+				}
 			}
 			else if(pathNode->layer == EPathfindingLayer::LAND)
 				CCS->curh->set(cursorVisit[turns]);