src/extprocs.c
author ali@juiblex.co.uk
Mon Jan 29 20:22:01 2007 +0000 (2007-01-29)
changeset 0 acc07f1f4b1e
permissions -rw-r--r--
Initial check-in. Mostly sort of works. Ish.
ali@0
     1
/*
ali@0
     2
 * $Id: extprocs.c,v 1.5 2004/12/30 09:07:47 ali Exp $
ali@0
     3
 * Copyright (C) 2007 J. Ali Harlow
ali@0
     4
 * Min Hack may be freely redistributed.  See license for details. 
ali@0
     5
 */
ali@0
     6
ali@0
     7
#include <stdlib.h>
ali@0
     8
#include <stdio.h>
ali@0
     9
#include <string.h>
ali@0
    10
#include "minhack.h"
ali@0
    11
ali@0
    12
struct nhproxy_cb_get_glyph_mapping_res *glyph_map;
ali@0
    13
struct minhack_window *windows=NULL;
ali@0
    14
int no_windows=0;
ali@0
    15
ali@0
    16
static int v_hook(void)
ali@0
    17
{
ali@0
    18
    fprintf(stderr,"v_hook called\n");
ali@0
    19
}
ali@0
    20
ali@0
    21
struct nhproxy_clnt_ext_procs minhack_ext_procs = {
ali@0
    22
    "minhack",
ali@0
    23
    minhack_init_nhwindows,
ali@0
    24
    minhack_player_selection,
ali@0
    25
    minhack_askname,
ali@0
    26
    NULL,			/* get_nh_event */
ali@0
    27
    minhack_exit_nhwindows,
ali@0
    28
    NULL,			/* suspend_nhwindows */
ali@0
    29
    NULL,			/* resume_nhwindows */
ali@0
    30
    minhack_create_nhwindow,
ali@0
    31
    minhack_clear_nhwindow,
ali@0
    32
    minhack_display_nhwindow,
ali@0
    33
    minhack_destroy_nhwindow,
ali@0
    34
    minhack_curs,
ali@0
    35
    minhack_putstr,
ali@0
    36
    minhack_display_file,
ali@0
    37
    minhack_start_menu,
ali@0
    38
    minhack_add_menu,
ali@0
    39
    minhack_end_menu,
ali@0
    40
    minhack_select_menu,
ali@0
    41
    minhack_message_menu,
ali@0
    42
    NULL,			/* update_inventory */
ali@0
    43
    NULL,			/* mark_sync */
ali@0
    44
    NULL,			/* wait_sync */
ali@0
    45
    NULL,			/* cliparound */
ali@0
    46
    NULL,			/* update_positionbar */
ali@0
    47
    minhack_print_glyph,
ali@0
    48
    minhack_raw_print,
ali@0
    49
    minhack_raw_print_bold,
ali@0
    50
    minhack_nhgetch,
ali@0
    51
    minhack_nh_poskey,
ali@0
    52
    NULL,			/* nhbell */
ali@0
    53
    NULL,			/* doprev_message */
ali@0
    54
    minhack_yn_function,
ali@0
    55
    minhack_getlin,
ali@0
    56
    minhack_get_ext_cmd,
ali@0
    57
    NULL,			/* number_pad */
ali@0
    58
    NULL,			/* delay_output */
ali@0
    59
    NULL,			/* change_color */
ali@0
    60
    NULL,			/* change_background */
ali@0
    61
    NULL,			/* set_font_name */
ali@0
    62
    NULL,			/* get_color_string */
ali@0
    63
    NULL,			/* start_screen,*/
ali@0
    64
    NULL,			/* end_screen,*/
ali@0
    65
    minhack_outrip,
ali@0
    66
    minhack_preference_update,
ali@0
    67
    NULL,			/* status */
ali@0
    68
    v_hook,			/* print_glyph_layered */
ali@0
    69
    minhack_send_config_file,
ali@0
    70
};
ali@0
    71
