/** * Show the Mentat screen with a dialog (Proceed / Repeat). * @param houseID The house to show the mentat of. * @param stringID The string to show. * @param wsaFilename The WSA to show. * @param musicID The Music to play. */ static void GUI_Mentat_ShowDialog(uint8 houseID, uint16 stringID, const char *wsaFilename, uint16 musicID) { Widget *w1, *w2; if (g_debugSkipDialogs) return; w1 = GUI_Widget_Allocate(1, GUI_Widget_GetShortcut(String_Get_ByIndex(STR_PROCEED)[0]), 168, 168, 379, 0); w2 = GUI_Widget_Allocate(2, GUI_Widget_GetShortcut(String_Get_ByIndex(STR_REPEAT)[0]), 240, 168, 381, 0); w1 = GUI_Widget_Link(w1, w2); Sound_Output_Feedback(0xFFFE); Driver_Voice_Play(NULL, 0xFF); Music_Play(musicID); stringID += STR_HOUSE_HARKONNENFROM_THE_DARK_WORLD_OF_GIEDI_PRIME_THE_SAVAGE_HOUSE_HARKONNEN_HAS_SPREAD_ACROSS_THE_UNIVERSE_A_CRUEL_PEOPLE_THE_HARKONNEN_ARE_RUTHLESS_TOWARDS_BOTH_FRIEND_AND_FOE_IN_THEIR_FANATICAL_PURSUIT_OF_POWER + houseID * 40; do { strncpy(g_readBuffer, String_Get_ByIndex(stringID), g_readBufferSize); sleepIdle(); } while (GUI_Mentat_Show(g_readBuffer, wsaFilename, w1, true) == 0x8002); free(w2); free(w1); if (musicID != 0xFFFF) Driver_Music_FadeOut(); }
void async_GUI_Mentat_ShowDialogOpen() { asyncMentatShowDialog.w1 = GUI_Widget_Allocate(1, GUI_Widget_GetShortcut(String_Get_ByIndex(STR_PROCEED)[0]), 168, 168, 379, 0); asyncMentatShowDialog.w2 = GUI_Widget_Allocate(2, GUI_Widget_GetShortcut(String_Get_ByIndex(STR_REPEAT)[0]), 240, 168, 381, 0); asyncMentatShowDialog.w1 = GUI_Widget_Link(asyncMentatShowDialog.w1, asyncMentatShowDialog.w2); Sound_Output_Feedback(0xFFFE); Driver_Voice_Play(NULL, 0xFF); Music_Play(asyncMentatShowDialog.musicID); asyncMentatShowDialog.stringID += STR_HOUSE_HARKONNENFROM_THE_DARK_WORLD_OF_GIEDI_PRIME_THE_SAVAGE_HOUSE_HARKONNEN_HAS_SPREAD_ACROSS_THE_UNIVERSE_A_CRUEL_PEOPLE_THE_HARKONNEN_ARE_RUTHLESS_TOWARDS_BOTH_FRIEND_AND_FOE_IN_THEIR_FANATICAL_PURSUIT_OF_POWER + asyncMentatShowDialog.houseID * 40; }
static void Window_WidgetClick_Create(void) { WidgetInfo *wi; for (wi = g_table_gameWidgetInfo; wi->index >= 0; wi++) { Widget *w; w = GUI_Widget_Allocate(wi->index, wi->shortcut, wi->offsetX, wi->offsetY, wi->spriteID, wi->stringID); if (wi->spriteID < 0) { w->width = wi->width; w->height = wi->height; } w->clickProc = wi->clickProc; w->flags.requiresClick = (wi->flags & 0x0001) ? true : false; w->flags.notused1 = (wi->flags & 0x0002) ? true : false; w->flags.clickAsHover = (wi->flags & 0x0004) ? true : false; w->flags.invisible = (wi->flags & 0x0008) ? true : false; w->flags.greyWhenInvisible = (wi->flags & 0x0010) ? true : false; w->flags.noClickCascade = (wi->flags & 0x0020) ? true : false; w->flags.loseSelect = (wi->flags & 0x0040) ? true : false; w->flags.notused2 = (wi->flags & 0x0080) ? true : false; w->flags.buttonFilterLeft = (wi->flags >> 8) & 0x0f; w->flags.buttonFilterRight = (wi->flags >> 12) & 0x0f; g_widgetLinkedListHead = GUI_Widget_Insert(g_widgetLinkedListHead, w); } }
/** * Shows the Help window. * @param proceed Display a "Proceed" button if true, "Exit" otherwise. */ static void AsyncGUI_Mentat_ShowHelpList(bool proceed) { GUI_Mentat_ShowHelpList_oldScreenID = GFX_Screen_SetActive(2); Input_Flags_SetBits(INPUT_FLAG_KEY_REPEAT); Input_History_Clear(); GUI_Mentat_Display(NULL, g_playerHouseID); g_widgetMentatFirst = GUI_Widget_Allocate(1, GUI_Widget_GetShortcut(*String_Get_ByIndex(STR_EXIT)), 200, 168, proceed ? 379 : 377, 5); g_widgetMentatFirst->shortcut2 = 'n'; GUI_Mentat_Create_HelpScreen_Widgets(); GUI_Mouse_Hide_Safe(); GUI_Screen_Copy(0, 0, 0, 0, SCREEN_WIDTH / 8, SCREEN_HEIGHT, 2, 0); GUI_Mouse_Show_Safe(); GUI_Mentat_LoadHelpSubjects(true); GUI_Mentat_Draw(true); GFX_Screen_SetActive(0); AsyncGUI_Mentat_HelpListLoop(); Async_InvokeAfterAsync(GUI_Mentat_ShowHelpList_Close); }
/** * Shows the Help window. * @param proceed Display a "Proceed" button if true, "Exit" otherwise. */ static void GUI_Mentat_ShowHelpList(bool proceed) { Screen oldScreenID; oldScreenID = GFX_Screen_SetActive(SCREEN_1); /* ENHANCEMENT -- After visiting Mentat (the help) window, auto-repeat of keys gets disabled. */ if (!g_dune2_enhanced) Input_Flags_SetBits(INPUT_FLAG_KEY_REPEAT); Input_History_Clear(); GUI_Mentat_Display(NULL, g_playerHouseID); g_widgetMentatFirst = GUI_Widget_Allocate(1, GUI_Widget_GetShortcut(*String_Get_ByIndex(STR_EXIT)), 200, 168, proceed ? 379 : 377, 5); g_widgetMentatFirst->shortcut2 = 'n'; GUI_Mentat_Create_HelpScreen_Widgets(); GUI_Mouse_Hide_Safe(); GUI_Screen_Copy(0, 0, 0, 0, SCREEN_WIDTH / 8, SCREEN_HEIGHT, SCREEN_1, SCREEN_0); GUI_Mouse_Show_Safe(); GUI_Mentat_LoadHelpSubjects(true); GUI_Mentat_Draw(true); GFX_Screen_SetActive(SCREEN_0); GUI_Mentat_HelpListLoop(); free(g_widgetMentatFirst); g_widgetMentatFirst = NULL; Load_Palette_Mercenaries(); GUI_Widget_Free_WithScrollbar(g_widgetMentatScrollbar); g_widgetMentatScrollbar = NULL; free(g_widgetMentatScrollUp); g_widgetMentatScrollUp = NULL; free(g_widgetMentatScrollDown); g_widgetMentatScrollDown = NULL; /* ENHANCEMENT -- After visiting Mentat (the help) window, auto-repeat of keys gets disabled. */ if (!g_dune2_enhanced) Input_Flags_ClearBits(INPUT_FLAG_KEY_REPEAT); GFX_Screen_SetActive(oldScreenID); }
/** * Shows the Help window. * @param proceed Display a "Proceed" button if true, "Exit" otherwise. */ static void GUI_Mentat_ShowHelpList(bool proceed) { uint16 oldScreenID; oldScreenID = GFX_Screen_SetActive(2); Input_Flags_SetBits(INPUT_FLAG_KEY_REPEAT); Input_History_Clear(); GUI_Mentat_Display(NULL, g_playerHouseID); g_widgetMentatFirst = GUI_Widget_Allocate(1, GUI_Widget_GetShortcut(*String_Get_ByIndex(STR_EXIT)), 200, 168, proceed ? 379 : 377, 5); g_widgetMentatFirst->shortcut2 = 'n'; GUI_Mentat_Create_HelpScreen_Widgets(); GUI_Mouse_Hide_Safe(); GUI_Screen_Copy(0, 0, 0, 0, SCREEN_WIDTH / 8, SCREEN_HEIGHT, 2, 0); GUI_Mouse_Show_Safe(); GUI_Mentat_LoadHelpSubjects(true); GUI_Mentat_Draw(true); GFX_Screen_SetActive(0); GUI_Mentat_HelpListLoop(); free(g_widgetMentatFirst); g_widgetMentatFirst = NULL; Load_Palette_Mercenaries(); GUI_Widget_Free_WithScrollbar(g_widgetMentatScrollbar); g_widgetMentatScrollbar = NULL; free(g_widgetMentatScrollUp); g_widgetMentatScrollUp = NULL; free(g_widgetMentatScrollDown); g_widgetMentatScrollDown = NULL; Input_Flags_ClearBits(INPUT_FLAG_KEY_REPEAT); GFX_Screen_SetActive(oldScreenID); }