AM Daemon ライブラリリファレンス
公開メンバ関数 | 全メンバ一覧
amdaemon::CreditUnit クラス

ビデオゲームのプレイヤー別クレジット情報を保持するクラス。 [詳解]

#include <CreditUnit.h>

公開メンバ関数

 CreditUnit (InnerIndexHolder)
 コンストラクタ。 [詳解]
 
std::uint32_t getCredit () const
 現在のクレジット値を取得する。 [詳解]
 
std::uint32_t getRemain () const
 現在のクレジット端数値を取得する。 [詳解]
 
bool isZero () const
 現在のクレジット値およびクレジット端数値が 0 であるか否かを取得する。 [詳解]
 
std::uint32_t getAddableCoin () const
 追加可能なコイン数を取得する。 [詳解]
 
std::uint32_t getCoinToCredit () const
 COIN TO CREDIT 設定値を取得する。 [詳解]
 
bool isFreePlay () const
 FREE PLAY 設定が有効であるか否かを取得する。 [詳解]
 
const wchar_t * toString () const
 現在のクレジット値情報を文字列化する。 [詳解]
 
std::uint32_t getGameCost (std::size_t gameCostIndex) const
 ゲームコスト設定値を取得する。 [詳解]
 
bool isGameCostEnough (std::size_t gameCostIndex, std::size_t count=1) const
 現在のクレジット値がゲームコストを満たすか否かを取得する。 [詳解]
 
bool payGameCost (std::size_t gameCostIndex, std::size_t count=1)
 現在のクレジット値からゲームコスト分を減算するように要求する。 [詳解]
 

詳解

ビデオゲームのプレイヤー別クレジット情報を保持するクラス。

参照
Credit, Player

このクラスのインスタンスをアプリ側で直接生成することはできない。 Credit クラスのメンバ関数 Credit::getPlayer から取得すること。

一部の関数は処理完了まで呼び出し元スレッドをブロックする。

INSERT COIN(S) 表示について
次の順序で INSERT COIN(S) 表示内容を決定する。
  1. メンバ関数 isGameCostEnough が true を返すならばプレイ可能表示を行う。
  2. メンバ関数 isZero が true を返すならば "INSERT COIN(S)" 表示を行う。
  3. どちらも満たさなければ "INSERT MORE COIN(S)" 表示を行う。

構築子と解体子

amdaemon::CreditUnit::CreditUnit ( InnerIndexHolder  )
explicit

コンストラクタ。

覚え書き
アプリ側からは利用できない。

関数詳解

std::uint32_t amdaemon::CreditUnit::getCredit ( ) const

現在のクレジット値を取得する。

戻り値
現在のクレジット値。
std::uint32_t amdaemon::CreditUnit::getRemain ( ) const

現在のクレジット端数値を取得する。

戻り値
現在のクレジット端数値。

COIN TO CREDIT 設定値以上にはならない。 COIN TO CREDIT 設定値が 1 ならば常に 0 を返す。

bool amdaemon::CreditUnit::isZero ( ) const

現在のクレジット値およびクレジット端数値が 0 であるか否かを取得する。

戻り値
trueクレジット値もクレジット端数値も 0 である場合。
falseクレジット値もしくはクレジット端数値が 1 以上である場合。
std::uint32_t amdaemon::CreditUnit::getAddableCoin ( ) const

追加可能なコイン数を取得する。

戻り値
追加可能なコイン数。 FREE PLAY 設定が有効である場合は 0 。

現在の状態から追加可能なコイン数を返す。 ただし FREE PLAY 設定が有効である場合は 0 を返す。

主に、 EMoney クラスによる電子マネーでのコイン購入支払操作において、 購入予定のコイン数が追加可能であるか事前に調べるために用いる。

BONUS ADDER 設定等があるため、追加可能なコイン数は単純計算で算出できない。 独自に計算せず、この関数の戻り値を利用すること。

std::uint32_t amdaemon::CreditUnit::getCoinToCredit ( ) const

COIN TO CREDIT 設定値を取得する。

戻り値
COIN TO CREDIT 設定値。

COIN数いくつで1クレジットになるかを表す。 FREE PLAY 設定が有効であっても 0 にはならない。

std::max(Credit().getConfig().coinToCredit, 1U) を返す。

bool amdaemon::CreditUnit::isFreePlay ( ) const

FREE PLAY 設定が有効であるか否かを取得する。

戻り値
trueFREE PLAY 設定が有効である場合。
falseFREE PLAY 設定が無効である場合。

