1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: friends_Api.h 4 5 Copyright 2009 Nintendo. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 33065 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FRIENDS_CTR_FRIENDS_API_H_ 17 #define NN_FRIENDS_CTR_FRIENDS_API_H_ 18 19 /*! @file 20 @brief フレンド・プレゼンス機能に関する API の宣言 21 */ 22 23 #include <nn/types.h> 24 25 #include <nn/friends/friends_Result.h> 26 #include <nn/friends/CTR/friends_Types.h> 27 28 #include <nn/uds/CTR/uds_Type.h> 29 30 #ifdef __cplusplus 31 32 namespace nn { 33 namespace friends { 34 namespace CTR { 35 36 namespace detail 37 { 38 // ライブラリの初期化・終了 39 Result Initialize(); 40 Result Finalize(); 41 42 // ライブラリ状態確認 43 bool IsInitialized(); 44 bool HasLoggedIn(); 45 46 // 接続管理 47 Result Login( os::Event* pEvent ); 48 Result Logout(); 49 50 // 自分情報取得(ローカル) 51 PrincipalId GetMyPrincipalId(); 52 Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ); 53 Result GetMyProfile( Profile* pProfile ); 54 Result GetMyPresence( MyPresence* pMyPresence ); 55 Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ); 56 Result GetMyMii( MiiData* pMiiData ); 57 58 // 友達情報取得 59 Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset, size_t size ); 60 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size ); 61 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size ); 62 Result GetFriendScreenName( char16 (*pScreenNameList)[SCREEN_NAME_SIZE], const FriendKey* pFriendKeyList, size_t size, bool replaceForeignCharacters, u8* pFontRegionList ); 63 Result GetFriendScreenName( char16 (*pScreenNameList)[SCREEN_NAME_SIZE], const PrincipalId* pPrincipalIdList, size_t size, bool replaceForeignCharacters, u8* pFontRegionList ); 64 Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size ); 65 Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size ); 66 Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size ); 67 Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size ); 68 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size ); 69 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size ); 70 Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size ); 71 72 // 自分情報更新 73 Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ); 74 75 // 通知内容取得 76 Result AttachToEventNotification( nn::os::Event* pEvent ); 77 Result SetNotificationMask( bit32 mask ); 78 u32 GetEventNotification( EventNotification* pEventNotificationList, size_t size, bool* pHasOverflowed ); 79 Result GetLastResponseResult(); 80 81 // エラーコード取得 82 u32 ResultToErrorCode( const Result& result ); 83 } 84 85 namespace 86 { 87 static const char PORT_NAME_USER[] = "frd:u"; 88 } 89 90 /*------------------------------------------------------------------- 91 ライブラリの初期化/終了 92 -------------------------------------------------------------------*/ 93 94 /*! 95 @brief フレンド・プレゼンスライブラリの初期化を行い、プレゼンス機能を使用可能な状態にします。 96 97 @return 処理の結果が返ってきます。<BR> 98 */ 99 Result Initialize(); Initialize()100 inline Result Initialize() 101 { 102 return detail::Initialize(); 103 } 104 105 /*! 106 @brief フレンド・プレゼンスライブラリを終了します。 107 108 複数回 @ref nn::friends::CTR::Initialize 関数を呼んだ場合、この関数も同じ回数呼ぶ必要があります。 109 110 @return 処理の結果が返ってきます。<BR> 111 */ 112 Result Finalize(); Finalize()113 inline Result Finalize() 114 { 115 return detail::Finalize(); 116 } 117 118 /*! 119 @brief フレンド・プレゼンスライブラリが初期化済みか否かを確認します。 120 121 @return フレンド・プレゼンスライブラリが初期化済みであれば true 、未初期化であれば false が返ってきます。 122 */ 123 bool IsInitialized(); IsInitialized()124 inline bool IsInitialized() 125 { 126 return detail::IsInitialized(); 127 } 128 129 /*! 130 @brief 自分のログイン状態を確認します。 131 132 自分が @ref nn::friends::CTR::Login 関数を呼んだ上でオンライン状態になっているかを確認します。 133 134 @return 自分がログイン中であれば true 、ログインしていなければ false が返ってきます。 135 この関数の結果が true であれば必ずオンライン状態ですが、結果が false であってもオフライン状態とは限りません。 136 */ 137 bool HasLoggedIn(); HasLoggedIn()138 inline bool HasLoggedIn() 139 { 140 return detail::HasLoggedIn(); 141 } 142 143 /*! 144 @brief サーバへのログインを要求します。 145 146 この関数が成功で返った場合は非同期処理が発生し、非同期処理が完了した時点で引数に指定した @ref nn::os::Event がシグナルされます。 147 非同期処理の結果は @ref nn::friends::CTR::GetLastResponseResult で取得できます。 148 この関数が失敗で返った場合は、非同期処理が発生することはありません。<BR> 149 <BR> 150 この関数を呼ぶには、事前に @ref nn::ac::Connect 関数を呼んで AP との接続を確立しておく必要があります。 151 AP との接続を確立せずに呼んだ場合は @ref nn::friends::ResultAcNotConnected を返します。<BR> 152 <BR> 153 バックグラウンドでサーバからの切断処理が走っていた場合、この関数は一時的に @ref nn::friends::ResultTemporarilyBusy を返します。 154 その場合は比較的短時間が経過した後に再試行することで成功する可能性があります。<BR> 155 <BR> 156 すでにログインしている状態でコールしても成功します。その場合、非同期処理は瞬時に成功で完了します。<BR> 157 <BR> 158 非同期処理が成功した場合、必ずオンライン状態になります。 159 160 @param[in] pEvent 非同期処理の完了を通知する @ref nn::os::Event へのポインタを指定します。事前に @ref nn::os::Event::Initialize で初期化しておいてください。 161 162 @return 処理の結果が返ってきます。 163 */ 164 Result Login( os::Event* pEvent ); Login(os::Event * pEvent)165 inline Result Login( os::Event* pEvent ) 166 { 167 return detail::Login( pEvent ); 168 } 169 170 /*! 171 @brief サーバへのログイン要求を撤回します。 172 173 すでにログアウトしている状態でコールしても成功します。<BR> 174 <BR> 175 この関数が成功しても、オフライン状態であることは保証されません。<BR> 176 <BR> 177 何らかの要因によりサーバとの接続が切断された場合、この関数をコール済みの状態へ暗黙的に遷移します。 178 179 @return 処理の結果が返ってきます。 180 */ 181 Result Logout(); Logout()182 inline Result Logout() 183 { 184 return detail::Logout(); 185 } 186 187 /*! 188 @brief 自分のプリンシパル ID を取得します。 189 190 @return 自分のプリンシパル ID が返ってきます。<BR> 191 <BR> 192 ライブラリが未初期化であったり、まだ一度もサーバに接続したことがないと @ref nn::friends::CTR::INVALID_PRINCIPAL_ID が返ってきます。 193 */ 194 PrincipalId GetMyPrincipalId(); GetMyPrincipalId()195 inline PrincipalId GetMyPrincipalId() 196 { 197 return detail::GetMyPrincipalId(); 198 } 199 200 /*! 201 @brief 自分の情報の公開レベルを取得します。 202 203 @param[out] pIsPublicMode 公開モードを格納するバッファへのポインタを指定します。 204 @param[out] pIsShowGameName 遊んでいるゲームを公開するかを格納するバッファへのポインタを指定します。 205 @param[out] pIsShowPlayedGame ゲーム履歴を公開するかを格納するバッファへのポインタを指定します。 206 207 @return 処理の結果が返ってきます。 208 */ 209 Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ); GetMyPreference(bool * pIsPublicMode,bool * pIsShowGameName,bool * pIsShowPlayedGame)210 inline Result GetMyPreference( bool* pIsPublicMode, bool* pIsShowGameName, bool* pIsShowPlayedGame ) 211 { 212 return detail::GetMyPreference( pIsPublicMode, pIsShowGameName, pIsShowPlayedGame ); 213 } 214 215 /*! 216 @brief 自分のプロフィール情報を取得します。 217 218 @param[out] pProfile 自分のプロフィール情報を格納する構造体へのポインタを指定します。 219 220 @return 処理の結果が返ってきます。 221 */ 222 Result GetMyProfile( Profile* pProfile ); GetMyProfile(Profile * pProfile)223 inline Result GetMyProfile( Profile* pProfile ) 224 { 225 return detail::GetMyProfile( pProfile ); 226 } 227 228 /*! 229 @brief 自分のプレゼンス情報を取得します。 230 231 @param[out] pMyPresence 自分のプレゼンス情報を格納する構造体へのポインタを指定します。 232 233 @return 処理の結果が返ってきます。 234 */ 235 Result GetMyPresence( MyPresence* pMyPresence ); GetMyPresence(MyPresence * pMyPresence)236 inline Result GetMyPresence( MyPresence* pMyPresence ) 237 { 238 return detail::GetMyPresence( pMyPresence ); 239 } 240 241 /*! 242 @brief 自分の表示名を取得します。 243 244 @param[out] screenName 自分の表示名を格納するバッファを指定します。 245 246 @return 処理の結果が返ってきます。 247 */ 248 Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ); GetMyScreenName(char16 screenName[SCREEN_NAME_SIZE])249 inline Result GetMyScreenName( char16 screenName[SCREEN_NAME_SIZE] ) 250 { 251 return detail::GetMyScreenName( screenName ); 252 } 253 254 /*! 255 @brief 自分の Mii データを取得します。 256 257 「Mii スタジオ」で「じぶんの Mii」を設定していない場合、空の Mii データが取得されます。<BR> 258 <BR> 259 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 260 261 @param[out] pMiiData 自分の Mii データを格納する構造体へのポインタを指定します。 262 263 @return 処理の結果が返ってきます。 264 */ 265 Result GetMyMii( MiiData* pMiiData ); GetMyMii(MiiData * pMiiData)266 inline Result GetMyMii( MiiData* pMiiData ) 267 { 268 return detail::GetMyMii( pMiiData ); 269 } 270 271 /*! 272 @brief フレンドリストに登録されたフレンドキーのリストを取得します。 273 274 取得されるフレンドキーには、まだフレンド関係が成立していないものも含まれます。 275 276 @param[out] pFriendKeyList 取得したフレンドキーを格納するバッファへのポインタを指定します。 277 @param[out] pNum 実際に取得された数を格納するバッファへのポインタを指定します。 278 @param[in] offset 取得を開始するフレンドキーのインデックスを指定します。 279 @param[in] size 取得するフレンドキーの最大数(バッファの要素数)を指定します。 280 281 @return 処理の結果が返ってきます。 282 */ 283 Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset = 0, size_t size = FRIEND_LIST_SIZE ); GetFriendKeyList(FriendKey * pFriendKeyList,size_t * pNum,size_t offset,size_t size)284 inline Result GetFriendKeyList( FriendKey* pFriendKeyList, size_t* pNum, size_t offset, size_t size) 285 { 286 return detail::GetFriendKeyList( pFriendKeyList, pNum, offset, size ); 287 } 288 289 /*! 290 @brief フレンドプレゼンスのリストを取得します。 291 292 自分と異なる合流ゲーム ID を指定したフレンドのゲームモードとお誘いフラグは取得できません。<BR> 293 <BR> 294 引数で与えられたキーに対応するフレンドが存在しないと、空のプレゼンスが返されます。 295 296 @param[out] pFriendPresenceList 取得したフレンドプレゼンスを格納するバッファへのポインタを指定します。 297 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 298 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 299 300 @return 処理の結果が返ってきます。 301 */ 302 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendPresence(FriendPresence * pFriendPresenceList,const FriendKey * pFriendKeyList,size_t size)303 inline Result GetFriendPresence( FriendPresence* pFriendPresenceList, const FriendKey* pFriendKeyList, size_t size) 304 { 305 return detail::GetFriendPresence( pFriendPresenceList, pFriendKeyList, size ); 306 } 307 308 /*! 309 @brief フレンドプレゼンスのリストを取得します。 310 311 自分と異なる合流ゲーム ID を指定したフレンドのゲームモードとお誘いフラグは取得できません。<BR> 312 <BR> 313 引数で与えられたキーに対応するフレンドが存在しないと、空のプレゼンスが返されます。 314 315 @param[out] pFriendPresenceList 取得したフレンドプレゼンスを格納するバッファへのポインタを指定します。 316 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 317 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 318 319 @return 処理の結果が返ってきます。 320 */ 321 Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendPresence(FriendPresence * pFriendPresenceList,const PrincipalId * pPrincipalIdList,size_t size)322 inline Result GetFriendPresence( FriendPresence* pFriendPresenceList, const PrincipalId* pPrincipalIdList, size_t size) 323 { 324 return detail::GetFriendPresence( pFriendPresenceList, pPrincipalIdList, size ); 325 } 326 327 /*! 328 @brief フレンドの表示名のリストを取得します。 329 330 この関数を使用すると、「似顔絵ライブラリ」を使用せずにフレンドの Mii の名前を直接取得することができます。 331 また、対象がフレンド関係成立待ち状態で Mii が取得できない場合でも、自分が仮登録した表示名が取得されます。<BR> 332 <BR> 333 フレンドの Mii がブラックリストに含まれていた場合でも生の名前が取得されますが、 334 フレンドの Mii の名前が NG ネームだった場合は ??? に置換されて取得されます。<BR> 335 <BR> 336 引数で与えられたキーに対応するフレンドが存在しないと、空の表示名が返されます。 337 338 @param[out] pScreenNameList 取得した表示名を格納するバッファへのポインタを指定します。 339 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 340 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 341 @param[in] replaceForeignCharacters フレンドの表示名のフォントリージョンが自分と異なる場合に、 ASCII 以外の文字を ? で置換するかを指定します。 342 @param[in] pFontRegionList フレンドの表示名のフォントリージョンを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 343 344 @return 処理の結果が返ってきます。 345 */ 346 Result GetFriendScreenName( 347 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 348 const FriendKey* pFriendKeyList, 349 size_t size = 1, 350 bool replaceForeignCharacters = true, 351 u8* pFontRegionList = NULL 352 ); GetFriendScreenName(char16 (* pScreenNameList)[SCREEN_NAME_SIZE],const FriendKey * pFriendKeyList,size_t size,bool replaceForeignCharacters,u8 * pFontRegionList)353 inline Result GetFriendScreenName( 354 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 355 const FriendKey* pFriendKeyList, 356 size_t size, 357 bool replaceForeignCharacters, 358 u8* pFontRegionList 359 ) 360 { 361 return detail::GetFriendScreenName( pScreenNameList, pFriendKeyList, size, replaceForeignCharacters, pFontRegionList ); 362 } 363 364 /*! 365 @brief フレンドの表示名のリストを取得します。 366 367 この関数を使用すると、「似顔絵ライブラリ」を使用せずにフレンドの Mii の名前を直接取得することができます。 368 また、対象がフレンド関係成立待ち状態で Mii が取得できない場合でも、自分が仮登録した表示名が取得されます。<BR> 369 <BR> 370 フレンドの Mii がブラックリストに含まれていた場合でも生の名前が取得されますが、 371 フレンドの Mii の名前が NG ネームだった場合は ??? に置換されて取得されます。<BR> 372 <BR> 373 引数で与えられたキーに対応するフレンドが存在しないと、空の表示名が返されます。 374 375 @param[out] pScreenNameList 取得した表示名を格納するバッファへのポインタを指定します。 376 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 377 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 378 @param[in] replaceForeignCharacters フレンドの表示名のフォントリージョンが自分と異なる場合に、 ASCII 以外の文字を ? で置換するかを指定します。 379 @param[in] pFontRegionList フレンドの表示名のフォントリージョンを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 380 381 @return 処理の結果が返ってきます。 382 */ 383 Result GetFriendScreenName( 384 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 385 const PrincipalId* pPrincipalIdList, 386 size_t size = 1, 387 bool replaceForeignCharacters = true, 388 u8* pFontRegionList = NULL 389 ); GetFriendScreenName(char16 (* pScreenNameList)[SCREEN_NAME_SIZE],const PrincipalId * pPrincipalIdList,size_t size,bool replaceForeignCharacters,u8 * pFontRegionList)390 inline Result GetFriendScreenName( 391 char16 (*pScreenNameList)[SCREEN_NAME_SIZE], 392 const PrincipalId* pPrincipalIdList, 393 size_t size, 394 bool replaceForeignCharacters, 395 u8* pFontRegionList 396 ) 397 { 398 return detail::GetFriendScreenName( pScreenNameList, pPrincipalIdList, size, replaceForeignCharacters, pFontRegionList ); 399 } 400 401 /*! 402 @brief フレンドの Mii データのリストを取得します。 403 404 引数で与えられたキーに対応するフレンドが存在しないと、空の Mii データが返されます。<BR> 405 <BR> 406 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 407 408 @param[out] pMiiDataList 取得した Mii データを格納するバッファへのポインタを指定します。 409 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 410 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 411 412 @return 処理の結果が返ってきます。 413 */ 414 Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendMii(MiiData * pMiiDataList,const FriendKey * pFriendKeyList,size_t size)415 inline Result GetFriendMii( MiiData* pMiiDataList, const FriendKey* pFriendKeyList, size_t size) 416 { 417 return detail::GetFriendMii( pMiiDataList, pFriendKeyList, size ); 418 } 419 420 /*! 421 @brief フレンドの Mii データのリストを取得します。 422 423 引数で与えられたキーに対応するフレンドが存在しないと、空の Mii データが返されます。<BR> 424 <BR> 425 取得した Mii データを利用するには別途「似顔絵ライブラリ」が必要です。 426 427 @param[out] pMiiDataList 取得した Mii データを格納するバッファへのポインタを指定します。 428 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 429 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 430 431 @return 処理の結果が返ってきます。 432 */ 433 Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size = 1); GetFriendMii(MiiData * pMiiDataList,const PrincipalId * pPrincipalIdList,size_t size)434 inline Result GetFriendMii( MiiData* pMiiDataList, const PrincipalId* pPrincipalIdList, size_t size) 435 { 436 return detail::GetFriendMii( pMiiDataList, pPrincipalIdList, size ); 437 } 438 439 /*! 440 @brief フレンドのプロフィール情報のリストを取得します。 441 442 引数で与えられたキーに対応するフレンドが存在しないと、空のプロフィール情報が返されます。 443 444 @param[out] pProfileList 取得したプロフィール情報を格納するバッファへのポインタを指定します。 445 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 446 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 447 448 @return 処理の結果が返ってきます。 449 */ 450 Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendProfile(Profile * pProfileList,const FriendKey * pFriendKeyList,size_t size)451 inline Result GetFriendProfile( Profile* pProfileList, const FriendKey* pFriendKeyList, size_t size) 452 { 453 return detail::GetFriendProfile( pProfileList, pFriendKeyList, size ); 454 } 455 456 /*! 457 @brief フレンドのプロフィール情報のリストを取得します。 458 459 引数で与えられたキーに対応するフレンドが存在しないと、空のプロフィール情報が返されます。 460 461 @param[out] pProfileList 取得したプロフィール情報を格納するバッファへのポインタを指定します。 462 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 463 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 464 465 @return 処理の結果が返ってきます。 466 */ 467 Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendProfile(Profile * pProfileList,const PrincipalId * pPrincipalIdList,size_t size)468 inline Result GetFriendProfile( Profile* pProfileList, const PrincipalId* pPrincipalIdList, size_t size) 469 { 470 return detail::GetFriendProfile( pProfileList, pPrincipalIdList, size ); 471 } 472 473 /*! 474 @brief フレンドの関係のリストを取得します。 475 476 フレンド関係は、属性のビットの OR であらわされます。 477 一度でもフレンド関係が成立したことがあるフレンドは @ref nn::friends::CTR::ATTRIBUTE_FLAG_ESTABLISHED ビットが 1 になります。 478 479 @param[out] pAttributeFlagsList 取得した関係情報を格納するバッファへのポインタを指定します。 480 @param[in] pFriendKeyList フレンドキーのリストへのポインタを指定します。 481 @param[in] size フレンドキーのリストの要素数(バッファの要素数)を指定します。 482 483 @return 処理の結果が返ってきます。 484 */ 485 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size = 1 ); GetFriendAttributeFlags(bit32 * pAttributeFlagsList,const FriendKey * pFriendKeyList,size_t size)486 inline Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const FriendKey* pFriendKeyList, size_t size) 487 { 488 return detail::GetFriendAttributeFlags( pAttributeFlagsList, pFriendKeyList, size ); 489 } 490 491 /*! 492 @brief フレンドの関係のリストを取得します。 493 494 フレンド関係は、属性のビットの OR であらわされます。 495 一度でもフレンド関係が成立したことがあるフレンドは @ref nn::friends::CTR::ATTRIBUTE_FLAG_ESTABLISHED ビットが 1 になります。 496 497 @param[out] pAttributeFlagsList 取得した関係情報を格納するバッファへのポインタを指定します。 498 @param[in] pPrincipalIdList プリンシパル ID のリストへのポインタを指定します。 499 @param[in] size プリンシパル ID のリストの要素数(バッファの要素数)を指定します。 500 501 @return 処理の結果が返ってきます。 502 */ 503 Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size = 1 ); GetFriendAttributeFlags(bit32 * pAttributeFlagsList,const PrincipalId * pPrincipalIdList,size_t size)504 inline Result GetFriendAttributeFlags( bit32* pAttributeFlagsList, const PrincipalId* pPrincipalIdList, size_t size) 505 { 506 return detail::GetFriendAttributeFlags( pAttributeFlagsList, pPrincipalIdList, size ); 507 } 508 509 /*! 510 @brief フレンドの暗号化ローカルフレンドコードを復号します。 511 512 フレンドのものでない暗号化ローカルフレンドコードを指定した場合、無効なローカルフレンドコードが返ってきます。 513 514 @param[out] pLocalFriendCodeList 復号したローカルフレンドコードを格納するバッファへのポインタを指定します。 515 @param[in] pScrambledLocalFriendCodeList 暗号化ローカルフレンドコードのリストへのポインタを指定します。 516 @param[in] size 暗号化ローカルフレンドコードのリストの要素数(バッファの要素数)を指定します。 517 518 @return 処理の結果が返ってきます。 519 */ 520 Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size = 1); UnscrambleLocalFriendCode(LocalFriendCode * pLocalFriendCodeList,const uds::CTR::ScrambledLocalFriendCode * pScrambledLocalFriendCodeList,size_t size)521 inline Result UnscrambleLocalFriendCode( LocalFriendCode* pLocalFriendCodeList, const uds::CTR::ScrambledLocalFriendCode* pScrambledLocalFriendCodeList, size_t size ) 522 { 523 return detail::UnscrambleLocalFriendCode( pLocalFriendCodeList, pScrambledLocalFriendCodeList, size ); 524 } 525 526 /*! 527 @brief ゲームモード説明文字列を更新します。 528 529 ここで設定した文字列は、オンライン時にフレンドへ送信され、相手のフレンドリストに表示されます。<BR> 530 <BR> 531 引数に渡せる文字列は改行や終端文字を含めて @ref nn::friends::CTR::MODE_DESCRIPTION_SIZE 文字までですが、 532 フレンドリストでの表示は全角16文字分の幅×2行までとなり、それを超えた分は切れて表示されません。<BR> 533 <BR> 534 本体リージョンと、フレンドリストで表示できる文字の関係は以下のとおりです。<BR> 535 @li 日米欧:内蔵フォントの日米欧文字に含まれる文字<BR> 536 @li 中:内蔵フォントの簡体字に含まれる文字<BR> 537 @li 韓:内蔵フォントのハングルに含まれる文字<BR> 538 @li 台:内蔵フォントの繁体字に含まれる文字<BR> 539 ここに含まれない文字は、任天堂外字の「?」 (L'\\xE011') に置き換えられて表示されます。 540 各フォントに含まれる文字セットの詳細については、「CTR オーバービュー」を参照してください。<BR> 541 <BR> 542 改行には L'\\n' を使用してください。 543 544 @param[in] description ゲームモード説明文字列を指定します。 545 546 @return 処理の結果が返ってきます。 547 */ 548 Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ); UpdateGameModeDescription(const char16 description[MODE_DESCRIPTION_SIZE])549 inline Result UpdateGameModeDescription( const char16 description[MODE_DESCRIPTION_SIZE] ) 550 { 551 return detail::UpdateGameModeDescription( description ); 552 } 553 554 555 /*! 556 @brief 自分のログイン状態や、フレンドの状態変更を通知するイベントを指定します。 557 558 この関数を複数回呼んだ場合、最後に指定した @ref nn::os::Event のみがシグナルします。 559 560 @param[out] pEvent 変更を通知する @ref nn::os::Event へのポインタを指定します。事前に @ref nn::os::Event::Initialize で初期化しておいてください。 561 562 @return 処理の結果が返ってきます。 563 */ 564 Result AttachToEventNotification( nn::os::Event* pEvent ); AttachToEventNotification(nn::os::Event * pEvent)565 inline Result AttachToEventNotification( nn::os::Event* pEvent ) 566 { 567 return detail::AttachToEventNotification( pEvent ); 568 } 569 570 /*! 571 @brief 受け取る通知の種類を指定します。 572 573 @ref nn::friends::CTR::AttachToEventNotification で指定したイベントをシグナルさせたり、 574 @ref nn::friends::CTR::GetEventNotification で取得される履歴に含める通知の種類を指定します。 575 576 初期状態ではこの関数に @ref nn::friends::CTR::NOTIFICATION_MASK_DEFAULT を指定したのと同じ状態になっています。 577 578 @param[in] mask 受け取る通知の種類のビットマスクを指定します。 @ref nn::friends::CTR::NotificationMask 列挙体メンバの OR を指定してください。 579 580 @return 処理の結果が返ってきます。 581 */ 582 Result SetNotificationMask( bit32 mask ); SetNotificationMask(bit32 mask)583 inline Result SetNotificationMask( bit32 mask ) 584 { 585 return detail::SetNotificationMask( mask ); 586 } 587 588 /*! 589 @brief 自分のオンライン状態や、フレンドの状態変更の通知の履歴を取得します。 590 591 この関数を呼ぶと、まだ取得していない通知の内容を古いものから順に取得します。 592 返値が 0 になるまで繰り返し呼ぶことで、たまっている通知を時系列順に取得することができます。<BR> 593 <BR> 594 ライブラリが保存できる通知は128件までです。 595 128件を超えた通知は古いほうから削除されます。 596 通知の保存件数は今後調整される可能性があります。 597 598 @param[out] pEventNotificationList 取得した通知の内容を格納するバッファへのポインタを指定します。 599 @param[in] size バッファの要素数を指定します。 600 @param[out] pHasOverflowed 取得できずにあふれた通知があったかを格納するバッファへのポインタを指定します。不要な場合は NULL を指定してください。 601 602 @return 実際に取得できた通知の数が返ってきます。 603 */ 604 u32 GetEventNotification( 605 EventNotification* pEventNotificationList, 606 size_t size = 1, 607 bool* pHasOverflowed = NULL 608 ); GetEventNotification(EventNotification * pEventNotificationList,size_t size,bool * pHasOverflowed)609 inline u32 GetEventNotification( 610 EventNotification* pEventNotificationList, 611 size_t size, 612 bool* pHasOverflowed 613 ) 614 { 615 return detail::GetEventNotification( pEventNotificationList, size, pHasOverflowed ); 616 } 617 618 /*! 619 @brief 完了した非同期処理の結果を取得します。 620 621 複数の非同期処理を走らせると、取得される結果は最後に開始した非同期処理のものでその都度上書きされます。 622 ある非同期処理の完了前に別の非同期処理を開始した場合、後者の完了前に前者が完了したとしても、その結果を取得することはできません。 623 原則として、複数の非同期処理を並行して走らせることは避けてください。 624 625 @return 非同期処理の処理の結果が返ってきます。 626 */ 627 Result GetLastResponseResult(); GetLastResponseResult()628 inline Result GetLastResponseResult() 629 { 630 return detail::GetLastResponseResult(); 631 } 632 633 /*! 634 @brief フレンド・プレゼンスライブラリの API の結果からエラーコードを取得します。 635 636 @param[in] result フレンド・プレゼンスライブラリの API から取得した結果を指定します。 637 638 @return 指定した結果に対応するエラーコードが返ってきます。 639 <BR> 640 エラーコードを表示する必要がない結果や、 FRIENDS ライブラリ API 以外の結果を指定した場合は 0 が返ってきます。 641 */ 642 u32 ResultToErrorCode( const Result& result ); ResultToErrorCode(const Result & result)643 inline u32 ResultToErrorCode( const Result& result ) 644 { 645 return detail::ResultToErrorCode( result ); 646 } 647 648 } // end of namespace CTR 649 } // end of namespace friends 650 } // end of namespace nn 651 652 #endif // __cplusplus 653 654 // 以下、C 用宣言 655 656 #include <nn/util/detail/util_CLibImpl.h> 657 658 /*! 659 @addtogroup nn_friends friends 660 661 @{ 662 */ 663 664 665 666 /*! 667 @} 668 */ 669 670 #endif // ifndef NN_FRIENDS_CTR_FRIENDS_API_H_ 671