00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __JEDI_WAD__
00025 #define __JEDI_WAD__
00026
00027 #include "jed_defs.h"
00028 #include <stdio.h>
00029 #include "lista.h"
00030
00031 enum ENUM_WAD_ENTITY_TYPES
00032 {
00033 WAD_UNKNOWN = 0,
00034 WAD_LABEL,
00035 WAD_GLEVEL,
00036 WAD_IMAGE,
00037 WAD_FLAT,
00038 WAD_PLAYPAL,
00039 WAD_COLORMAP,
00040 WAD_ENDOOM,
00041 WAD_DEMOx,
00042 WAD_ExMy,
00043 WAD_MAPxy,
00044 WAD_TEXTURE,
00045 WAD_PNAMES,
00046 WAD_GENMIDI,
00047 WAD_DMXGUS,
00048 WAD_D_ExMy,
00049 WAD_D_INTER,
00050 WAD_D_INTRO,
00051 WAD_D_INTROA,
00052 WAD_D_VICTOR,
00053 WAD_D_BUNNY,
00054 WAD_D_,
00055 WAD_DP_,
00056 WAD_DS_,
00057 WAD_THINGS,
00058 WAD_LINEDEFS,
00059 WAD_SIDEDEFS,
00060 WAD_VERTEXES,
00061 WAD_SEGS,
00062 WAD_SSECTORS,
00063 WAD_NODES,
00064 WAD_SECTORS,
00065 WAD_REJECT,
00066 WAD_BLOCKMAP
00067 };
00068
00069 class WAD_ENTITY {
00070 public:
00071 long int offset;
00072 long int size;
00073 char name[17];
00074 long int wad2_mem_size;
00075 BYTE wad2_type;
00076 BYTE wad2_compression;
00077
00078 WAD_ENTITY(FILE *fd, int tipo);
00079 int deme_tipo(void);
00080 };
00081
00082 class WAD_LEVEL {
00083 public:
00084 char name[9];
00085 FILE *wad_fd;
00086
00087 WAD_ENTITY *Things;
00088 WAD_ENTITY *Linedefs;
00089 WAD_ENTITY *Sidedefs;
00090 WAD_ENTITY *Vertexes;
00091 WAD_ENTITY *Segs;
00092 WAD_ENTITY *Ssectors;
00093 WAD_ENTITY *Nodes;
00094 WAD_ENTITY *Sectors;
00095 WAD_ENTITY *Reject;
00096 WAD_ENTITY *Blockmap;
00097
00098 WAD_LEVEL(char *n);
00099 void cargue(FILE *fd);
00100 ~WAD_LEVEL();
00101 };
00102
00103 class WAD_TEXTURE_DATA {
00104 public:
00105 char name[9];
00106 WORD width;
00107 WORD height;
00108
00109 int num_trocitos;
00110 WORD *X_offsets;
00111 WORD *Y_offsets;
00112 WORD *Pname_indexes;
00113 };
00114
00115 class WAD_DATABASE {
00116 private:
00117 char *nombre_de_archivo;
00118 char wadid_cad[5];
00119 WORD num_entidades;
00120 DWORD ignorados;
00121 DWORD etiquetas;
00122 LISTA<WAD_ENTITY *> tablas_pname;
00123 LISTA<WAD_ENTITY *> texturas;
00124
00125 public:
00126 LISTA<WAD_ENTITY *> imagenes;
00127 LISTA<WAD_ENTITY *> flats;
00128 LISTA<WAD_ENTITY *> paletas;
00129 LISTA<WAD_ENTITY *> sonidos;
00130 LISTA<WAD_ENTITY *> efectos_speaker;
00131 LISTA<WAD_ENTITY *> secuencias_midi;
00132 LISTA<WAD_TEXTURE_DATA *> datos_texturas;
00133 LISTA<WAD_LEVEL *> niveles;
00134 LISTA<char *> tabla_pname;
00135 int tipo_de_wad;
00136 FILE *fd;
00137
00138 WAD_DATABASE(char *file);
00139 ~WAD_DATABASE();
00140 void imprima(void);
00141 BOOLEAN localice_imagen(int busqueda);
00142 BOOLEAN localice_flat(int busqueda);
00143 BOOLEAN localice_flat_por_nombre(char *nombre);
00144 BOOLEAN localice_imagen_por_nombre(char *nombre);
00145 BOOLEAN localice_textura_por_nombre(char *nombre, int *X_tam, int *Y_tam,
00146 int *Num_trozos, int **ARr_x, int **ARr_y, int **ARr_i);
00147 BOOLEAN localice_sonido(int busqueda);
00148 void localice_paleta(int busqueda);
00149
00150 friend void draw_callback(void);
00151 };
00152
00153 #endif
00154
00155
00156
00157