Show EmpireDoc.txt syntax highlighted
/**
\page overview Overview
\section mod_overview Overview
The purpose of the Empire module is to manage information related to the overall
state of each Empire in a FreeOrion game. Information handled by the Empire module
will include:
- All planets, and fleets that are owned by the Empire.
- Entries currently in the empire's sitrep
- An empire's accumulated research, and a set of
all technological advancements they currently possess.
- A list of star systems the empire has explored.
And, In later revisions:
- racial advantages
- diplomatic status
- whatever else they decide to make us add... :)
The Empire module is also responsible for managing "global" data such as
- the technology database (a set of all possible technological advancements),
- ship designs (in future revisions)
\section classes Major Classes
The Empire class will be the most fundamental class to the empire module. It encapsulates
the state of a single empire at any point during the game. Empires are created and managed
by EmpireManager objects. Other modules which need to manipulate Empire objects must
first obtain a pointer to the object from an EmpireManager.
Other FreeOrion modules will interact with the Empire module through the EmpireManager class
(actually, through one of the subclasses of EmpireManager, ServerEmpire and ClientEmpire).
EmpireManager is the base class for the manager, and supports methods for
iterating across the set of empires, and obtaining pointers to empires based
on their unique numeric ID (which is supplied by ServerEmpire at the time
the empire is created).
ServerEmpire is the server version of the empire manager, and supports methods
for creating new empires, and generating XML updates for transmission to
clients between turns. (These updates contain a set of changes which the
client must make to itself to keep it in sync with the server).
ClientEmpire is the client version of the empire manager, and supports methods
for handling the updates which ServerEmpire generates.
A similar object manager pattern is used for technology items.
The TechLevel class is used to represent a particular technological advancement (such as a new ship type), and it is created and managed by a TechManager
object.
The TechManager represents a technology database, and supports methods to create
TechLevels from an external file, and lookup TechLevels based on their numeric
identifier. For Version 0.1, the TechManager creates hardcoded TechLevels, but in later versions it will load an external file to obtain the set of technologies which exist in the game.
*/
/**
\page history Revision History
\section doc Documentation Revisions
- 5-15-2003 Initial posting of code and documentation.
- 5-15-2003 Added DoxyGen groups to header files.
- 5-26-2003 Cleaned up some of the method documentation so its easier to read and more descriptive.
(there is still much to be done)
Added links to important external documents.
- 6-23-2003 Documentation update/cleanup.
\section code Code Revisions
- 5-26-2003 Initial Code Release Committed to CVS
- 6-23-2003 Nearly all methods implemented and partially tested.
EmpireManager::UpdateEmpireStatus() changed so it does not create empires.
THIS IS NOT REFLECTED IN THE IDS!!!
- 6-29-2003 Removed Sitrep Update methods from Empire managers. Sitrep is now
transmitted each turn with the empire update.
Added list of ship designs to Empire class.
Added overload to Empire::XMLEncode() method which encodes an
empire from the perspective of another. (Used for turn updates
to transmit info which the client has access to).
- 7-12-2003 Changed the empire update methods, removed the diffing and merging
since this is now being done in a centralized place. Added
fleet ID ranges to the empire object.
*/
/**
\page docs Documentation
External documents will be linked here.
\section gen General
\htmlonly
<a href="http://www.freeorion.org/index.php?module=Static_Docs&type=user&func=view&f=programming/codestandards.html">
FreeOrion Coding Standards
</a>
\endhtmlonly
\section 01 Version
\htmlonly
<a href="http://us.f1.yahoofs.com/users/f7aaeadc/bc/freeorion/FreeOrion+Interface+Design+Specification.htm?bcw1o0.A.Y.mmjpn">
Version 0.1 Interface Specification
</a>
<br>
<a href="http://us.f1.yahoofs.com/users/f7aaeadc/bc/freeorion/FreeOrion+HLD+html.htm?bc2swk.AjWGzpqCp">
Version 0.1 High Level Design
</a>
\endhtmlonly
*/
/**
\page tools Build Instructions
The standard FreeOrion toolset is required to build the Empire module.
This includes the following:
- The gcc compiler, version 3.0 or higher
- Expat 1.95.5
- Boost 1.30.0
- log4cpp 0.2.7
- any others I may have missed. (Please jump in people)
It is also assumed that the build environment is set up with the same
lib/include paths as the Makefiles and .dev files in the FreeOrion CVS repository.
*/
/**
\page issues Problems and Open Issues
\section statics Static Members
There is a const string EmpireManager::EMPIRE_UPDATE_TAG, which is a static member of
class EmpireManager. This string is used in the ClientEmpireManager constructor,
and has caused access violations in my tests, in cases where a ClientEmpireManager
is declared as a static object.
To avoid this problem, empire managers should be declared as stack or heap
dynamic objects to ensure that all static members are initialized prior to their creation.
The EmpireManager::UpdateEmpireStatus() method does not work as described in tbe IDS.
(It will not create new Empires).
*/
/** \mainpage Empire Documentation
- \ref overview
- \ref history
- \ref docs
- \ref tools
- \ref issues
This is the central documentation nexus for the Empire Module. The Empire module
is a component of the FreeOrion project (see http://www.FreeOrion.org ).
Documentation and updates of interest to the Empire team will be posted here.
I'm sorry there are so many annoying Empire hyperlinks, but I can't figure
out how to get Doxygen to not make links unless I use that verbatim thingie
and that makes things ugly.
*/
See more files for this project here