public GameCharacter ReferenceCharacterById(int CharacterId, IALFADatabase Database, bool? InitialDMState)
{
//
// Check if the object is already known first.
//
GameCharacter Character = (from C in Characters
where C.CharacterId == CharacterId
select C).FirstOrDefault();
if (Character != null)
return Character;
//
// Need to pull the data from the database.
//
if (Database == null)
return null;
int ServerId;
Database.ACR_SQLQuery(String.Format(
"SELECT `Name`, `PlayerID`, `IsOnline`, `ServerID`, `Location` FROM `characters` WHERE `ID` = {0}",
CharacterId));
if (!Database.ACR_SQLFetch())
return null;
Character = new GameCharacter(this);
Character.CharacterName = Database.ACR_SQLGetData(0);
Character.CharacterId = CharacterId;
Character.PlayerId = Convert.ToInt32(Database.ACR_SQLGetData(1));
Character.Online = ConvertToBoolean(Database.ACR_SQLGetData(2));
ServerId = Convert.ToInt32(Database.ACR_SQLGetData(3));
Character.LocationString = Database.ACR_SQLGetData(4);
InsertNewCharacter(Character, ServerId, Database, InitialDMState);
return Character;
}