Credit().getConfig().freePlay を返す。

const wchar_t* amdaemon::CreditUnit::toString ( ) const

現在のクレジット値情報を文字列化する。

戻り値
クレジット値情報文字列。
注意
内部でプレイヤーごとに共通の文字列バッファを使い回しているため、 この関数を再度呼び出すと戻り値のポインタが指す文字列値が変更される。 以前の値を保持しておきたい場合は std::wstring 等にコピーする必要がある。

次の手順に従って文字列を生成する。 FREE PLAY 設定は考慮しない。

  1. COIN TO CREDIT 設定値が 1 ならば、クレジット値を文字列化して返す。
  2. COIN TO CREDIT 設定値が 2 以上かつクレジット値が 0 ならば、 クレジット端数値および COIN TO CREDIT 設定値を文字列化したものを "/" で連結した文字列を返す。
  3. COIN TO CREDIT 設定値が 2 以上かつクレジット値が 1 以上ならば、 上記手順 1 と 2 の文字列を " " で連結した文字列を返す。 ただしクレジット端数値が 0 の場合は上記手順 1 の文字列のみを返す。
std::uint32_t amdaemon::CreditUnit::getGameCost ( std::size_t  gameCostIndex) const

ゲームコスト設定値を取得する。

引数
[in]gameCostIndexゲームコスト設定インデックス。
戻り値
ゲームコスト設定値。
例外
Exception引数 gameCostIndex に CreditConfig::MaxGameCostCount 以上の値を指定した場合。

Credit().getConfig().gameCosts[gameCostIndex] を返す。

bool amdaemon::CreditUnit::isGameCostEnough ( std::size_t  gameCostIndex,
std::size_t  count = 1 
) const

現在のクレジット値がゲームコストを満たすか否かを取得する。

引数
[in]gameCostIndexゲームコスト設定インデックス。
[in]countゲームコスト減算回数。既定値は 1 。
戻り値
trueゲームコストを満たす場合。
falseゲームコストを満たさない場合。
例外
Exception
  • 引数 gameCostIndex に CreditConfig::MaxGameCostCount 以上の値を指定した場合。
  • 引数 count に 0 以下もしくは 99 より大きい値を指定した場合。

下記の条件判定式の結果を返す。

getCredit() >= (getGameCost(gameCostIndex) * count)

ただし、 FREE PLAY 設定が有効である場合は常に true を返す。

bool amdaemon::CreditUnit::payGameCost ( std::size_t  gameCostIndex,
std::size_t  count = 1 
)

現在のクレジット値からゲームコスト分を減算するように要求する。

引数
[in]gameCostIndexゲームコスト設定インデックス。
[in]countゲームコスト減算回数。既定値は 1 。
戻り値
true成功した場合。
falseクレジット不足等で失敗した場合。
参照
Sequence::beginPlay, Sequence::continuePlay
例外
Exception
  • 引数 gameCostIndex に CreditConfig::MaxGameCostCount 以上の値を指定した場合。
  • 引数 count に 0 以下もしくは 99 より大きい値を指定した場合。

プレイ開始、コンティニューと連動してゲームコスト(クレジット)支払いを行いたい場合は Sequence クラスのメンバ関数 Sequence::beginPlaySequence::continuePlay を用いることを推奨する。 それ以外のタイミングで支払いを行いたい場合にこの関数を用いる。

事前にメンバ関数 isGameCostEnough でクレジットが足りていることを確認済みでも、 Daemonプロセス側でクレジット減算に失敗する可能性はある。 よって必ずこの関数の戻り値を確認すること。

FREE PLAY 設定が有効ならば、要求は発行されるが、クレジット減算は行われない。 その場合、要求処理自体は成功したものとして扱われる。

Daemonプロセスが処理完了するまで呼び出し元スレッドをブロックする。

引数 count について
ゲーム内アイテム購入等によってゲームコストのパターンが多岐に渡り、 標準のゲームコスト設定では賄いきれない場合、この引数値を設定することで
(ゲームコスト設定値 * count)
のクレジット減算を行うことができる。
標準のゲームコスト設定で賄える場合、既定値の 1 を用いること。
この関数を複数回呼び出すことでも同等の処理を行えるように思えるかもしれないが、 関数を呼び出す度にDaemonプロセス側でクレジット数のバックアップが行われるため、 途中電断等によって中途半端なクレジット減算が行われてしまう可能性がある。 一度のプレイヤー操作に対してこの関数を複数回呼び出すような処理は避けること。

このクラス詳解は次のファイルから抽出されました: