Exemple #1
0
        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);
        }
Exemple #2
0
 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);
 }
Exemple #3
0
 public bool SelectCharacter(string gameRefId, string characterId, out DbPlayerCharactersObject playerObject)
 {
     return(mCache.SelectCharacter(gameRefId, characterId, out playerObject));
 }
Exemple #4
0
 public bool TryGetPlayer(string gameRefId, out DbPlayerCharactersObject player)
 {
     return(mCache.TryGetPlayerCharactersObject(gameRefId, out player));
 }
Exemple #5
0
        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));
        }