役職のインターフェースについて - yukieiji/ExtremeRoles GitHub Wiki

この情報は2022/05/13時点のdevelopブランチの情報です

  • Extreme Rolesは役職拡張用に以下のインターフェースを提供している(ExtremeRoles.Roles.API.Interface内)
    • IRoleAbility:役職ボタン用の作成、呼び出し、リセット用のインターフェース
    • IRoleMurderPlayerHock:自分以外のキルが起きた時に何らかの処理をしたい場合のインターフェース
    • IRoleReportHock:通報もしくは会議ボタンが押された時に何らかの処理をしたい場合のインターフェース
    • IRoleResetMeeting:会議が始まった、もしくは終わった時に何らかの処理をしたい場合のインターフェース
    • IRoleSpecialSetUp:役職が全員アサイン後のイントロ開始前、もしくは終わった時に何らかの初期化をしたい場合のインターフェース
    • IRoleSpecialReset:サイドキック等で役職を完全にリセットする時用のインターフェース
    • IRoleUpdate:毎フレーム毎に何らかの処理をしたい場合のインターフェース
    • IRoleWinPlayerModifier:役職の内部状態と勝利条件、プレイヤーの生存状態に応じて勝利プレイヤーを変更したい場合のインターフェース
    • IRoleOption:役職のオプション用インターフェース(基本的に使わない(役職のベースクラスに内包されてる))

IRoleAbilityを使った役職の能力ボタン作成方法

  1. 役職を作り終える
  2. IRoleAbilityを継承する
  3. IsAbilityUseで能力が使える状況かどうかをチェックする処理を書く
    • this.IsCommonUse()を使うことで共通的なチェックはカバーできる
  4. UseAbilityで能力を使った処理を書く
  5. CreateAbilityメソッド内でボタンを作る処理を書く
    • 基本的に作りたいボタンのメソッドを呼び出せばいいはず(以下を参照、拡張メソッドで実装しているためthisをつけて呼び出す必要あり)
      • CreateNormalAbilityButton:クールタイムだけを持つ単純な能力ボタンを作る
      • CreateAbilityCountButton:クールタイムを持ち、使用上限がある能力ボタンを作る
      • CreateReclickableAbilityButton:クールタイムを持ち、能力発動中に再度ボタンが押せる能力ボタンを作る
      • CreateChargeAbilityButton:クールタイムを持ち、能力を発動すればするほど発動時間が減っていくような能力ボタンを作る
      • CreatePassiveAbilityButton:クールタイムを持ち、能力を任意でオンオフができるような能力ボタンを作る
    • 引数のcheckAbilityは能力発動中に能力が発動できる状態かチェックするブール値を返す関数を渡す
    • 引数のabilityCleanUpは能力発動後になにかの処理を行うような処理を書く
  6. CreateSpecificOptionメソッド内でボタン用のオプションを作る
    • 基本的に以下のメソッドを呼び出せば大丈夫です(自力で作るとめんどいと思います、拡張メソッドで実装しているためthisをつけて呼び出す必要あり)
      • CreateAbilityCountButtonの場合、CreateAbilityCountOption
        • defaultActiveTimeを指定する場合は能力の発動時間がある状態になります
      • それ以外:CreateCommonAbilityOption
        • defaultActiveTimeを指定する場合は能力の発動時間がある状態になります
  7. RoleSpecificInitメソッドでRoleAbilityInitメソッドを呼び出すようにする(拡張メソッドで実装しているためthisをつけて呼び出す必要あり)
  8. ResetOnMeetingStartに会議開始時のリセット処理を書く
  9. ResetOnMeetingEndに会議終了時のリセット処理を書く
  10. 保存してビルド、ゲーム内にの役職にボタンが追加され正しく動作するようになる