I couldn't figure out how to implement that properly, but it made me realise it could be something in my TangoHandler.zh file.
And I've made it work. By looking at the ZC control scheme I realised that if InputA and InputB can be disabled, then surely InputMap is a thing, right? Then I realised that if handleMessageSlot was what disables the start button during a tango message, then
Link->InputMap = false;
Link->PressMap= false;
should surely go in there - and it worked!
I've included the code for reference if anyone else ever needs it:
void handleMessageSlot(int slot, bool menu4way, int name)//start handleMessageSlot
{
int delay = 0;
int lastid = -1;
int nameWidth;
int nameSegs;
if (name != 0) {
nameWidth = Text->StringWidth(name,NAMEFONT);
nameSegs = calcNameSegs(nameWidth);
}
while(Tango_SlotIsActive(slot))
{
__Tango_SetCurrentSlot(slot);
bool waitingForA = (__Tango_GetCurrSlotData(__TSDIDX_STATE) == __TANGO_STATE_PRESS_A);
bool menuActive = Tango_MenuIsActive();
int maxScroll = Tango_GetSlotMaxScrollPos(slot);
int scroll = Tango_GetSlotScrollPos(slot);
if(Tango_SlotIsFinished(slot)||menuActive||waitingForA)
{
//Scrolling
float scrollSpeed = 1.5;
if(Link->InputA)scrollSpeed*=2;
if(Link->InputUp)
Tango_ScrollSlot(slot, -scrollSpeed);
else if(Link->InputDown)
Tango_ScrollSlot(slot, scrollSpeed);
//Scroll arrows
if(scroll<maxScroll)
{
Screen->FastCombo(7,DN_COMBO_X,DN_COMBO_Y,COMBO_DOWNARROW,0,OP_OPAQUE);
delay = __TANGO_AUTO_ADVANCE_TIME;
if(Link->PressB)
{
Link->PressB=false;
Link->InputB=false;
Tango_ScrollSlot(slot,maxScroll);
}
Link->InputA = false;
Link->PressA = false;
}
if(!menuActive&&(scroll==maxScroll))
{
Screen->FastCombo(7,A_COMBO_X,A_COMBO_Y,COMBO_PRESSA,0,OP_OPAQUE);//Press A indicatior
}
if(scroll>0)
{
Screen->FastCombo(7,UP_COMBO_X,UP_COMBO_Y,COMBO_UPARROW,0,OP_OPAQUE);
}
//Fix menu cursor when scrolling
if(menuActive&&scroll!=maxScroll)
{
Tango_SetMenuCursor(0,0);
NoDirs();
}
else if(menuActive)
{
Tango_SetMenuCursor(COMBO_MENUCURSOR,0);
if(menuActive&&!menu4way)
{
if(Link->PressRight)
{
ChoiceShift(1);
}
else if(Link->PressLeft)
{
ChoiceShift(-1);
}
NoDirs();
}
}
if(scroll!=maxScroll&&!waitingForA)NoAction();
if(delay>0)
{
--delay;
Link->InputA=Link->PressA;
Link->InputB=Link->PressB;
}
}
else Tango_ScrollSlot(slot,maxScroll);
Link->InputStart=false;
Link->PressStart=false;
Link->InputMap = false;
Link->PressMap = false;
//Handle character name display
if (name != 0) {
drawNameBorder(nameSegs);
Screen->DrawString(7,NAMEX+8,NAMEY+4,NAMEFONT,NAMECOLOR,-1,TF_NORMAL,name,OP_OPAQUE);
}
Waitframe();
}
}//end handleMessageSlot
Edited by Taco Chopper, 25 April 2022 - 06:52 AM.