本文整理汇总了C++中Term_xtra函数的典型用法代码示例。如果您正苦于以下问题:C++ Term_xtra函数的具体用法?C++ Term_xtra怎么用?C++ Term_xtra使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Term_xtra函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Term_activate
/*
* Activate a new Term (and deactivate the current Term)
*
* This function is extremely important, and also somewhat bizarre.
* It is the only function that should "modify" the value of "Term".
*
* To "create" a valid "term", one should do "term_init(t)", then
* set the various flags and hooks, and then do "Term_activate(t)".
*/
errr Term_activate(term *t)
{
/* Hack -- already done */
if (Term == t) return (1);
/* Deactivate the old Term */
if (Term) Term_xtra(TERM_XTRA_LEVEL, 0);
/* Hack -- Call the special "init" hook */
if (t && !t->active_flag)
{
/* Call the "init" hook */
if (t->init_hook) (*t->init_hook)(t);
/* Remember */
t->active_flag = TRUE;
/* Assume mapped */
t->mapped_flag = TRUE;
}
/* Remember the Term */
Term = t;
/* Activate the new Term */
if (Term) Term_xtra(TERM_XTRA_LEVEL, 1);
/* Success */
return (0);
}
示例2: activate_module
static void activate_module()
{
/* Initialize the module table */
call_lua("assign_current_module", "(s)", "", game_module);
/* Do misc inits */
call_lua("get_module_info", "(s)", "d", "max_plev", &max_plev);
call_lua("get_module_info", "(s)", "d", "death_dungeon", &DUNGEON_DEATH);
call_lua("get_module_info", "(s)", "d", "random_artifact_weapon_chance", &RANDART_WEAPON);
call_lua("get_module_info", "(s)", "d", "random_artifact_armor_chance", &RANDART_ARMOR);
call_lua("get_module_info", "(s)", "d", "random_artifact_jewelry_chance", &RANDART_JEWEL);
call_lua("get_module_info", "(s,d)", "d", "version", 1, &VERSION_MAJOR);
call_lua("get_module_info", "(s,d)", "d", "version", 2, &VERSION_MINOR);
call_lua("get_module_info", "(s,d)", "d", "version", 3, &VERSION_PATCH);
version_major = VERSION_MAJOR;
version_minor = VERSION_MINOR;
version_patch = VERSION_PATCH;
/* Change window name if needed */
if (strcmp(game_module, "ToME"))
{
strnfmt(angband_term_name[0], 79, "T-Engine: %s", game_module);
Term_xtra(TERM_XTRA_RENAME_MAIN_WIN, 0);
}
/* Reprocess the player name, just in case */
process_player_base();
}
示例3: target_set_closest
bool target_set_closest(int mode)
{
int y, x, m_idx;
monster_type *m_ptr;
char m_name[80];
bool visibility;
struct point_set *targets;
/* Cancel old target */
target_set_monster(0);
/* Get ready to do targetting */
targets = target_set_interactive_prepare(mode);
/* If nothing was prepared, then return */
if (point_set_size(targets) < 1)
{
msg("No Available Target.");
point_set_dispose(targets);
return FALSE;
}
/* Find the first monster in the queue */
y = targets->pts[0].y;
x = targets->pts[0].x;
m_idx = cave->m_idx[y][x];
/* Target the monster, if possible */
if ((m_idx <= 0) || !target_able(m_idx))
{
msg("No Available Target.");
point_set_dispose(targets);
return FALSE;
}
/* Target the monster */
m_ptr = cave_monster(cave, m_idx);
monster_desc(m_name, sizeof(m_name), m_ptr, 0x00);
if (!(mode & TARGET_QUIET))
msg("%^s is targeted.", m_name);
Term_fresh();
/* Set up target information */
monster_race_track(m_ptr->r_idx);
health_track(p_ptr, cave->m_idx[y][x]);
target_set_monster(m_idx);
/* Visual cue */
Term_get_cursor(&visibility);
(void)Term_set_cursor(TRUE);
move_cursor_relative(y, x);
Term_redraw_section(x, y, x, y);
/* TODO: what's an appropriate amount of time to spend highlighting */
Term_xtra(TERM_XTRA_DELAY, 150);
(void)Term_set_cursor(visibility);
point_set_dispose(targets);
return TRUE;
}
示例4: Term_nuke_gcu
/*
* Nuke the "curses" system
*/
static void Term_nuke_gcu(term *t)
{
int x, y;
term_data *td = (term_data *)(t->data);
/* Delete this window */
delwin(td->win);
/* Count nuke's, handle last */
if (--active != 0) return;
/* Hack -- make sure the cursor is visible */
Term_xtra(TERM_XTRA_SHAPE, 1);
#ifdef A_COLOR
/* Reset colors to defaults */
start_color();
#endif
/* This moves curses to bottom right corner */
getyx(stdscr, y, x);
mvcur(y, x, LINES - 1, 0);
/* Flush the curses buffer */
(void)refresh();
/* Exit curses */
endwin();
/* Flush the output */
(void)fflush(stdout);
/* Normal keymap */
keymap_norm();
}
示例5: inkey_aux
/*
* Helper function called only from "inkey()"
*/
static ui_event inkey_aux(int scan_cutoff)
{
int w = 0;
ui_event ke;
/* Wait for a keypress */
if (scan_cutoff == SCAN_OFF)
{
(void)(Term_inkey(&ke, TRUE, TRUE));
}
else
{
w = 0;
/* Wait only as long as macro activation would wait*/
while (Term_inkey(&ke, FALSE, TRUE) != 0)
{
/* Increase "wait" */
w++;
/* Excessive delay */
if (w >= scan_cutoff)
{
ui_event empty = EVENT_EMPTY;
return empty;
}
/* Delay */
Term_xtra(TERM_XTRA_DELAY, 10);
}
}
return (ke);
}
示例6: do_cmd_redraw
/**
* Redraw the screen
*
* This command performs various low level updates, clears all the "extra"
* windows, does a total redraw of the main window, and requests all of the
* interesting updates and redraws that I can think of.
*
* This command is also used to "instantiate" the results of the user
* selecting various things, such as graphics mode, so it must call
* the "TERM_XTRA_REACT" hook before redrawing the windows.
*
*/
void do_cmd_redraw(void)
{
int j;
term *old = Term;
/* Low level flush */
Term_flush();
/* Reset "inkey()" */
event_signal(EVENT_INPUT_FLUSH);
if (character_dungeon)
verify_panel();
/* Hack -- React to changes */
Term_xtra(TERM_XTRA_REACT, 0);
if (character_dungeon) {
/* Combine the pack (later) */
player->upkeep->notice |= (PN_COMBINE);
/* Update torch, gear */
player->upkeep->update |= (PU_TORCH | PU_INVEN);
/* Update stuff */
player->upkeep->update |= (PU_BONUS | PU_HP | PU_SPELLS);
/* Fully update the visuals */
player->upkeep->update |= (PU_FORGET_VIEW | PU_UPDATE_VIEW | PU_MONSTERS);
/* Redraw everything */
player->upkeep->redraw |= (PR_BASIC | PR_EXTRA | PR_MAP | PR_INVEN |
PR_EQUIP | PR_MESSAGE | PR_MONSTER |
PR_OBJECT | PR_MONLIST | PR_ITEMLIST);
}
/* Clear screen */
Term_clear();
if (character_dungeon) {
/* Hack -- update */
handle_stuff(player);
/* Place the cursor on the player */
if (0 != character_dungeon)
move_cursor_relative(player->px, player->py);
}
/* Redraw every window */
for (j = 0; j < ANGBAND_TERM_MAX; j++) {
if (!angband_term[j]) continue;
Term_activate(angband_term[j]);
Term_redraw();
Term_fresh();
Term_activate(old);
}
}
示例7: sound
/*
* Hack -- Make a (relevant?) sound
*/
void sound(int val)
{
/* No sound */
if (!use_sound) return;
/* Make a sound (if allowed) */
Term_xtra(TERM_XTRA_SOUND, val);
}
示例8: Term_inkey
/*
* Check for a pending keypress on the key queue.
*
* Store the keypress, if any, in "ch", and return "0".
* Otherwise store "zero" in "ch", and return "1".
*
* Wait for a keypress if "wait" is true.
*
* Remove the keypress if "take" is true.
*/
errr Term_inkey(char *ch, bool_ wait, bool_ take)
{
/* Assume no key */
(*ch) = '\0';
/* Process queued UI events */
Term_xtra(TERM_XTRA_BORED, 0);
/* Wait */
if (wait)
{
/* Process pending events while necessary */
while (Term->key_head == Term->key_tail)
{
/* Process events (wait for one) */
Term_xtra(TERM_XTRA_EVENT, TRUE);
}
}
/* Do not Wait */
else
{
/* Process pending events if necessary */
if (Term->key_head == Term->key_tail)
{
/* Process events (do not wait) */
Term_xtra(TERM_XTRA_EVENT, FALSE);
}
}
/* No keys are ready */
if (Term->key_head == Term->key_tail) return (1);
/* Extract the next keypress */
(*ch) = Term->key_queue[Term->key_tail];
/* If requested, advance the queue, wrap around if necessary */
if (take && (++Term->key_tail == Term->key_size)) Term->key_tail = 0;
/* Success */
return (0);
}
示例9: colors_pref_load
static void colors_pref_load(const char *title, int row)
{
/* Ask for and load a user pref file */
do_cmd_pref_file_hack(8);
/* XXX should probably be a cleaner way to tell UI about
* colour changes - how about doing this in the pref file
* loading code too? */
Term_xtra(TERM_XTRA_REACT, 0);
Term_redraw();
}
示例10: Term_xtra_gcu_alive
/*
* Suspend/Resume
*/
static errr Term_xtra_gcu_alive(int v)
{
int x, y;
/* Suspend */
if (!v)
{
/* Go to normal keymap mode */
keymap_norm();
/* Restore modes */
nocbreak();
echo();
nl();
/* Hack -- make sure the cursor is visible */
Term_xtra(TERM_XTRA_SHAPE, 1);
/* Flush the curses buffer */
(void)refresh();
/* Get current cursor position */
getyx(curscr, y, x);
/* Move the cursor to bottom right corner */
mvcur(y, x, LINES - 1, 0);
/* Exit curses */
endwin();
/* Flush the output */
(void)fflush(stdout);
}
/* Resume */
else
{
/* Refresh */
/* (void)touchwin(curscr); */
/* (void)wrefresh(curscr); */
/* Restore the settings */
cbreak();
noecho();
nonl();
/* Go to angband keymap mode */
keymap_game();
}
/* Success */
return (0);
}
示例11: Term_flush
/*
* Flush and forget the input
*/
errr Term_flush(void)
{
/* Hack -- Flush all events */
Term_xtra(TERM_XTRA_FLUSH, 0);
/* Forget all keypresses */
Term->key_head = Term->key_tail = 0;
/* Success */
return (0);
}
示例12: Term_xtra_gcu_alive
/*
* Suspend/Resume
*/
static errr Term_xtra_gcu_alive(int v)
{
/* Suspend */
if (!v)
{
/* Go to normal keymap mode */
keymap_norm();
/* Restore modes */
nocbreak();
echo();
nl();
/* Hack -- make sure the cursor is visible */
Term_xtra(TERM_XTRA_SHAPE, 1);
/* Flush the curses buffer */
(void)refresh();
#ifdef SPECIAL_BSD
/* this moves curses to bottom right corner */
mvcur(curscr->cury, curscr->curx, LINES - 1, 0);
#else
/* this moves curses to bottom right corner */
mvcur(getcury(curscr), getcurx(curscr), LINES - 1, 0);
#endif
/* Exit curses */
endwin();
/* Flush the output */
(void)fflush(stdout);
}
/* Resume */
else
{
/* Refresh */
/* (void)touchwin(curscr); */
/* (void)wrefresh(curscr); */
/* Restore the settings */
cbreak();
noecho();
nonl();
/* Go to angband keymap mode */
keymap_game();
}
/* Success */
return (0);
}
示例13: browse_movie
void browse_movie(void)
{
Term_clear();
Term_fresh();
Term_xtra(TERM_XTRA_REACT, 0);
while (read_movie_file() == 0)
{
while (fresh_queue.next != fresh_queue.tail)
{
if (!flush_ringbuf_client())
{
Term_xtra(TERM_XTRA_FLUSH, 0);
/* ソケットにデータが来ているかどうか調べる */
#ifdef WINDOWS
Sleep(WAIT);
#else
usleep(WAIT);
#endif
}
}
}
}
示例14: handle_signal_suspend
/*
* Handle signals -- suspend
*
* Actually suspend the game, and then resume cleanly
*/
static void handle_signal_suspend(int sig)
{
/* Protect errno from library calls in signal handler */
int save_errno = errno;
/* Disable handler */
(void)(*signal_aux)(sig, SIG_IGN);
#ifdef SIGSTOP
/* Flush output */
Term_fresh();
/* Suspend the "Term" */
Term_xtra(TERM_XTRA_ALIVE, 0);
/* Suspend ourself */
(void)kill(0, SIGSTOP);
/* Resume the "Term" */
Term_xtra(TERM_XTRA_ALIVE, 1);
/* Redraw the term */
Term_redraw();
/* Flush the term */
Term_fresh();
#endif
/* Restore handler */
(void)(*signal_aux)(sig, handle_signal_suspend);
/* Restore errno */
errno = save_errno;
}
示例15: redraw_window
/**
* Redraw a term when it is resized
*/
void redraw_window(void)
{
/* Only if the dungeon exists */
if (!character_dungeon) return;
/* Hack - Activate term zero for the redraw */
Term_activate(&term_screen[0]);
/* Hack -- react to changes */
Term_xtra(TERM_XTRA_REACT, 0);
/* Hack -- update */
handle_stuff(p_ptr);
/* Redraw */
Term_redraw();
/* Refresh */
Term_fresh();
}