00001 /* 00002 * story.h 00003 * 00004 * Copyright (C) 2008,2009 Thomas A. Vaughan 00005 * All rights reserved. 00006 * 00007 * 00008 * Redistribution and use in source and binary forms, with or without 00009 * modification, are permitted provided that the following conditions are met: 00010 * * Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * * Redistributions in binary form must reproduce the above copyright 00013 * notice, this list of conditions and the following disclaimer in the 00014 * documentation and/or other materials provided with the distribution. 00015 * * Neither the name of the <organization> nor the 00016 * names of its contributors may be used to endorse or promote products 00017 * derived from this software without specific prior written permission. 00018 * 00019 * THIS SOFTWARE IS PROVIDED BY THOMAS A. VAUGHAN ''AS IS'' AND ANY 00020 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00021 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00022 * DISCLAIMED. IN NO EVENT SHALL THOMAS A. VAUGHAN BE LIABLE FOR ANY 00023 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00024 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00025 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00026 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00028 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00029 * 00030 * 00031 */ 00032 00033 #ifndef AESOP_STORY_H__ 00034 #define AESOP_STORY_H__ 00035 00036 // includes -------------------------------------------------------------------- 00037 #include "common/common.h" 00038 #include "i18n/i18n.h" 00039 #include "threadsafe/smart_ptr.h" 00040 00041 00042 // forward decl 00043 class Datahash; 00044 00045 namespace story { 00046 00060 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 class Story { 00092 public: 00093 // virtual destructor -------------------------------------------------- 00094 virtual ~Story(void) throw(); 00095 00096 // story::Story class interface methods -------------------------------- 00097 00099 virtual const char * getUuid(void) const throw() = 0; 00100 00102 virtual const char * getTitle(void) const throw() = 0; 00103 00105 virtual const char * getStartingMapId(void) const throw() = 0; 00106 00112 virtual std::string getObjectPath(IN const char * objectType, 00113 IN const char * objectId) const = 0; 00114 00117 virtual smart_ptr<i18n::Manager> getI18nManager(IN const char * path) = 0; 00118 00119 // static factory methods ---------------------------------------------- 00120 static smart_ptr<Story> create(IN const char * locale, 00121 IN const char * story_dir); 00122 }; 00123 00124 00125 }; // story namespace 00126 00127 #endif // AESOP_STORY_H__ 00128