ali@0
    72
int minhack_init_nhwindows(int *argc, char **argv, char ***capv)
ali@0
    73
{
ali@0
    74
    initscr();
ali@0
    75
    nonl();
ali@0
    76
    cbreak();
ali@0
    77
    noecho();
ali@0
    78
    refresh();
ali@0
    79
    glyph_map=nhproxy_cb_get_glyph_mapping();
ali@0
    80
    return nhproxy_true;
ali@0
    81
}
ali@0
    82
ali@0
    83
int minhack_player_selection(int *role, int *race, int *gend, int *align)
ali@0
    84
{
ali@0
    85
    return nhproxy_false;
ali@0
    86
}
ali@0
    87
ali@0
    88
char *minhack_askname(void)
ali@0
    89
{
ali@0
    90
    return "ali";
ali@0
    91
}
ali@0
    92
ali@0
    93
void minhack_exit_nhwindows(const char *str)
ali@0
    94
{
ali@0
    95
    endwin();
ali@0
    96
    minhack_raw_print(str);
ali@0
    97
}
ali@0
    98
ali@0
    99
void minhack_curs(int window, int x, int y)
ali@0
   100
{
ali@0
   101
    wmove(windows[window].win,y,x);
ali@0
   102
}
ali@0
   103
ali@0
   104
void minhack_putstr(int window, int attr, const char *str)
ali@0
   105
{
ali@0
   106
    waddstr(windows[window].win,str);
ali@0
   107
}
ali@0
   108
ali@0
   109
void minhack_display_file(int fh)
ali@0
   110
{
ali@0
   111
    /* FIXME: Implement */
ali@0
   112
}
ali@0
   113
ali@0
   114
void minhack_print_glyph(int id, int x, int y, int glyph)
ali@0
   115
{
ali@0
   116
    struct nhproxy_glyph_map_info info;
ali@0
   117
    struct nhproxy_glyph_mapping *map;
ali@0
   118
    map=nhproxy_glyph_map_first(&info,glyph_map);
ali@0
   119
    while(glyph--)
ali@0
   120
	map=nhproxy_glyph_map_next(&info);
ali@0
   121
    mvwaddch(windows[id].win,y,x,map->rgbsym&0xFF);
ali@0
   122
    nhproxy_glyph_map_close(&info);
ali@0
   123
}
ali@0
   124
ali@0
   125
void minhack_raw_print(const char *str)
ali@0
   126
{
ali@0
   127
    if (*str)
ali@0
   128
	puts(str);
ali@0
   129
}
ali@0
   130
ali@0
   131
void minhack_raw_print_bold(const char *str)
ali@0
   132
{
ali@0
   133
    minhack_raw_print(str);
ali@0
   134
}
ali@0
   135
ali@0
   136
int minhack_nhgetch(void)
ali@0
   137
{
ali@0
   138
    int i;
ali@0
   139
    for(i=0;i<no_windows;i++)
ali@0
   140
	if (windows[i].win && windows[i].type!=NHPROXY_EXT_NHW_MENU &&
ali@0
   141
	  windows[i].type!=NHPROXY_EXT_NHW_TEXT)
ali@0
   142
	    wrefresh(windows[i].win);
ali@0
   143
    return getch();
ali@0
   144
}
ali@0
   145
ali@0
   146
int minhack_nh_poskey(int *x, int *y, int *mod)
ali@0
   147
{
ali@0
   148
    return minhack_nhgetch();
ali@0
   149
}
ali@0
   150
ali@0
   151
int minhack_outrip(int window, char *killed_by)
ali@0
   152
{
ali@0
   153
    return nhproxy_false;
ali@0
   154
}
ali@0
   155
ali@0
   156
void minhack_preference_update(const char *optnam, const char *value)
ali@0
   157
{
ali@0
   158
}
ali@0
   159
ali@0
   160
void minhack_send_config_file(int fh)
ali@0
   161
{
ali@0
   162
}