//
//  KGPlayer.h
//  KakaoGame SDK
//
//  Created by Ronaldo Kim on 2016. 9. 19..
//  Copyright (c) 2016. Kakao Corp. All rights reserved.
//

#import <KakaoGame/KGIdpProfile.h>

/**
 * @brief KGPlayer클래스는 플레이어의 정보를 다룬다.
 */
@interface KGPlayer : KGObject

/**
 * @brief 플레이어 아이디.(읽기만 가능)
 */
@property (atomic, readonly) NSString*      playerId;

/**
 * @brief IDP 프로필 정보.
 */
@property (atomic, readonly) KGIdpProfile*  idpProfile;

/**
 * @brief 커스톰 속성 데이터.
 */
@property (atomic, readonly) NSDictionary*  customProperties;

/**
 * @brief 플레이어 온라인상태
 */
@property (atomic, readonly) BOOL isOnline;

/**
 * @brief 커스텀 속성 키에 해당하는 설정 값을 반환한다.
 *
 * @param aKey 커스텀 속성 키.
 *
 * @return 키에 설정된 값.
 */
- (NSString *)customPropertyForKey:(NSString *)aKey;

/**
 * @brief 현재 앱을 플레이한 친구(내가 인증한 IDP의 친구)들의 플레이어 정보 목록을 조회한다.
 *
 * @param completionHandler 완료 핸들러 [error:조회 결과][players:플레이어 정보(KGPlayer) 목록].
 */
+ (void)loadFriendPlayersWithCompletionHandler:(void(^)(NSError *error, NSArray *players))completionHandler;

/**
 * @brief 요청한 플레이어아이디들의 플레이어 정보 목록을 조회한다.
 *
 * @param playerIds 플레이어 아이디 목록.
 *
 * @param completionHandler 완료 핸들러 [error:조회 결과][players:플레이어 아이디(키) / 플레이어(KGPlayer) 정보(밸류) 목록]. (해당 API를 사용 시, 결과내 KGPlayer 객체 내부의 idpProfile 객체는 null.)
 */
+ (void)loadPlayersWithPlayerIds:(NSArray *)playerIds
               completionHandler:(void(^)(NSError *error, NSDictionary *players))completionHandler;

/**
 * @brief
 *
 * @param completionHandler 완료 핸들러 [error:약관 설정 결과][enable:개인화 광고약관 설정 여부].
 */
+ (void)isEnablePersonalizedAdsWithCompletionHandler:(void(^)(NSError *error, BOOL enable))completionHandler;

/**
 * @brief
 *
 * @param enable
 * @param completionHandler 완료 핸들러 [error:약관 설정 결과].
 */
+ (void)enablePersonalizedAdsWithEnable:(BOOL)enable completionHandler:(void(^)(NSError *error))completionHandler;

@end
