1 /* 2 * Copyright (C) Volition, Inc. 1999. All rights reserved. 3 * 4 * All source code herein is the property of Volition, Inc. You may not sell 5 * or otherwise commercially exploit the source or things you created based on the 6 * source. 7 * 8 */ 9 10 11 12 #ifndef __POPUP_H__ 13 #define __POPUP_H__ 14 15 // standardized text used for common buttons 16 // Special note (JH): The leading '&' is expected for these 4 defines in the code 17 #define POPUP_OK XSTR("&Ok", 503) 18 #define POPUP_CANCEL XSTR("&Cancel", 504) 19 #define POPUP_YES XSTR("&Yes", 505) 20 #define POPUP_NO XSTR("&No", 506) 21 22 /////////////////////////////////////////////////// 23 // flags 24 /////////////////////////////////////////////////// 25 26 // NEVER ADD FLAGS LESS THAN 10 here. there are some internal flags which use those 27 28 // font size 29 #define PF_TITLE (1<<10) // Draw title centered in regular font (title is first line) 30 #define PF_TITLE_BIG (1<<11) // Draw title centered in large font (title is first line) 31 #define PF_BODY_BIG (1<<12) // Draw message body in large font 32 33 // color 34 #define PF_TITLE_RED (1<<13) // Color to draw title, if different from default 35 #define PF_TITLE_GREEN (1<<14) 36 #define PF_TITLE_BLUE (1<<15) 37 #define PF_TITLE_WHITE (1<<16) 38 #define PF_BODY_RED (1<<17) // Color to draw body, if different from title 39 #define PF_BODY_GREEN (1<<18) 40 #define PF_BODY_BLUE (1<<19) 41 42 // icon choices 43 #define PF_USE_NEGATIVE_ICON (1<<20) // Always drawn as first icon if set 44 #define PF_USE_AFFIRMATIVE_ICON (1<<21) // Always drawn as second icon if two choices (if 1 choice, it is the only icon) 45 46 // misc 47 #define PF_RUN_STATE (1<<22) // call the do frame of the current state underneath the popup 48 #define PF_IGNORE_ESC (1<<23) // ignore the escape character 49 #define PF_ALLOW_DEAD_KEYS (1<<24) // Allow player to use keyset that exists when player dies 50 #define PF_NO_NETWORKING (1<<25) // don't do any networking 51 52 // no special buttons 53 #define PF_NO_SPECIAL_BUTTONS (1<<26) 54 55 // special web mouseover cursor flags 56 #define PF_WEB_CURSOR_1 (1<<27) // button 1 will get web cursor 57 #define PF_WEB_CURSOR_2 (1<<28) // button 2 will get web cursor 58 59 // input: flags => formatting specificatons (PF_... shown above) 60 // nchoices => number of choices popup has 61 // text_1 => text for first button 62 // ... => 63 // text_n => text for last button 64 // msg text => text msg for popup (can be of form "%s",pl->text) 65 // 66 // exit: choice selected (0..nchoices-1) 67 // will return -1 if there was an error or popup was aborted 68 // 69 // typical usage: 70 // 71 // rval = popup(0, 2, POPUP_YES, POPUP_NO, "Hey %s, do you want to quit", pl->callsign); 72 int popup(int flags, int nchoices, ... ); 73 74 // popup with cancel button and conditional funcrion. 75 // input: condition => function to call every frame, if condition() returns FALSE, the popup 76 // continues waiting. If condition() returns anything else, the popup will 77 // return that value. 78 // text_1 => text for cancel button 79 // msg text => text msg for popup (can be of form "%s",pl->text) 80 // 81 // exit: condition occured (return value of condition) 82 // will return 0 if cancel was pressed or popup was aborted 83 // will return -1 if there was an error 84 // 85 // typical usage: 86 // 87 // int condition_function() { 88 // if (blah) return 1; 89 // return 0; 90 // } 91 // . 92 // . 93 // . 94 // rval = popup_till_condition( condition_function, "Cancel", "Checking to see if %s is an idiot.", pl->callsign); 95 int popup_till_condition( int(*condition)() , ...); 96 97 // popup to return the value from an input box 98 char *popup_input(int flags, const char *caption, int max_output_len = -1); 99 100 int popup_active(); 101 102 int popup_running_state(); 103 104 // kill any active popup, forcing it to return -1 (similar to ESC) 105 void popup_kill_any_active(); 106 107 // change the text inside of the popup 108 void popup_change_text(const char *new_text); 109 110 // Used if certain data is missing (e.g. running demo data). 111 void popup_game_feature_not_in_demo(); 112 113 // create a popup which can test multiple conditions in a row 114 bool popup_conditional_create(int flags, ...); 115 void popup_conditional_close(); 116 int popup_conditional_do(int (*condition)(), const char *text); 117 118 #endif 119