src/window.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: window.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
int message_win=-1;
ali@0
    13
int map_win=-1;
ali@0
    14
ali@0
    15
int minhack_create_nhwindow(int type)
ali@0
    16
{
ali@0
    17
    int window;
ali@0
    18
    for(window=0;window<no_windows;window++)
ali@0
    19
	if (!windows[window].in_use)
ali@0
    20
	    break;
ali@0
    21
    if (window==no_windows)
ali@0
    22
	windows=realloc(windows,++no_windows*sizeof(*windows));
ali@0
    23
    windows[window].in_use=nhproxy_true;
ali@0
    24
    windows[window].type=type;
ali@0
    25
    windows[window].menu=NULL;
ali@0
    26
    switch(type)
ali@0
    27
    {
ali@0
    28
	case NHPROXY_EXT_NHW_MESSAGE:
ali@0
    29
	    windows[window].win=newwin(1,0,0,0);
ali@0
    30
	    if (message_win<0)
ali@0
    31
		message_win=window;
ali@0
    32
	    break;
ali@0
    33
	case NHPROXY_EXT_NHW_STATUS:
ali@0
    34
	    windows[window].win=newwin(2,0,LINES-2,0);
ali@0
    35
	    break;
ali@0
    36
	case NHPROXY_EXT_NHW_MAP:
ali@0
    37
	    if (map_win<0)
ali@0
    38
		map_win=window;
ali@0
    39
	    /* Fall through */
ali@0
    40
	case NHPROXY_EXT_NHW_MENU:
ali@0
    41
	case NHPROXY_EXT_NHW_TEXT:
ali@0
    42
	    windows[window].win=NULL;
ali@0
    43
	    break;
ali@0
    44
    }
ali@0
    45
    return window;
ali@0
    46
}
ali@0
    47
ali@0
    48
void minhack_clear_nhwindow(int window, int rows, int cols, int layers)
ali@0
    49
{
ali@0
    50
    if (windows[window].type==NHPROXY_EXT_NHW_MAP)
ali@0
    51
    {
ali@0
    52
	if (windows[window].win)
ali@0
    53
	    delwin(windows[window].win);
ali@0
    54
	windows[window].win=newwin(rows,cols,1,0);
ali@0
    55
    }
ali@0
    56
    else
ali@0
    57
	werase(windows[window].win);
ali@0
    58
}
ali@0
    59
ali@0
    60
void minhack_display_nhwindow(int window, nhproxy_bool_t blocking)
ali@0
    61
{
ali@0
    62
    wrefresh(windows[window].win);
ali@0
    63
}
ali@0
    64
ali@0
    65
void minhack_destroy_nhwindow(int window)
ali@0
    66
{
ali@0
    67
    minhack_free_menu(window);
ali@0
    68
    if (windows[window].win)
ali@0
    69
    {
ali@0
    70
	delwin(windows[window].win);
ali@0
    71
	windows[window].win=NULL;
ali@0
    72
    }
ali@0
    73
    if (window==message_win)
ali@0
    74
	message_win=-1;
ali@0
    75
    else if (window==map_win)
ali@0
    76
	map_win=-1;
ali@0
    77
    windows[window].in_use=nhproxy_false;
ali@0
    78
}