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__ */