Пример #1
0
    /// <summary>
    /// Load game state.
    /// </summary>
    /// <param name="gameState">current state of the game</param>
    /// <param name="gameStateId">saved game identifier</param>
    /// <param name="sceneId">current scene identifier</param>
    /// <param name="playerId">player identifier</param>
    /// <returns></returns>
    public CharacterModel LoadGameState(ExtendedGameState gameState, string gameStateId, string sceneId, string playerId)
    {
        var charactersDto = _connection.Table <CharacterStateDTO>()
                            .Where(c => c.GameStateId == gameStateId && c.SceneId == sceneId);

        CharacterModel player = null;

        foreach (var itemDto in charactersDto)
        {
            var inventoryDto = _connection.Table <InventoryDTO>()
                               .Where(i => i.InventoryId == itemDto.InventoryId)
                               .FirstOrDefault();

            // todo: load loot itmes for current inventory

            var character = itemDto.ConvertToModel <CharacterModel>(
                inventoryDto.ConvertToModel <InventoryModel>());

            gameState.AddCharacter(character);

            if (character.Id == playerId)
            {
                player = character;
            }
        }

        return(player);
    }
Пример #2
0
    /// <summary>
    /// Save game state.
    /// </summary>
    /// <param name="login">authenticated user login</param>
    /// <param name="sceneId">active scene identifier</param>
    /// <param name="player">player state</param>
    /// <param name="extGameState">game state</param>
    /// <returns></returns>
    public void SaveGame(string login, string sceneId, CharacterModel player, ExtendedGameState extGameState)
    {
        // Create game safe point
        var created   = DateTime.UtcNow;
        var gameState = new GameStateModel(
            Guid.NewGuid().ToString(),
            login,
            sceneId,
            string.Format("Save for {0} at {1}", login, created.ToLocalTime()),
            created);
        var gameStateDto = gameState.ConvertToDTO <GameStateDTO>();

        // Create main character safe point state
        var gameStateCharacterDto =
            player.ConvertToDTO <CharacterStateDTO>(gameStateDto.GameStateId);

        // todo: save all objects to Database in transaction
        _connection.Insert(gameStateDto);
        _connection.Insert(gameStateCharacterDto);

        // todo: process extGameState saving
    }
Пример #3
0
 /// <summary>
 /// Protected consructor for Singleton behaviour.
 /// </summary>
 protected GameStateManager()
 {
     extendedGameState = new ExtendedGameState();
 }