File: grafik.h

package info (click to toggle)
imaze 1.4-12
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 1,692 kB
  • ctags: 1,294
  • sloc: ansic: 14,086; sh: 305; makefile: 238
file content (160 lines) | stat: -rw-r--r-- 5,204 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
** - - -  iMaze  - - -
**
** Copyright (c) 1993-2001 by Hans-Ulrich Kiel & Joerg Czeranski
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**
** 1. Redistributions of source code must retain the above copyright
**    notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
**    notice, this list of conditions and the following disclaimer in the
**    documentation and/or other materials provided with the distribution.
** 3. The name of the authors may not be used to endorse or promote
**    products derived from this software without specific prior written
**    permission.
** 4. The name ``iMaze'' may not be used for products derived from this
**    software unless a prefix or a suffix is added to the name.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT,
** INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
** STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
** IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
**
**
** Datei: grafik.h
**
** benoetigt:
**  global.h
**
** Kommentar:
**  Definition der Datentypen und Prototypen fuer den Grafikteil
*/


static char sccsid_grafik[] = "@(#)grafik.h	3.4 12/3/01";


#ifndef SICHTW
#define SICHTW 16    /* Sichtweite des Spielers in Bloecken, maximal 64 */
#endif

#define WANDH RASPT  /* Hoehe der Waende (relativ zur Gangbreite) */

#define FENSTER_BREITE 65536  /* virtuelle Fensterbreite in Bildpunkten*/
#define FENSTER_HOEHE 65536   /* virtuelle Fensterhoehe in Bildpunkten*/

#define KEINELINIE 0 /* Flags fuer struct kartenlinie */
#define WANDLINIE  1
#define TUERLINIE  2


struct punkt
{
	int x, y;
};

/* enthaelt Koordinaten in Bildpunkten zum Zeichnen der Waende
   auf der Karte; wird in rechne_karte berechnet */
struct kartenlinie
{
	struct punkt ecke; /* linkes/oberes Ende der Wand */
	int laenge;        /* Laenge der Wand */
	u_char senkrecht;  /* falls Wand von oben nach unten */
	u_char typ1;       /* Typ der Wand von links/oben */
	u_char typ2;       /* Typ der Wand von rechts/unten */
};

/* enthaelt Koordinaten in Bildpunkten zum Zeichen der Spieler
   auf der Karte; wird in rechne_karte berechnet */
struct kartenkreis
{
	struct punkt mittelpunkt;
	int radiusx, radiusy;
	u_char farbe;
};

/* enthaelt Koordinaten in Bildpunkten zum Zeichnen der Waende;
   wird in rechne3d berechnet */
struct flaeche
{
	/* ecke[0] links oben, ecke[1] links unten,
	   ecke[2] rechts unten, ecke[3] rechts oben */
	struct punkt ecke[4];
	u_char farbe; /* darf nicht TRANSPARENT sein */
	u_char tuer;  /* falls Wand eine Tuer ist */
};

struct ausschnitt
{
	int x, breite;
};

/* enthaelt Koordinaten in Bildpunkten und Grafikinformationen zum Zeichnen
   von Spielern und Schuessen; wird in rechne3d berechnet */
struct kugel
{
	struct punkt mittelpunkt;
	struct ausschnitt *sichtbar; /* Clipping-Bereiche */
	int sichtanz;                /* Anzahl der Clipping-Bereiche */
	int radiusx, radiusy;
	/* schattenx wie mittelpunkt.x/radiusx */
	int schatteny, schattenry;   /* schattenry 0, falls kein Schatten */
	int blick;                   /* ist -1 falls kein Gesicht */
	u_char farbe;                /* kann TRANSPARENT sein */
};

/* enthaelt gesammelte Daten fuer 3D-Zeichnung und Spruch des Gegners */
struct objektdaten
{
	int hintergrund_zeichnen; /* Himmel, Boden, Horizont zeichnen */
	int anzwaende;
	struct flaeche *waende;
	int anzkugeln;
	struct kugel *kugeln;
	char *text; /* Spruch des Gegners oder NULL */
};

/* enthaelt Punkte und Farbe eines Spielers */
struct punktestand
{
	int punkte; /* -1 = nicht die Punkte, nur den Spieler zeichnen */
	u_char farbe;
	int hervorheben;
};

/* enthaelt gesamte Punktestanddaten fuer alle Spieler */
struct punktedaten
{
	int anzpunkte;
	struct punktestand *punkte;
};


/* Prototypen fuer globale Grafik-Funktionen */

void zeichne_blickfeld(struct objektdaten *objekte_neu);
void zeichne_rueckspiegel(struct objektdaten *objekte_rueck_neu);
void zeichne_karte(int spieler_index, int anzkreise_neu,
	struct kartenkreis *kreise_neu);
void zeichne_grundriss(int anzlinien_neu, struct kartenlinie *linien_neu);
void zeichne_kompass(int blickrichtung_neu);
void zeichne_punkte(struct punktedaten *punkte_neu);
void zeichne_sync_anfang(void);
void zeichne_sync_ende(void);
void grafik_schleife(void);
int grafik_init(int *argc, char **argv);
void grafik_ende(void);
void disconnect_abfrage(void);
void ueblen_fehler_anzeigen(char **meldung, char *knopf);
int rueckfrage(char **meldung, char *weiter_knopf, char *abbruch_knopf);