BOOL runMultiRequester(UDWORD id,UDWORD *mode, char *chosen,UDWORD *chosenValue) { if( id==M_REQUEST_CLOSE) // close { closeMultiRequester(); return true; } if( id>=M_REQUEST_BUT && id<=M_REQUEST_BUTM) // chose a file. { strcpy(chosen,((W_BUTTON *)widgGetFromID(psRScreen,id))->pText ); *chosenValue = ((W_BUTTON *)widgGetFromID(psRScreen,id))->UserData ; closeMultiRequester(); *mode = context; return true; } switch (id) { case M_REQUEST_C1: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 1, current_numplayers); break; case M_REQUEST_C2: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 2, current_numplayers); break; case M_REQUEST_C3: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 3, current_numplayers); break; case M_REQUEST_AP: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 0); break; case M_REQUEST_2P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 2); break; case M_REQUEST_3P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 3); break; case M_REQUEST_4P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 4); break; case M_REQUEST_5P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 5); break; case M_REQUEST_6P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 6); break; case M_REQUEST_7P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 7); break; case M_REQUEST_8P: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 8); break; } return false; }
bool runMultiRequester(UDWORD id, UDWORD *mode, char *chosen, UDWORD *chosenValue, bool *isHoverPreview) { static unsigned hoverId = 0; static unsigned hoverStartTime = 0; if( (id == M_REQUEST_CLOSE) || CancelPressed() ) // user hit close box || hit the cancel key { closeMultiRequester(); *mode = 0; return true; } bool hoverPreview = false; if (id == 0 && context == MULTIOP_MAP) { id = widgGetMouseOver(psRScreen); if (id != hoverId) { hoverId = id; hoverStartTime = wzGetTicks() + HOVER_PREVIEW_TIME; } if (id == hoverPreviewId || hoverStartTime > wzGetTicks()) { id = 0; // Don't re-render preview nor render preview before HOVER_PREVIEW_TIME. } hoverPreview = true; } if (id >= M_REQUEST_BUT && id <= M_REQUEST_BUTM) // chose a file. { strcpy(chosen,((W_BUTTON *)widgGetFromID(psRScreen,id))->pText ); *chosenValue = ((W_BUTTON *)widgGetFromID(psRScreen,id))->UserData ; *mode = context; *isHoverPreview = hoverPreview; hoverPreviewId = id; if (!hoverPreview) { closeMultiRequester(); } return true; } if (hoverPreview) { id = 0; } switch (id) { case M_REQUEST_C1: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 1, current_numplayers); break; case M_REQUEST_C2: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 2, current_numplayers); break; case M_REQUEST_C3: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, 3, current_numplayers); break; case M_REQUEST_AP: closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, 0); break; default: for (unsigned numPlayers = 2; numPlayers <= MAX_PLAYERS_IN_GUI; ++numPlayers) { if (id == M_REQUEST_NP[numPlayers - 2]) { closeMultiRequester(); addMultiRequest(MultiCustomMapsPath, ".wrf", MULTIOP_MAP, current_tech, numPlayers); break; } } break; } return false; }