public GameCharacter ReferenceCharacterByName(string CharacterName, IALFADatabase Database)
{
//
// Check if the object is already known first.
//
GameCharacter Character = (from C in Characters
where C.CharacterName.Equals(CharacterName, StringComparison.InvariantCultureIgnoreCase)
orderby C.Online descending
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 `ID`, `PlayerID`, `IsOnline`, `ServerID`, `Name`, `Location` FROM `characters` WHERE `Name` = '{0}' AND `IsDeleted` = 0 AND `IsPlayable` = 1 ORDER BY `ID` ASC ",
Database.ACR_SQLEncodeSpecialChars(CharacterName)));
if (!Database.ACR_SQLFetch())
return null;
Character = new GameCharacter(this);
Character.CharacterId = Convert.ToInt32(Database.ACR_SQLGetData(0));
Character.PlayerId = Convert.ToInt32(Database.ACR_SQLGetData(1));
Character.Online = ConvertToBoolean(Database.ACR_SQLGetData(2));
ServerId = Convert.ToInt32(Database.ACR_SQLGetData(3));
Character.CharacterName = Database.ACR_SQLGetData(4);
Character.LocationString = Database.ACR_SQLGetData(5);
InsertNewCharacter(Character, ServerId, Database, null);
return Character;
}