Class: Gs2::Stamina::Client
- Inherits:
-
Core::AbstractClient
- Object
- Core::AbstractClient
- Gs2::Stamina::Client
- Defined in:
- lib/gs2/stamina/Client.rb
Overview
GS2-Stamina クライアント
Constant Summary collapse
- @@ENDPOINT =
'stamina'
Class Method Summary collapse
-
.ENDPOINT(v = nil) ⇒ Object
デバッグ用。通常利用する必要はありません。.
Instance Method Summary collapse
-
#change_stamina(request) ⇒ Array
スタミナ値を増減させる
同一ユーザに対するスタミナ値の増減処理が衝突した場合は、後でリクエストを出した側の処理が失敗します。
そのため、同時に複数のデバイスを利用してゲームを遊んでいる際に、一斉にクエストを開始することで1回分のスタミナ消費で2回ゲームが遊べてしまう。
というような不正行為を防ぐことが出来るようになっています。
クエストに失敗した時に消費したスタミナ値を戻してあげる際や、スタミナ値の回復アイテムを利用した際などに
スタミナ値を増やす操作を行うことになりますが、その際に overflow に true を指定することで、スタミナ値の最大値を超える回復を行えます。
スタミナ値の上限を超えた部分は overflow フィールドに格納され、優先してそちらが消費されます。
accessToken には Gs2::Auth::Client::login() でログインして取得したアクセストークンを指定してください。
. -
#create_stamina_pool(request) ⇒ Array
スタミナプールを作成
GS2-Staminaを利用するには、まずスタミナプールを作成する必要があります。
スタミナプールには複数のユーザのスタミナ値を格納することができます。
スタミナプールの設定として、スタミナ値の回復速度を秒単位で指定できます。
この設定値を利用して、スタミナ値の回復処理を行いつつユーザごとに最新のスタミナ値を取得することができます。
. -
#delete_stamina_pool(request) ⇒ Object
スタミナプールを削除.
-
#describe_stamina_pool(pageToken = nil, limit = nil) ⇒ Array
スタミナプールリストを取得.
-
#describeServiceClass ⇒ Array
サービスクラスリストを取得.
-
#get_stamina(request) ⇒ Array
スタミナ値を取得
指定したユーザの最新のスタミナ値を取得します。
回復処理などが行われた状態の値が応答されますので、そのままゲームで利用いただけます。
accessToken には Gs2::Auth::Client::login() でログインして取得したアクセストークンを指定してください。
. -
#get_stamina_pool(request) ⇒ Array
スタミナプールを取得.
-
#get_stamina_pool_status(request) ⇒ Array
スタミナプールの状態を取得.
-
#initialize(region, gs2_client_id, gs2_client_secret) ⇒ Client
constructor
コンストラクタ.
-
#update_stamina_pool(request) ⇒ Array
スタミナプールを更新.
Constructor Details
#initialize(region, gs2_client_id, gs2_client_secret) ⇒ Client
コンストラクタ
17 18 19 |
# File 'lib/gs2/stamina/Client.rb', line 17 def initialize(region, gs2_client_id, gs2_client_secret) super(region, gs2_client_id, gs2_client_secret) end |
Class Method Details
.ENDPOINT(v = nil) ⇒ Object
デバッグ用。通常利用する必要はありません。
22 23 24 25 26 27 28 |
# File 'lib/gs2/stamina/Client.rb', line 22 def self.ENDPOINT(v = nil) if v @@ENDPOINT = v else return @@ENDPOINT end end |
Instance Method Details
#change_stamina(request) ⇒ Array
スタミナ値を増減させる
同一ユーザに対するスタミナ値の増減処理が衝突した場合は、後でリクエストを出した側の処理が失敗します。
そのため、同時に複数のデバイスを利用してゲームを遊んでいる際に、一斉にクエストを開始することで1回分のスタミナ消費で2回ゲームが遊べてしまう。
というような不正行為を防ぐことが出来るようになっています。
クエストに失敗した時に消費したスタミナ値を戻してあげる際や、スタミナ値の回復アイテムを利用した際などに
スタミナ値を増やす操作を行うことになりますが、その際に overflow に true を指定することで、スタミナ値の最大値を超える回復を行えます。
スタミナ値の上限を超えた部分は overflow フィールドに格納され、優先してそちらが消費されます。
accessToken には Gs2::Auth::Client::login() でログインして取得したアクセストークンを指定してください。
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'lib/gs2/stamina/Client.rb', line 268 def change_stamina(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end if not request.has_key?('accessToken'); raise ArgumentError.new(); end if not request['accessToken']; raise ArgumentError.new(); end body = {} if request.has_key?('variation'); body['variation'] = request['variation']; end if request.has_key?('maxValue'); body['maxValue'] = request['maxValue']; end if request.has_key?('overflow'); body['overflow'] = request['overflow']; end query = {} header = { 'X-GS2-ACCESS-TOKEN' => request['accessToken'] } return post( 'Gs2Stamina', 'ChangeStamina', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'] + '/stamina', body, query, header); end |
#create_stamina_pool(request) ⇒ Array
スタミナプールを作成
GS2-Staminaを利用するには、まずスタミナプールを作成する必要があります。
スタミナプールには複数のユーザのスタミナ値を格納することができます。
スタミナプールの設定として、スタミナ値の回復速度を秒単位で指定できます。
この設定値を利用して、スタミナ値の回復処理を行いつつユーザごとに最新のスタミナ値を取得することができます。
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/gs2/stamina/Client.rb', line 79 def create_stamina_pool(request) if not request; raise ArgumentError.new(); end body = {} if request.has_key?('name'); body['name'] = request['name']; end if request.has_key?('description'); body['description'] = request['description']; end if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end if request.has_key?('increaseInterval'); body['increaseInterval'] = request['increaseInterval']; end query = {} return post( 'Gs2Stamina', 'CreateStaminaPool', @@ENDPOINT, '/staminaPool', body, query); end |
#delete_stamina_pool(request) ⇒ Object
スタミナプールを削除
193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/gs2/stamina/Client.rb', line 193 def delete_stamina_pool(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end query = {} return delete( 'Gs2Stamina', 'DeleteStaminaPool', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'], query); end |
#describe_stamina_pool(pageToken = nil, limit = nil) ⇒ Array
スタミナプールリストを取得
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/gs2/stamina/Client.rb', line 45 def describe_stamina_pool(pageToken = nil, limit = nil) query = {} if pageToken; query['pageToken'] = pageToken; end if limit; query['limit'] = limit; end return get( 'Gs2Stamina', 'DescribeStaminaPool', @@ENDPOINT, '/staminaPool', query); end |
#describeServiceClass ⇒ Array
サービスクラスリストを取得
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/gs2/stamina/Client.rb', line 99 def describeServiceClass() query = {} result = get( 'Gs2Stamina', 'DescribeServiceClass', @@ENDPOINT, '/staminaPool/serviceClass', query); return result['items']; end |
#get_stamina(request) ⇒ Array
スタミナ値を取得
指定したユーザの最新のスタミナ値を取得します。
回復処理などが行われた状態の値が応答されますので、そのままゲームで利用いただけます。
accessToken には Gs2::Auth::Client::login() でログインして取得したアクセストークンを指定してください。
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 |
# File 'lib/gs2/stamina/Client.rb', line 224 def get_stamina(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end if not request.has_key?('accessToken'); raise ArgumentError.new(); end if not request['accessToken']; raise ArgumentError.new(); end query = {} if request.has_key?('maxValue'); query['maxValue'] = request['maxValue']; end header = { 'X-GS2-ACCESS-TOKEN' => request['accessToken'] } return get( 'Gs2Stamina', 'GetStamina', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'] + '/stamina', query, header); end |
#get_stamina_pool(request) ⇒ Array
スタミナプールを取得
123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/gs2/stamina/Client.rb', line 123 def get_stamina_pool(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end query = {} return get( 'Gs2Stamina', 'GetStaminaPool', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'], query); end |
#get_stamina_pool_status(request) ⇒ Array
スタミナプールの状態を取得
142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/gs2/stamina/Client.rb', line 142 def get_stamina_pool_status(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end query = {} return get( 'Gs2Stamina', 'GetStaminaPoolStatus', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'] + '/status', query); end |
#update_stamina_pool(request) ⇒ Array
スタミナプールを更新
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/gs2/stamina/Client.rb', line 171 def update_stamina_pool(request) if not request; raise ArgumentError.new(); end if not request.has_key?('staminaPoolName'); raise ArgumentError.new(); end if not request['staminaPoolName']; raise ArgumentError.new(); end body = {} if request.has_key?('description'); body['description'] = request['description']; end if request.has_key?('serviceClass'); body['serviceClass'] = request['serviceClass']; end if request.has_key?('increaseInterval'); body['increaseInterval'] = request['increaseInterval']; end query = {} return put( 'Gs2Stamina', 'UpdateStaminaPool', @@ENDPOINT, '/staminaPool/' + request['staminaPoolName'], body, query); end |