public DbPlayerCharactersObject GetPlayerCharactersObject(string gameRefId, string login) { DbPlayerCharactersObject cachedObject; if (mCache.TryGetChangedPlayerCharactersObject(gameRefId, out cachedObject)) { mApplication.DB.Save(cachedObject); } //red object from database var objectFromDatabase = mApplication.DB.Get(gameRefId); //if not exists, create new and save at database if (objectFromDatabase == null) { objectFromDatabase = new DbPlayerCharactersObject() { Characters = new List <DbPlayerCharacter>(), Login = login.ToLower(), GameRefId = gameRefId, SelectedCharacterId = string.Empty }; mApplication.DB.Save(objectFromDatabase); } //update in work collection mCache.SetPlayerCharactersObject(gameRefId, objectFromDatabase, false); //return object return(objectFromDatabase); }
public bool DeleteCharacter(string gameRefId, string characterId, out DbPlayerCharactersObject playerCharactersObject) { playerCharactersObject = null; if (mCache.RemovePlayerCharacter(gameRefId, characterId)) { if (mCache.TryGetPlayerCharactersObject(gameRefId, out playerCharactersObject)) { DeleteCharacterInfo(characterId); return(true); } } return(false); }
public bool SelectCharacter(string gameRefId, string characterId, out DbPlayerCharactersObject playerObject) { return(mCache.SelectCharacter(gameRefId, characterId, out playerObject)); }
public bool TryGetPlayer(string gameRefId, out DbPlayerCharactersObject player) { return(mCache.TryGetPlayerCharactersObject(gameRefId, out player)); }
public OperationResponse CreateCharacter( OperationRequest operationRequest, SendParameters sendParameters, string gameRefId, string name, Race race, Workshop workshop, int icon, out DbPlayerCharactersObject playerObject) { playerObject = null; if (false == mCache.TryGetPlayerCharactersObject(gameRefId, out playerObject)) { return(new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.Fatal, DebugMessage = "Error of retrieving cached player characters object" }); } if (playerObject.Characters.Count >= SelectCharacterSettings.Default.MaxPlayerCharactersCount) { return(new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.Fatal, DebugMessage = "Player already has maximum count of characters" }); } if (AlreadyExists(name)) { return(new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.NameAlreadyExists, DebugMessage = name }); } var startModules = mApplication.StartModules.StartModuleFor(race, workshop); if (startModules == null || startModules.Count != 5) { return(new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.Fatal, DebugMessage = "Error of getting start modules for character" }); } var newCharacter = playerObject.AddCharacter(name, (int)race, (int)workshop, startModules, icon); CreateCharacterInfo(newCharacter.CharacterId, newCharacter.Name); mCache.SetChanged(gameRefId, true); CreateCharacterOperationResponse responseObject = new CreateCharacterOperationResponse { CharacterId = newCharacter.CharacterId, Characters = playerObject.GetInfo() }; return(new OperationResponse(operationRequest.OperationCode, responseObject)); }