From 23e1b0b0d59ae4d96d971c68b844890093defe86 Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Sun, 15 Oct 2023 02:43:42 +0200 Subject: [PATCH 1/4] radial wheel for hero --- Mods/vcmi/Data/radialMenu/getArtifacts.png | Bin 0 -> 1055 bytes Mods/vcmi/Data/radialMenu/remove.png | Bin 0 -> 810 bytes Mods/vcmi/Data/radialMenu/swapArtifacts.png | Bin 0 -> 1096 bytes Mods/vcmi/Data/radialMenu/trade.png | Bin 0 -> 1159 bytes Mods/vcmi/config/vcmi/english.json | 7 ++++ client/windows/CCastleInterface.cpp | 39 +++++++++++++++++++- client/windows/CCastleInterface.h | 5 ++- 7 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 Mods/vcmi/Data/radialMenu/getArtifacts.png create mode 100644 Mods/vcmi/Data/radialMenu/remove.png create mode 100644 Mods/vcmi/Data/radialMenu/swapArtifacts.png create mode 100644 Mods/vcmi/Data/radialMenu/trade.png diff --git a/Mods/vcmi/Data/radialMenu/getArtifacts.png b/Mods/vcmi/Data/radialMenu/getArtifacts.png new file mode 100644 index 0000000000000000000000000000000000000000..072a95516fe5c011700ccecd9b1510e008c0e9f5 GIT binary patch literal 1055 zcmV+)1mOFLP)h0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$i(@LdOI@m$PAw$*0E-K;tBaGOi^GTzbXb_5kdq&0OK+<>vNKnhUfUYhmWs!ah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G z=e$oGWo200qd;&MXg6*9``EVICxHJMxYE1+S__!{B)!?y zVn;w^8@RacYRVpPxdRM6)n!9=BtK1|SOnhB=$rDu;4KhZb9?LTxDFAAdN% z7f%72#-O7+{rN>3#Mo z6GO6Xl=hq@RbxoXrrPS)Tk}>W2C>S57+_h&z}cs%M(DrAz)Yz#&>m7>!b~BQ2A~{D zDKS$Bg;1J-a?r~J6h$>#o6py(!=B6f)L~Ec`MR|4AaWwsa62(%|6R445w(0RkXAcfJUAAOO@1h$$2;az#7+y3on6N^kQ_DRM<8 z`?}ChO>MQzJUy8K?=3(T=w!g_6c8;@b`=iliH7H&rohW2l1wPip zhI`GFSPvT}F_lX!hYiKkSn*e|IQw{R=GdnYN_>3@Glfu`LSgg9Od%9P;W7b5Q53b4 ZJ^&H4x1ATBf!F{5002ovPDHLkV1f?z-(>&* literal 0 HcmV?d00001 diff --git a/Mods/vcmi/Data/radialMenu/remove.png b/Mods/vcmi/Data/radialMenu/remove.png new file mode 100644 index 0000000000000000000000000000000000000000..2a82a74e4c5fcc809bc614fbf112dcf94852b31a GIT binary patch literal 810 zcmV+_1J(SAP)h0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$i(@LdOI@m$PAw$*0E-K;tBaGOi^GTzbXb_5kdq&0OK+<>vNKnhUfUYhmWs!ah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G z=e$oGWo200qd;&MXg6*9``EVICxHJMxYE1+S__!{B)!?y zVn;w^8@RacYRVpPxdRM6)n!9=BtK1|SOnhB=$rDu;4KhZb9?LTAL*VWDJHk$ck$jnZ$* z-gNIky00k;WNXSO!N_-?>cMoYQ>q5jy`rraOqsJ!m0-%9l6wbJwx7}~nDU)Bbubz2 zPR}%)9ZXjL*R!8wTE{&p5Hquz0iO>GEn9NoP$=Fg^EnXGI+!Vth+t?(MutM;S`f(4 zR~%f134)p8+BDMiR2S?Krl%amxMF(hp`A0Pml*GAF}>6v;1SbHj*R{?z4UPLC(|R2 op{FtO4+{VQ00000007X&8yQg%U4OYPhyVZp07*qoM6N<$f&ztSHvj+t literal 0 HcmV?d00001 diff --git a/Mods/vcmi/Data/radialMenu/swapArtifacts.png b/Mods/vcmi/Data/radialMenu/swapArtifacts.png new file mode 100644 index 0000000000000000000000000000000000000000..303b45ae0daf464238ad8ec70368b38b99352ca2 GIT binary patch literal 1096 zcmV-O1h@N%P)h0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$i(@LdOI@m$PAw$*0E-K;tBaGOi^GTzbXb_5kdq&0OK+<>vNKnhUfUYhmWs!ah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G z=e$oGWo200qd;&MXg6*9``EVICxHJMxYE1+S__!{B)!?y zVn;w^8@RacYRVpPxdRM6)n!9=BtK1|SOnhB=$rDu;4KhZb9?LTKZf`5RZwWP2VEmRN`A%%-gL z7=)Q_Qq$O8;2CfocoYoY1@;3^e3@S{3dB^`)igH;+yWlBthhF~oPp;+ADD7ku^u@T zQ{AM7u>`mPECaLuB%KwDz%jZSp_uEA9ZIOu0?_qkeqw`5t^!|yS1}W5LN}@DaUS>p%!d~Fci*1`&V=^3 zX3&64b(5M^TLx|hBNv0QoxmO73-H*YC0pyJH9NtfF#H5O^ku#qI2+8)x~y0+dQUOc zbt9VD2fP7%nCb!tD=z;9EDg=Qa9MF_j1U^t9d)I2fDHH+gnxvG8sTm7a2S6C)+!8- zL!-K*hOz>j0+w7>d>*Ri4d7lloOW5U8ga)os+*4Zfa?P<|Kp+EF=)e$=_V1qAE_8y z6J0lEC^HpfYohDM48^zg-&X7!CPqekEd|uuGNJe~KMhO`Or2|Fi5Tg|S}AEuE5k%L zRw%=*aF;LhV-192q8lse^T4}-h0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$i(@LdOI@m$PAw$*0E-K;tBaGOi^GTzbXb_5kdq&0OK+<>vNKnhUfUYhmWs!ah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G z=e$oGWo200qd;&MXg6*9``EVICxHJMxYE1+S__!{B)!?y zVn;w^8@RacYRVpPxdRM6)n!9=BtK1|SOnhB=$rDu;4KhZb9?LTleK~#9!?b%ODR8bfP@aK5v-i}l|nX45}glSyGiijYFM50w^ zIYbfIB10&MzCepUKoAjuWe^2za#3_wwhCMb2Gvl928EiGa55qgn%j)m)55`SO_G=s z^XK`kXEEoQ`=0lG?*K$ZL_|bHL_|bHL`03lq?5aiR{iyOwx)H2(POllz~-I|fYbFD zN^H$xXmtRV96_vQADXPXt^%=!Fb>0#w_wM+A%6S#QgIO`C|2F63STCL=l5;+lVY?w z3QOLE9q%j)W2N})7+}Y$E)?tAwhb*Gqt$U(@;dDJu2sXRbFoMmDOmClhOrWg zNhf=-sdWsF+r~kobSsG7@z)50D+m|n8AoJJ5uQIRI_|}h&kmrFn`0=^{_OepMb~H> z^4Sw8s)XQ!1-*0NqBbgRtan01NC@weng+t7|5cdTF#e^j}^b z)QBx`+`W+P6DE^-W3)O_u{-4tzsL}P{nfV+%04*mo}XXT0L4$!2!jj4^T#S1N+vZ0 z$L*+{x-vlV(|d%$CE@vx8?Ag+c?1ODxH};ek4z>tW3)QOP@?tWxI56CcwjQAIiuAX zh7#qtE}9c}&Gf*$(ds-y`Q>un+5$^n2GGh-i~$O{S>&@PMb~H>fVo&hhq2s=E(*_o zvhFdzj>4EK%`8vx0sxjm zVDa-SguyxC`I8&ICD)Xt(BS**b1Z%x6uskVHWaP;O*+}hIfICZh=_=Yh=_=Yh=_>( Z?gtkn;C42~%WMDu002ovPDHLkV1fvH9n$~+ literal 0 HcmV?d00001 diff --git a/Mods/vcmi/config/vcmi/english.json b/Mods/vcmi/config/vcmi/english.json index f4c912f00..32d874339 100644 --- a/Mods/vcmi/config/vcmi/english.json +++ b/Mods/vcmi/config/vcmi/english.json @@ -41,6 +41,13 @@ "vcmi.radialWheel.splitUnitEqually" : "Split creatures equally", "vcmi.radialWheel.moveUnit" : "Move creatures to another army", "vcmi.radialWheel.splitUnit" : "Split creature to another slot", + + "vcmi.radialWheel.heroGetArmy" : "Get army from other hero", + "vcmi.radialWheel.heroSwapArmy" : "Swap army with other hero", + "vcmi.radialWheel.heroExchange" : "Open hero exchange", + "vcmi.radialWheel.heroGetArtifacts" : "Get artifacts from other hero", + "vcmi.radialWheel.heroSwapArtifacts" : "Swap artifacts with other hero", + "vcmi.radialWheel.heroDismiss" : "Dismiss hero", "vcmi.mainMenu.serverConnecting" : "Connecting...", "vcmi.mainMenu.serverAddressEnter" : "Enter address:", diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index 36b5a5207..1b19a1806 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -29,6 +29,8 @@ #include "../widgets/CGarrisonInt.h" #include "../widgets/Buttons.h" #include "../widgets/TextControls.h" +#include "../widgets/RadialMenu.h" +#include "../widgets/CExchangeController.h" #include "../render/Canvas.h" #include "../render/IImage.h" #include "../render/IRenderHandler.h" @@ -322,11 +324,46 @@ CHeroGSlot::CHeroGSlot(int x, int y, int updown, const CGHeroInstance * h, HeroS set(h); - addUsedEvents(LCLICK | SHOW_POPUP | HOVER); + addUsedEvents(LCLICK | SHOW_POPUP | GESTURE | HOVER); } CHeroGSlot::~CHeroGSlot() = default; +void CHeroGSlot::gesture(bool on, const Point & initialPosition, const Point & finalPosition) +{ + if(!on) + return; + + if(!hero) + return; + + if (!settings["input"]["radialWheelGarrisonSwipe"].Bool()) + return; + + std::shared_ptr other = upg ? owner->garrisonedHero : owner->visitingHero; + + bool twoHeroes = hero && other->hero; + + ObjectInstanceID heroId = hero->id; + ObjectInstanceID heroOtherId = twoHeroes ? other->hero->id : ObjectInstanceID::NONE; + + std::vector menuElements = { + { RadialMenuConfig::ITEM_NW, twoHeroes, "stackMerge", "vcmi.radialWheel.heroGetArmy", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArmy(false, std::nullopt);} }, + { RadialMenuConfig::ITEM_NE, twoHeroes, "stackSplitDialog", "vcmi.radialWheel.heroSwapArmy", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).swapArmy();} }, + { RadialMenuConfig::ITEM_EE, twoHeroes, "trade", "vcmi.radialWheel.heroExchange", [heroId, heroOtherId](){LOCPLINT->showHeroExchange(heroId, heroOtherId);} }, + { RadialMenuConfig::ITEM_SW, twoHeroes, "getArtifacts", "vcmi.radialWheel.heroGetArtifacts", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArtifacts(false, true, true);} }, + { RadialMenuConfig::ITEM_SE, twoHeroes, "swapArtifacts", "vcmi.radialWheel.heroSwapArtifacts", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).swapArtifacts(true, true);} }, + { RadialMenuConfig::ITEM_WW, true, "remove", "vcmi.radialWheel.heroDismiss", [this]() + { + CFunctionList ony = [=](){ }; + ony += [=](){ LOCPLINT->cb->dismissHero(hero); }; + LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[22], ony, nullptr); + } }, + }; + + GH.windows().createAndPushWindow(pos.center(), menuElements); +} + void CHeroGSlot::hover(bool on) { if(!on) diff --git a/client/windows/CCastleInterface.h b/client/windows/CCastleInterface.h index a5b7580ea..0601605f8 100644 --- a/client/windows/CCastleInterface.h +++ b/client/windows/CCastleInterface.h @@ -112,6 +112,7 @@ public: void set(const CGHeroInstance * newHero); void hover (bool on) override; + void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override; void clickPressed(const Point & cursorPosition) override; void showPopupWindow(const Point & cursorPosition) override; void deactivate() override; @@ -154,7 +155,7 @@ class CCastleBuildings : public CIntObject void enterCastleGate(); void enterFountain(const BuildingID & building, BuildingSubID::EBuildingSubID subID, BuildingID upgrades);//Rampart's fountains void enterMagesGuild(); - + void openMagesGuild(); void openTownHall(); @@ -228,7 +229,7 @@ class CCastleInterface : public CStatusbarWindow, public IGarrisonHolder std::shared_ptr split; std::shared_ptr fastTownHall; std::shared_ptr fastArmyPurchase; - + std::vector> creainfo;//small icons of creatures (bottom-left corner); public: From efcf6b71d77e7ccc73ff839c42d8a3244039ca9f Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Sun, 15 Oct 2023 12:58:07 +0200 Subject: [PATCH 2/4] formatting --- client/windows/CCastleInterface.cpp | 4 ++-- client/windows/CCastleInterface.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index 1b19a1806..b11349b33 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -359,9 +359,9 @@ void CHeroGSlot::gesture(bool on, const Point & initialPosition, const Point & f ony += [=](){ LOCPLINT->cb->dismissHero(hero); }; LOCPLINT->showYesNoDialog(CGI->generaltexth->allTexts[22], ony, nullptr); } }, - }; + }; - GH.windows().createAndPushWindow(pos.center(), menuElements); + GH.windows().createAndPushWindow(pos.center(), menuElements); } void CHeroGSlot::hover(bool on) diff --git a/client/windows/CCastleInterface.h b/client/windows/CCastleInterface.h index 0601605f8..4f1339249 100644 --- a/client/windows/CCastleInterface.h +++ b/client/windows/CCastleInterface.h @@ -155,7 +155,7 @@ class CCastleBuildings : public CIntObject void enterCastleGate(); void enterFountain(const BuildingID & building, BuildingSubID::EBuildingSubID subID, BuildingID upgrades);//Rampart's fountains void enterMagesGuild(); - + void openMagesGuild(); void openTownHall(); @@ -229,7 +229,7 @@ class CCastleInterface : public CStatusbarWindow, public IGarrisonHolder std::shared_ptr split; std::shared_ptr fastTownHall; std::shared_ptr fastArmyPurchase; - + std::vector> creainfo;//small icons of creatures (bottom-left corner); public: From 0401b4a071a593ac80a1582507a0106c0f55aeb3 Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:34:58 +0200 Subject: [PATCH 3/4] adjusted icons --- Mods/vcmi/Data/radialMenu/remove.png | Bin 810 -> 1375 bytes Mods/vcmi/Data/radialMenu/trade.png | Bin 1159 -> 1252 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Mods/vcmi/Data/radialMenu/remove.png b/Mods/vcmi/Data/radialMenu/remove.png index 2a82a74e4c5fcc809bc614fbf112dcf94852b31a..e9cb18d889c7399c6b8fa610aaaaf08d430e5417 100644 GIT binary patch delta 1356 zcmV-S1+)692Hy&hB!7fyLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~N-MJbgI?I0qO zp*po7D&nYBC_;r$E41oha_JW|X-HCB90k{cgCC1k2N!2u9b5%L@B_rv#YxdcO8j3^ zXc6PVaX;SOd)&PP{LLy;&7N^U)hr{EN(#CBs?hg}Ai{`X1b=afnfjb4rr|lh?&0I> zU4mzMpZjwRC4rtTK|H-_>74h8qpU0`#OK6ugDyz?$aUG}H_j!8{X8>j zWHa-`QDULg#c~(3vY`@B5yuo&qkMnPWrgz=XSG^q?R)YUh6>usGS_JiBZWmQL4*Jq zbyQG=g#@h{DSsw1w4e0w4>^93Tr#;TVB}ap4JstZ5B>+gyETiG6K+x{3G}|$_QxpD zw+plyw*7r<+pQBI@C;mO9e=F}%zTpG=xDJcAiND+Tz52i54hX`2A_1vkQ^yM(_btC z?`QN)c_4BN1lQc&+WRQhI1~2{t-MVz>G!R|FVLfeK@bE%5ClOG1VIo4 zK@bE%5Xuf^GPvj3Nnj8dQI@k2K|BSt0@c8*vK-IEcP9)Ak^mk6&w$UKYd1v@wiB2K zCV@+)zCB?uQHFr$`tJr{%yaFQB1G;5-T;+A5`P%?Tsu`ZqIjM@B31xW%A zfu{!u0#FMq3-lB*+&a9mk&11dQpXnlImh4j|JH8i9#GQ_aORa7|gxuUIZ` zx+F${(;1rA%2?%?kmgLiuFdTo9HLqR82Au+)$RYQxIClun2T1 z%h@fPjaKg=UBI$|@N=dFF}>!aEN2b434bg_7&Z;0ObKHAlpL5!Q$T%@p=N;F%5t{L z);b6XQwMwljujYU6*wE!*gdrJ3F;C-jK8J$&{B$0Hkn;YQ5uWJH4%sZ0kr00RK=})+JKJ+1b@l+ zF^h#*n};Tf_EaZ}>>;_R1=1#Zj0x+Y7vE$K(?eDRQzp#jy95j<%UOw?D7uGq;$K6A zF^Fb>e!Z9}T^i$rGpg2sjwmkNq88=6_BSd+9`5c1&oa6sUgKMq`LYSLE6Z7rQ%|V| zj)Xk^-`($Ur!40y(5I(NnB}f2Zhwt-7U;phhsnhv(4#EpXAaw;75|+Fi>NLH3J3Ove^F=>2HbvH!3H6X?QMwJWP zic%2M8|`KMo4cfbG!5J-)OFWJ)d&2``b^1Oj9L)W8|@Tu1^@bD0smfRt3`+mT*1E| z+5~ohHWPxB1kbexJlC#_FkXY_+RX@pAP9mW2!bF8f*=TjAP9o+AM+1pQVH0ch5+yY O0000B!7cxLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~PLN~Kgf*g?c0 zL)FDDD&knHP=pGhR%q412R|084ld5RI=Bjg;0K7Si<6>@l=#1- z&?3fz<9@um_qclp2(2p9%s>Lrbj!%3l435uDh6K>LIgkn<9{+U>vNKnhUfUYhmWs! zah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G=e$oGWo20eDdehvkz)ZhXpkL0_#gc4)+|m&aJd5vJ=JAHb|gPdp;!do z&*+=-z~C(qT625r?BnzS$WmA78{ps&7%Nfsy2rcwdw+ZT_e`h1A4Ljslsn7EM*si- z24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_0003yNklPsokzb6l4ONW5n2JYr;gAlSA0000000000KvlNaV;fb&v(5VbIh=+o zo?f)+Y<~?`z0Ogl6&kMmzOR~AXoQ8*vf!OHtG zEn9NoP$=Fg^EnXGI+!Vth+t?(MutM;S`f(4R~%f134)p8+BDMiR2S?Krl%amxMF(h zp`A0Pml*GAF}>6v;1SbHj*R{?z4UPLC(|R2p{FtO4+{VQ00000007X&8yQg%U4OYP RhztM#002ovPDHLkV1mX@XW#$; diff --git a/Mods/vcmi/Data/radialMenu/trade.png b/Mods/vcmi/Data/radialMenu/trade.png index b5a109f5b3981ca71145670d89a497acf12a1746..54df71506070548f6917a360585cd84dbfc4282e 100644 GIT binary patch delta 1232 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 Ef)%D8y#N3J From 464577be282f636d14fdb45e1a96fbb6dd17f5f2 Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:06:35 +0200 Subject: [PATCH 4/4] new icons --- Mods/vcmi/Data/radialMenu/dismissHero.png | Bin 0 -> 352 bytes Mods/vcmi/Data/radialMenu/getArtifacts.png | Bin 1055 -> 0 bytes Mods/vcmi/Data/radialMenu/moveArtifacts.png | Bin 0 -> 1827 bytes Mods/vcmi/Data/radialMenu/moveTroops.png | Bin 0 -> 518 bytes Mods/vcmi/Data/radialMenu/remove.png | Bin 1375 -> 0 bytes Mods/vcmi/Data/radialMenu/swapArtifacts.png | Bin 1096 -> 1823 bytes Mods/vcmi/Data/radialMenu/trade.png | Bin 1252 -> 0 bytes Mods/vcmi/Data/radialMenu/tradeHeroes.png | Bin 0 -> 378 bytes client/windows/CCastleInterface.cpp | 8 ++++---- 9 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 Mods/vcmi/Data/radialMenu/dismissHero.png delete mode 100644 Mods/vcmi/Data/radialMenu/getArtifacts.png create mode 100644 Mods/vcmi/Data/radialMenu/moveArtifacts.png create mode 100644 Mods/vcmi/Data/radialMenu/moveTroops.png delete mode 100644 Mods/vcmi/Data/radialMenu/remove.png delete mode 100644 Mods/vcmi/Data/radialMenu/trade.png create mode 100644 Mods/vcmi/Data/radialMenu/tradeHeroes.png diff --git a/Mods/vcmi/Data/radialMenu/dismissHero.png b/Mods/vcmi/Data/radialMenu/dismissHero.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb2b1115392e81094660ca70dbec53108fc6641 GIT binary patch literal 352 zcmV-m0iXVfP)6s5M z4Cm`49yAq;MVvXm8z`B;a;0Z|{yNOEaW29ZW;IJPhY(P)oIOFtm{%=y)d}p17LY_B z^|BCi-f5Xh0004lX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$i(@LdOI@m$PAw$*0E-K;tBaGOi^GTzbXb_5kdq&0OK+<>vNKnhUfUYhmWs!ah~OU?$0rx7EA{CMB)Ui8y4{f@yw=G z=e$oGWo200qd;&MXg6*9``EVICxHJMxYE1+S__!{B)!?y zVn;w^8@RacYRVpPxdRM6)n!9=BtK1|SOnhB=$rDu;4KhZb9?LTxDFAAdN% z7f%72#-O7+{rN>3#Mo z6GO6Xl=hq@RbxoXrrPS)Tk}>W2C>S57+_h&z}cs%M(DrAz)Yz#&>m7>!b~BQ2A~{D zDKS$Bg;1J-a?r~J6h$>#o6py(!=B6f)L~Ec`MR|4AaWwsa62(%|6R445w(0RkXAcfJUAAOO@1h$$2;az#7+y3on6N^kQ_DRM<8 z`?}ChO>MQzJUy8K?=3(T=w!g_6c8;@b`=iliH7H&rohW2l1wPip zhI`GFSPvT}F_lX!hYiKkSn*e|IQw{R=GdnYN_>3@Glfu`LSgg9Od%9P;W7b5Q53b4 ZJ^&H4x1ATBf!F{5002ovPDHLkV1f?z-(>&* diff --git a/Mods/vcmi/Data/radialMenu/moveArtifacts.png b/Mods/vcmi/Data/radialMenu/moveArtifacts.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2a9b2f4747499abe528bae65aa3aa3c3dad598 GIT binary patch literal 1827 zcmV+;2i*9HP)h000K+NklYNdu`jcZQIt^wz0NtTX9+cx3Bfk-&Ng1ySp+b5)t{&j1krv z-p;BfE2lZO`9HymfKPH#?p!$DMn|KIor|qfaBQ$nS1S`aryEUsl@6@(I^8o`ziG~B z+y3p^wKk!zN{Re;iiJ;dQVy^6?q+Q&|H0l;@lXE*Bg`FR`!@GLa9-~I;HoVP+>T5i zZvAa^U$e(khgvONFy5}q@SdiMt7kYVO&ny=PJBwl!^cZXWy;_VRE8HR6QF=8rKftF zs7M}wvQs^AVw3ON^>bWqA6e&vk`qbD*&qDr;A-#2d1GzwZe8g1Aa!TJF)CddF$ob9 zA1^7jnPY;3y)-^+sdfI8zAG?l&S;xVS6gM2oa~0$tZ_)&8G!2a5$sl(JP;h9s??z< zIvR_*>J)Fk61YK#M|kl}?yA$P)K1 zoyNtARk%{K2{)Sd;BxhP_WDxQT3je!j_VD(aQ{lm!>e^$rNtseM11_Dl%MId!%#;W z4wj0~xYv7@dk*n;Q~O0v(Nr)C&+e7u#e-_RdfbHP_p9*WS~_mE9ArS63+He_Ki+KK z?;|J^JopH|p!mQ~O5g2&Gx2us3QvQbOWdcp*eF3xraj_Abn)|+_BGUbAQxpnSvJnjquV@C(Fo<#@*Zi1E~NGt?@>|;m8l9 z1U>?}Wzq0SL`vrFKp8SbPdL`c_A{@gK+o&5CxUbyWRRHjc{-|~GG!o}^g*8L$U6|i zraY$t#m5s-mo@$%?v4_I1JUqFL`w4Z0QGVG&7WwfbpEw)g58CLP~Fc1lZ>!`l@}WG zXMjo%Yi2rO@kDzz;Y&|;r$7m~TDJ{km~ecfFB)YNd>s8zofG4)i>VoC+!!A3eZNc7z2d)YNG6PFDlDGjO}lZ zmZJGA7!5Bbd2}OBu!fnas?;G3^*NISbhqN;<0ZwzQKb`kfS2P3Smcp&q@L7ZrI@`h zm@7MwPXKuX__(NoOb`Xy$V#;6XbkIDa*nK*X|Pq-Wset-6!G!#lA^58v9r0M>`Pjz zs-3Kr;N_$OTE{_Uiu^-iD5Q&%41#(ZnR|jzlQD`wcp!&Bk?m#yY5M=H%^W?ssbFSX z;ph+_A1^5z=DM`&7NJ){6TB)ZT<@2=y)p~fJJx_rbdog01Zgt~r1u#6g-4>nEnyqy zxnfK|a}*zozeYQXk+5`#kB^s>C6gUmQF$(x>f8KzRRdS1v|UnfP6VAwql z6p}V6lC~ivd2#fzOPG&ljhB-uVuN&8fNBcL4J|TF49IHo1Jut1B!aE!RcS++7oY)F zLK~_O?ISim$uC>w82&;{4bbmpcz>tT{c^occi9qF%iIXXbQA=pzR z&)i6EJ;|ZRzLlP>L?A^3d=ipEQ@%~0hkC0no!WMxmv(epOZ{6zmO4d2uER2V9Yr@Q zx+&95if$d~CaDDf7ef9K8sER|+yMr_Fc3u1`=7d11j<6He(=Hq727X1$jtQbJ~NcG z7b3nHO0WOe`2Kq8cqktS<`$GyJ(Rh@ym}~3O01U)W{MR+aZ=0_x6iy$P;VgXUtGyQ z?7Ke$>X|}hT)?2s=i*>-VTP)D=ON@apTDe002ovPDHLkV1hiHc`5(^ literal 0 HcmV?d00001 diff --git a/Mods/vcmi/Data/radialMenu/moveTroops.png b/Mods/vcmi/Data/radialMenu/moveTroops.png new file mode 100644 index 0000000000000000000000000000000000000000..710657656c83486a2ad529b34fc1a905c0064803 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^u0ZV1!3-q3PW-3^QceLrAt1s3_p|?B^8u0fGymVq z{C_v&|J}6z_ki52|94aW---QyC+`29=>PYU{y)h6e=qC*C7b{ElK1xBZ?K0|R5cr;B4q1>@W4iQb1D1YFYREPJ*kYW1)G z|5ttG2%Aw-yum%F>wUIdzpef>ooR}nCMbO7WjM(<`S>Qz6D5nC)TBE3tnXOe{HGx{ zS@xU3jpAD_?Y4On|K4A5=l0we8;;l8ZvV-;iEm>2|Eb$fHJ5P|p44jAsy_30Qn;L9 z)}jQl>1&j19la%|uUYiGoAJ2n`YV^^;!Hkr9ami~Q~x^O%J>jagTq7<2d5I1>2H>K z*LKYPU%B2ZY~@SG&`X?s-f=s7BxFvg&UbC{s<^CIx%9zayUBJ5EJBX*6%7ezyu&UY zdG09j-GJ$&Hmgw1jEGIA#JgCOC#)%A@w>>nGiBz<&Av$Rzt_vrhI>TbTKGj+kHr{>N{)1r4OyS?Ch0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iTSY0A4(%W!lA$`aAS&XhRVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRU<7fAnfjb4rr|lh?&0I>U4mzMpZjwRC4rtTK|H-_ z>74h8qpU0`#OK6ugDyz?$aUG}H_j!8{X8>jWHa-`QDULg#c~(3vY`@B5yuo&qkMnP zWrgz=XSG^q?R)YUh6>usGS_JiBZWmQL4*JqbyQG=g#@h{DJC+spY-q#Iew8`GPx>X z#CInQ3X%XG0MCHWo@+Nn5VjMT2PT0_roKI4Fj0np=lbskV9ayvmLf#%1>OLa zKoS`DTsu`ZqIjM@B31xW%Afu{!u0#FMq7VXAQUsEJYYL z4Wvv7V*HdGm`YPXeUYJNfZNJ)w#(K!2nbULd;^XZ7-AJT8`ao7wDJk+5m2aHlNiE6}H>Oqk`aDsGK-7U;phhsnhv z(4#EpXAaw;75|+Fi>NLH3J z3Ove^F=>2HbvH!3H6X?QMwJWPic%2M8|`KMo4cfbG!5J-)OFWJ)d&2``b^1Oj9L)W z8|@Tu1^@bD0smfRtB4F-!M`8c1a^Qn6M~ck&$S0U*RG5(UW4b_%?N@Z2!bF8f*=Tj hAP9mW2!ik*^ABcH3D}&50Pp|+002ovPDHLkV1fqIVtxPs diff --git a/Mods/vcmi/Data/radialMenu/swapArtifacts.png b/Mods/vcmi/Data/radialMenu/swapArtifacts.png index 303b45ae0daf464238ad8ec70368b38b99352ca2..6e513e94e4d1f70005af332fc92145e56d676f3e 100644 GIT binary patch delta 1809 zcmV+s2k!XD2%ip+BYy_wNklpT*pR0Q*rS^3x z6&MeY>~3N#U+5A5eB?N82nDVSbqO3rGvjE4F0yGQS{*-iYH;9M_YaH>-Zqv zg#lTF0oh#e!JMvRB(pF8PIgpy2t_CdZ`KqgSr!C$thR02wtwxhZQHhOTW#CM*tTuO z=DTNp>!Z%r-H&qB%jif%|AV> zf@6bqx>}jYIo)X5t8`$M*Xf?o`b~32+xBnQuC)n$Rf_+g$`hX$q#R!B-Obum{)4@x z;-CHrMwmOs_J3{ef#AH{{lQgR7PuXmKHU1-=)Pu;rw+ARx?sFrm*G846<5!2Qkpo( zq8&df_~R2vN@dF64pfF0DHEW8DW#`+oTx}1fU;9PablD2+x2r?ZXa3agOU?T$k`wK z>ELSb#(86H?`~b__8@g)yP!t`FMP2rU-z`P+<~HO`ZN-Zej`&2AQk^z@ zje)i_tW4yeHxYTZ_8UZiluCz_PPW-EQt_Gade3stA^vV^zvwBN3TENiy>h&G zP>olQoACU86&_qm$E}uw3`ld~93kk(o6Y-uB+7&ce1u=3_#m2;zT5w1;_coQo(4OY zxKDAhQG%RId&Gz6;^FlyJi3uhK^yVr*#$hgQ-4fZ*~cjv9EB{LXelXFO!LS}C zuzxU?14$qC=T4T98;!e#0R~b599rXzg2Ry?NC|v+xn)V=6N{A0-GMS>h@J?nkL_n( zOM#x(XHNv_Jjft1>GO0{L1oH7HtB;r)sc4~giU!t1&WU+qAqLvLEIh1g%nBQ6N{AO z?E&iJ`kOz|Q0e?@;RL%238A{52PPR||9>hkH0I9$l^)j2bi(3^_H4qJp6pJ65^%L{ z8^|!>_(oqee7x@Q6S!Q-G^T4j99%#s$O7DdrYi|$*o${J|!#pxj?IleLM|`45A@?U0;D4_E zlFG7I-+05Hv|k`9KpVYc3=rn4iL%qZs4N39w!b-AisrLmG`yJP(TzO88fK!ZQin9u z=S-5gyXA;aG$|gADxJs!yc|EkB9ELS^`r(X#q52-LfL_Q0>~S{$3+!nf+)~NR-#2m zV_3hEb7Z|tgRQzQd%VO+;fPN(DSyfe9Xp#F%D$wfs@lm~30_VrpmiKnrpP}OhC;eH z$snkwk+~-bH5sD_ga>j66xnVTkf#67+RV|Dn+j&Ol{6_F@rfp7!(5kk-6Hf#Xo6QI zh3oxtw^wEXd&e5EiB6J+m>_K?f%G0@zwk&jge7d_JXehAXO7}y@z-caF@KUYA)N7v zCS}QFhgMXc%cVNELxi6e{9M%_lqqeO)SDAQXBH4LWNW4XTFH?Zrc0$8L_>_SbT|qG z6ts=rtT@}xlm{uC@QEhH)?7hKQNF{jHf>scpozV4SWna2&Sar|De$SyeyB+w$ubci zqQe4{46@$cvBaGXI2vB)7JsRa^0R$^RHqLQk~AS4@rfpdq)m#XZ3szT9KGxk=A&8T z<)n((ARQKW_hAQ#);fGI*Gg>l6L!Xnl<8W5$5Y8fimW=q-R@#%Sqehr4tTq$JM&TYvuEMC0L)PppG$ z1NBV1Bjt&-GdGf3Pjcw7Z>47|4y16v zCnhO0<=X^$sJH6Uscjc}X-BuU)W0=ksZ$i>IxM5tQFODSn=;*`=+=R5;!5y;A>^Nb z+qnY_fMF;G!}mY+rhgy@sA%ww2e8Jkd$1(;`bPiz1j>dMCcZk9y!boQgpxC+p+sm) zaO123ln7jz0VrCmrWYXTH=j{i?!iX%OK_hGc015yANkvXXu0mjfKp%y4 delta 1076 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 : ObjectInstanceID::NONE; std::vector menuElements = { - { RadialMenuConfig::ITEM_NW, twoHeroes, "stackMerge", "vcmi.radialWheel.heroGetArmy", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArmy(false, std::nullopt);} }, + { RadialMenuConfig::ITEM_NW, twoHeroes, "moveTroops", "vcmi.radialWheel.heroGetArmy", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArmy(false, std::nullopt);} }, { RadialMenuConfig::ITEM_NE, twoHeroes, "stackSplitDialog", "vcmi.radialWheel.heroSwapArmy", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).swapArmy();} }, - { RadialMenuConfig::ITEM_EE, twoHeroes, "trade", "vcmi.radialWheel.heroExchange", [heroId, heroOtherId](){LOCPLINT->showHeroExchange(heroId, heroOtherId);} }, - { RadialMenuConfig::ITEM_SW, twoHeroes, "getArtifacts", "vcmi.radialWheel.heroGetArtifacts", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArtifacts(false, true, true);} }, + { RadialMenuConfig::ITEM_EE, twoHeroes, "tradeHeroes", "vcmi.radialWheel.heroExchange", [heroId, heroOtherId](){LOCPLINT->showHeroExchange(heroId, heroOtherId);} }, + { RadialMenuConfig::ITEM_SW, twoHeroes, "moveArtifacts", "vcmi.radialWheel.heroGetArtifacts", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).moveArtifacts(false, true, true);} }, { RadialMenuConfig::ITEM_SE, twoHeroes, "swapArtifacts", "vcmi.radialWheel.heroSwapArtifacts", [heroId, heroOtherId](){CExchangeController(heroId, heroOtherId).swapArtifacts(true, true);} }, - { RadialMenuConfig::ITEM_WW, true, "remove", "vcmi.radialWheel.heroDismiss", [this]() + { RadialMenuConfig::ITEM_WW, true, "dismissHero", "vcmi.radialWheel.heroDismiss", [this]() { CFunctionList ony = [=](){ }; ony += [=](){ LOCPLINT->cb->dismissHero(hero); };