/* * Arcanum Editor - ROM area editor * Copyright (C) 1999 Lucas Wall <kthulhu@usa.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * * If you make changes to the source and want to make the public you can * mail the diferences to me <kthulhu@usa.net> and I'll add them to the * main distribution. Of course your name will be added to the program with * information about the changes you made. * * * Packed on Thu Aug 19 03:02:13 1999 * */ /* * File: Tables.h * * Changes: * * 19/08/99 Lucas Wall <kthulhu@usa.net> * First source release. Its quite messy and has no * comments. I never planed to release the source code... :-) * */ // Tables.h: interface for the CTables class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_TABLES_H__0CB98C74_FE93_11D2_803D_00002168229C__INCLUDED_) #define AFX_TABLES_H__0CB98C74_FE93_11D2_803D_00002168229C__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "MobFlags.h" #define TABLE_NEW 0 #define TABLE_SPELLS 1 #define TABLE_WEAPON_CLASES 2 #define TABLE_LIQUIDS 3 #define TABLE_ATTACK_TYPES 4 #define TABLE_EXIT_FLAGS 5 #define TABLE_PORTAL_FLAGS 6 #define GET_HI(a) (((a) & 0xFFF000) / 0x1000) #define GET_LO(a) ((a) & 0xFFF) #define MAKE_NUM(a, b) ((((a) & 0xFFF) * 0x1000) + ((b) & 0xFFF)) #define MUD_ARCANUM 1 #define MUD_ROMDEFAULT 2 #define MUD_ROMOLC 3 class CNumStrData { public: int m_num; CString m_text, m_show; CNumStrData(); virtual ~CNumStrData(); const CNumStrData& operator=( const CNumStrData &data ); }; /* Tipos de valores de objetos: I numero (numero) S string (string) F flags (flags) W palabra (palabra) L lista de palabras fijas (palabra) U lista de palabras almacenadas como numeros (numero) O lista de palabras con palabras alternativas (palabra) N nada (numero) M dos numeros (numero) A flags (numero) B si o no (numero) D numero (flags) E si o no (flags) */ class CObjVData { public: char m_type; CString m_text; CArray< CNumStrData*, CNumStrData* > m_table; int m_fixedtable; CObjVData(); virtual ~CObjVData(); }; class CObjTypeData { public: int m_num; CString m_text; CObjVData m_value[5]; CObjTypeData(); virtual ~CObjTypeData(); }; class CColorData { public: int m_num, m_r, m_g, m_b; CColorData(); virtual ~CColorData(); }; class CTables { public: int m_isdoor, m_locked; int m_mudtype, m_mobprog; CArray< CNumStrData*, CNumStrData* > m_sectortypes; CArray< CNumStrData*, CNumStrData* > m_roomflags; CArray< CNumStrData*, CNumStrData* > m_exitflags; CArray< CObjTypeData*, CObjTypeData* > m_objtypes; CArray< CNumStrData*, CNumStrData* > m_extra_flags; CArray< CNumStrData*, CNumStrData* > m_wear_flags; CArray< CNumStrData*, CNumStrData* > m_spells; CArray< CNumStrData*, CNumStrData* > m_liquids; CArray< CNumStrData*, CNumStrData* > m_weapon_clases; CArray< CNumStrData*, CNumStrData* > m_attack_types; CArray< CNumStrData*, CNumStrData* > m_portal_flags; CArray< CNumStrData*, CNumStrData* > m_affect_flags; CArray< CNumStrData*, CNumStrData* > m_affect_location; CArray< CNumStrData*, CNumStrData* > m_imm_flags; CArray< CNumStrData*, CNumStrData* > m_mercmsg; CArray< CMobFlags*, CMobFlags* > m_mobflags; CArray< CNumStrData*, CNumStrData* > m_act_flags; CArray< CNumStrData*, CNumStrData* > m_off_flags; CArray< CNumStrData*, CNumStrData* > m_form_flags; CArray< CNumStrData*, CNumStrData* > m_parts_flags; CArray< CNumStrData*, CNumStrData* > m_sex; CArray< CNumStrData*, CNumStrData* > m_size; CArray< CNumStrData*, CNumStrData* > m_pos; CArray< CNumStrData*, CNumStrData* > m_mobprog_trigs; CArray< CNumStrData*, CNumStrData* > m_skills; CArray< CNumStrData*, CNumStrData* > m_train_flags; CArray< CNumStrData*, CNumStrData* > m_wearpos; CArray< CNumStrData*, CNumStrData* > m_dirname; CArray< CNumStrData*, CNumStrData* > m_recuname; CArray< CColorData*, CColorData* > m_sector_colors; CArray< CNumStrData*, CNumStrData* > m_aff_to; CArray< CNumStrData*, CNumStrData* > m_classes; int load_data( char *fname, int *line ); int load_sectortypes( CArchive &ar ); int load_flags( CArchive &ar, CArray< CNumStrData*, CNumStrData* > &flaglist ); int load_objtypes( CArchive &ar ); int load_numlist( CArchive &ar, CArray< CNumStrData*, CNumStrData* > &flaglist ); int load_mobflags( CArchive &ar ); int load_strlist( CArchive &ar, CArray< CNumStrData*, CNumStrData* > &flaglist ); int load_colorlist( CArchive &ar, CArray< CColorData*, CColorData* > &colorlist ); int load_objtables( CArchive &ar ); int load_general( CArchive &ar ); CArray< CNumStrData*, CNumStrData* > *get_table( int objtype, int value ); CTables(); virtual ~CTables(); }; extern void AFXAPI DestructElements <CNumStrData*> ( CNumStrData** pElements, int nCount ); extern void AFXAPI DestructElements <CObjTypeData*> ( CObjTypeData** pElements, int nCount ); extern void AFXAPI DestructElements <CColorData*> ( CColorData** pElements, int nCount ); #endif // !defined(AFX_TABLES_H__0CB98C74_FE93_11D2_803D_00002168229C__INCLUDED_)