DOOM-3-BFG

DOOM 3 BFG Edition
Log | Files | Refs

DeclPDA.h (6193B)


      1 /*
      2 ===========================================================================
      3 
      4 Doom 3 BFG Edition GPL Source Code
      5 Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. 
      6 
      7 This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").  
      8 
      9 Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify
     10 it under the terms of the GNU General Public License as published by
     11 the Free Software Foundation, either version 3 of the License, or
     12 (at your option) any later version.
     13 
     14 Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful,
     15 but WITHOUT ANY WARRANTY; without even the implied warranty of
     16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17 GNU General Public License for more details.
     18 
     19 You should have received a copy of the GNU General Public License
     20 along with Doom 3 BFG Edition Source Code.  If not, see <http://www.gnu.org/licenses/>.
     21 
     22 In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code.  If not, please request a copy in writing from id Software at the address below.
     23 
     24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
     25 
     26 ===========================================================================
     27 */
     28 
     29 #ifndef __DECLPDA_H__
     30 #define __DECLPDA_H__
     31 
     32 /*
     33 ===============================================================================
     34 
     35 	idDeclPDA
     36 
     37 ===============================================================================
     38 */
     39 
     40 
     41 class idDeclEmail : public idDecl {
     42 public:
     43 							idDeclEmail() {}
     44 
     45 	virtual size_t			Size() const;
     46 	virtual const char *	DefaultDefinition() const;
     47 	virtual bool			Parse( const char *text, const int textLength, bool allowBinaryVersion );
     48 	virtual void			FreeData();
     49 	virtual void			Print() const;
     50 	virtual void			List() const;
     51 
     52 	const char *			GetFrom() const { return from; }
     53 	const char *			GetBody() const { return text; }
     54 	const char *			GetSubject() const { return subject; }
     55 	const char *			GetDate() const { return date; }
     56 	const char *			GetTo() const { return to; }
     57 
     58 private:
     59 	idStr					text;
     60 	idStr					subject;
     61 	idStr					date;
     62 	idStr					to;
     63 	idStr					from;
     64 };
     65 
     66 
     67 class idDeclVideo : public idDecl {
     68 public:
     69 							idDeclVideo() : preview( NULL ), video( NULL ), audio( NULL ) {};
     70 
     71 	virtual size_t			Size() const;
     72 	virtual const char *	DefaultDefinition() const;
     73 	virtual bool			Parse( const char *text, const int textLength, bool allowBinaryVersion );
     74 	virtual void			FreeData();
     75 	virtual void			Print() const;
     76 	virtual void			List() const;
     77 
     78 	const idMaterial *		GetRoq() const { return video; }
     79 	const idSoundShader *	GetWave() const { return audio; }
     80 	const char *			GetVideoName() const { return videoName; }
     81 	const char *			GetInfo() const { return info; }
     82 	const idMaterial *		GetPreview() const { return preview; }
     83 
     84 private:
     85 	const idMaterial *		preview;
     86 	const idMaterial *		video;
     87 	idStr					videoName;
     88 	idStr					info;
     89 	const idSoundShader *	audio;
     90 };
     91 
     92 
     93 class idDeclAudio : public idDecl {
     94 public:
     95 							idDeclAudio() : audio( NULL ) {};
     96 
     97 	virtual size_t			Size() const;
     98 	virtual const char *	DefaultDefinition() const;
     99 	virtual bool			Parse( const char *text, const int textLength, bool allowBinaryVersion );
    100 	virtual void			FreeData();
    101 	virtual void			Print() const;
    102 	virtual void			List() const;
    103 
    104 	const char *			GetAudioName() const { return audioName; }
    105 	const idSoundShader *	GetWave() const { return audio; }
    106 	const char *			GetInfo() const { return info; }
    107 
    108 private:
    109 	const idSoundShader *	audio;
    110 	idStr					audioName;
    111 	idStr					info;
    112 };
    113 
    114 class idDeclPDA : public idDecl {
    115 public:
    116 							idDeclPDA() { originalEmails = originalVideos = 0; };
    117 
    118 	virtual size_t			Size() const;
    119 	virtual const char *	DefaultDefinition() const;
    120 	virtual bool			Parse( const char *text, const int textLength, bool allowBinaryVersion );
    121 	virtual void			FreeData();
    122 	virtual void			Print() const;
    123 	virtual void			List() const;
    124 
    125 	virtual void			AddVideo( const idDeclVideo * video, bool unique = true ) const { if ( unique ) { videos.AddUnique( video ); } else { videos.Append( video ); } }
    126 	virtual void			AddAudio( const idDeclAudio * audio, bool unique = true ) const { if ( unique ) { audios.AddUnique( audio ); } else { audios.Append( audio ); } }
    127 	virtual void			AddEmail( const idDeclEmail * email, bool unique = true ) const { if ( unique ) { emails.AddUnique( email ); } else { emails.Append( email ); } }
    128 	virtual void			RemoveAddedEmailsAndVideos() const;
    129 
    130 	virtual const int		GetNumVideos() const { return videos.Num(); }
    131 	virtual const int		GetNumAudios() const { return audios.Num(); }
    132 	virtual const int		GetNumEmails() const { return emails.Num(); }
    133 	virtual const idDeclVideo *GetVideoByIndex( int index ) const { return ( index < 0 || index > videos.Num() ? NULL : videos[index] ); }
    134 	virtual const idDeclAudio *GetAudioByIndex( int index ) const { return ( index < 0 || index > audios.Num() ? NULL : audios[index] ); }
    135 	virtual const idDeclEmail *GetEmailByIndex( int index ) const { return ( index < 0 || index > emails.Num() ? NULL : emails[index] ); }
    136 
    137 	virtual void			SetSecurity( const char *sec ) const;
    138 
    139 	const char *			GetPdaName() const { return pdaName; }
    140 	const char *			GetSecurity() const {return security; }
    141 	const char *			GetFullName() const { return fullName; }
    142 	const char *			GetIcon() const { return icon; }
    143 	const char *			GetPost() const { return post; }
    144 	const char *			GetID() const { return id; }
    145 	const char *			GetTitle() const { return title; }
    146 
    147 private:
    148 	mutable idList<const idDeclVideo *>	videos;
    149 	mutable idList<const idDeclAudio *>	audios;
    150 	mutable idList<const idDeclEmail *>	emails;
    151 	idStr					pdaName;
    152 	idStr					fullName;
    153 	idStr					icon;
    154 	idStr					id;
    155 	idStr					post;
    156 	idStr					title;
    157 	mutable idStr			security;
    158 	mutable	int				originalEmails;
    159 	mutable int				originalVideos;
    160 };
    161 
    162 #endif /* !__DECLPDA_H__ */