mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Merged from revision: 7002
Editor Enhancement (by Buggler) - Hold shift to select previous merc instead of next merc when using hotkeys or associated buttons git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7003 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+59
-14
@@ -63,6 +63,7 @@
|
||||
#include "Timer Control.h"
|
||||
#include "message.h"
|
||||
#include "InterfaceItemImages.h"
|
||||
#include "english.h"
|
||||
#endif
|
||||
//forward declarations of common classes to eliminate includes
|
||||
class OBJECTTYPE;
|
||||
@@ -1540,6 +1541,7 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
{
|
||||
SOLDIERINITNODE *prev;
|
||||
INT8 bTeam;
|
||||
BOOLEAN fSelectPrevious;
|
||||
|
||||
//If we are trying to select a merc that is already selected, ignore.
|
||||
if( sID >= 0 && sID == gsSelectedMercGridNo )
|
||||
@@ -1557,6 +1559,9 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
|
||||
bTeam = -1;
|
||||
|
||||
// hotkey to select previous instead of next merc
|
||||
fSelectPrevious = gfKeyState[ SHIFT ];
|
||||
|
||||
//determine selection method
|
||||
switch( sID )
|
||||
{
|
||||
@@ -1568,13 +1573,27 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
}
|
||||
else
|
||||
{ //validate this merc in the list.
|
||||
if( gpSelected->next )
|
||||
{ //select the next merc in the list
|
||||
gpSelected = gpSelected->next;
|
||||
if( fSelectPrevious )
|
||||
{
|
||||
if( gpSelected->prev )
|
||||
{ //select the prev merc in the list
|
||||
gpSelected = gpSelected->prev;
|
||||
}
|
||||
else
|
||||
{ //we are at the beginning of the list, so select the last merc in the list.
|
||||
gpSelected = gSoldierInitTail;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //we are at the end of the list, so select the first merc in the list.
|
||||
gpSelected = gSoldierInitHead;
|
||||
{
|
||||
if( gpSelected->next )
|
||||
{ //select the next merc in the list
|
||||
gpSelected = gpSelected->next;
|
||||
}
|
||||
else
|
||||
{ //we are at the end of the list, so select the first merc in the list.
|
||||
gpSelected = gSoldierInitHead;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( !gpSelected ) //list is empty
|
||||
@@ -1587,14 +1606,20 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
{
|
||||
if( !gpSelected )
|
||||
{
|
||||
gpSelected = gSoldierInitHead;
|
||||
if( fSelectPrevious )
|
||||
gpSelected = gSoldierInitTail;
|
||||
else
|
||||
gpSelected = gSoldierInitHead;
|
||||
continue;
|
||||
}
|
||||
if( gpSelected->pSoldier && gpSelected->pSoldier->bVisible == 1 )
|
||||
{ //we have found a visible soldier, so select him.
|
||||
break;
|
||||
}
|
||||
gpSelected = gpSelected->next;
|
||||
if( fSelectPrevious )
|
||||
gpSelected = gpSelected->prev;
|
||||
else
|
||||
gpSelected = gpSelected->next;
|
||||
}
|
||||
//we have a valid merc now.
|
||||
break;
|
||||
@@ -1639,13 +1664,27 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
}
|
||||
else
|
||||
{ //validate this merc in the list.
|
||||
if( gpSelected->next )
|
||||
{ //select the next merc in the list
|
||||
gpSelected = gpSelected->next;
|
||||
if( fSelectPrevious )
|
||||
{
|
||||
if( gpSelected->prev )
|
||||
{ //select the prev merc in the list
|
||||
gpSelected = gpSelected->prev;
|
||||
}
|
||||
else
|
||||
{ //we are at the beginning of the list, so select the last merc in the list.
|
||||
gpSelected = gSoldierInitTail;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ //we are at the end of the list, so select the first merc in the list.
|
||||
gpSelected = gSoldierInitHead;
|
||||
{
|
||||
if( gpSelected->next )
|
||||
{ //select the next merc in the list
|
||||
gpSelected = gpSelected->next;
|
||||
}
|
||||
else
|
||||
{ //we are at the end of the list, so select the first merc in the list.
|
||||
gpSelected = gSoldierInitHead;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( !gpSelected ) //list is empty
|
||||
@@ -1658,14 +1697,20 @@ void IndicateSelectedMerc( INT16 sID )
|
||||
{
|
||||
if( !gpSelected )
|
||||
{
|
||||
gpSelected = gSoldierInitHead;
|
||||
if( fSelectPrevious )
|
||||
gpSelected = gSoldierInitTail;
|
||||
else
|
||||
gpSelected = gSoldierInitHead;
|
||||
continue;
|
||||
}
|
||||
if( gpSelected->pSoldier && gpSelected->pSoldier->bVisible == 1 && gpSelected->pSoldier->bTeam == bTeam )
|
||||
{ //we have found a visible soldier on the desired team, so select him.
|
||||
break;
|
||||
}
|
||||
gpSelected = gpSelected->next;
|
||||
if( fSelectPrevious )
|
||||
gpSelected = gpSelected->prev;
|
||||
else
|
||||
gpSelected = gpSelected->next;
|
||||
}
|
||||
if( !gpSelected )
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user