//
// Created by Dan Crosby on 3/23/20.
//

#ifndef EAGLE0_GAMESTATEFILTER_HPP
#define EAGLE0_GAMESTATEFILTER_HPP

#include "src/main/cpp/net/eagle0/shardok/library/ShardokCTypes.h"
#include "src/main/cpp/net/eagle0/shardok/library/settings/GameSettings.hpp"
#include "src/main/flatbuffer/net/eagle0/shardok/storage/game_state.hpp"
#include "src/main/protobuf/net/eagle0/shardok/api/game_state_view.pb.h"

namespace shardok {

using GameState = net::eagle0::shardok::storage::fb::GameState;

[[nodiscard]] auto GameStateFilteredForPlayer(
        const SettingsGetter& settings,
        const GameState* gameState,
        PlayerId askingPlayer) -> net::eagle0::shardok::api::GameStateView;

}  // namespace shardok

#endif  // EAGLE0_GAMESTATEFILTER_HPP
