CoR用メッセージウィンドウと選択肢メッセージウィンドウ

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2021/02/06 20:48

CoRで使える汎用関数(光楼式汎用CoR関数 Ver.20210203)を作ったのでご紹介したいと思います。

↓サンプルゲーム
Code on Rmake


Rmakeクイズ!


出来る事

  • 指定範囲の塗りつぶし
  • メッセージウィンドウ
  • 選択肢メッセージウィンドウ


使用準備

サンプルゲームのソースファイル「光楼式汎用CoR関数.rb」をコピーしてください。
使用方法は「start.rb」を参考にして下さい。
また、以下2点の素材をゲームに追加してください。
  • 塗り潰し用の素材

  • ▼マーク


関数リファレンス

※座標の設定は全て左上が原点となっています

関数使用準備用 ※必須

  • FillingMaterial_Set関数
塗り潰し用画像素材を準備します。
preload do 
  FillingMaterial_Set()
end

引数を設定することで、自分で用意した素材を利用出来ます。
preload do 
  FillingMaterial_Set(325178, 10, 5)
end

引数内容
第1引数素材ID
第2引数1パーツ当たりのサイズ
第3引数実際に使うサイズ
※上記の設定では、1パーツ10x10で、そのなかの5x5を使うようになります。
参考:https://rmake.jp/blog/%E5%85%89%E6%A5%BC%EF%BC%88114%EF%BC%89/8822


  • TextWindowIcons_Set関数
アイコン用画像素材を準備します。
現状、メッセージウィンドウの▼マークしかありません。
preload do 
  TextWindowIcons_Set()
end

引数を設定することで、自分で用意した素材を利用出来ます。
現状、アイコンサイズは32*32しか対応していません。
preload do 
  TextWindowIcons_Set(325218)
end

引数内容
第1引数素材ID


  • TextWindow_LayerSet関数
メッセージウィンドウで使用するレイヤーを設定します。
予めレイヤーを生成しておく必要があります。
create do
  #レイヤーの生成
  $system_layer = add_layer
  #テキストウィンドウを表示するレイヤーを設定
  TextWindow_LayerSet($system_layer)
end

引数内容
第1引数レイヤー

画像関連

  • filling関数
指定範囲を塗り潰します。
filling(0, 0, 800, 450, 1, 100)

引数内容
第1引数X座標
第2引数Y座標
第3引数
第4引数高さ
第5引数色番号 #0:黒 1:白 2:赤 3:緑 4:青 5:黄 6:ピンク 7:水色
第6引数不透明度 #0~100 #0で完全に透明
第7引数 #省略可カメラから独立するか #デフォルト:true(独立する)
レイヤーに登録する場合は以下のようにします。
#レイヤーの生成
$system_layer = add_layer

#白く塗る
bg = filling(0, 0, 800, 450, 1, 100)
$system_layer.add bg


文章表示関連

  • message関数
メッセージを表示します。
message("はじめまして。")

引数内容
第1引数メッセージ
第2引数 #省略可個別レイアウト設定
第2引数で個別の設定が出来ます。
設定にはハッシュテーブルを使います。
message("ようこそ!!!", {:size => 45, :c => '#ff2222'})

個別レイアウト設定一覧
キー内容
:xX座標
:yY座標
:w
:h高さ
:size文字サイズ
:c文字色 #16進数
:b太字にするか #true or false
:it斜体にするか #true or false
:bg_opacityウィンドウ不透明度 #0~100
:bg_cウィンドウ色 #0:黒 1:白 2:赤 3:緑 4:青 5:黄 6:ピンク 7:水色
:frame_cフレーム色 #〃
:h_interval行間隔
:txt_wait文字表示アニメ間隔 #0でアニメ無し


  • messageWithSelect関数
選択肢とメッセージを表示します。
選択肢は配列で設定します。
case messageWithSelect(["はい", "いいえ"], "あなたは人間ですか?")
  when 0
    message("人間!")
  when 1
    message("アンドロイド?")
end

引数内容
第1引数選択肢
第2引数メッセージ
第3引数 #省略可 #第4引数設定時は省略不可メッセージ個別レイアウト設定
第4引数 #省略可選択肢個別レイアウト設定
第3引数と第4引数で個別の設定が出来ます。
設定にはハッシュテーブルを使います。
case messageWithSelect(["はい", "いいえ"], "あなたは人間ですか?", {:y => 50}, {:up => 180, :down => nil})
  when 0
    message("人間!")
  when 1
    message("アンドロイド?")
end

第4引数のみ設定する場合は以下のようにしてください。
case messageWithSelect(["はい", "いいえ"], "あなたは人間ですか?", {}, {:slct_h => 50, :size => 46})
  when 0
    message("人間!")
  when 1
    message("アンドロイド?")
end

選択肢個別レイアウト設定一覧
キー内容
:upウィンドウ上側座標 #nilで自動設定
:downウィンドウ下側座標 #nilで自動設定
:leftウィンドウ左側座標 #nilで自動設定
:rightウィンドウ右側座標 #nilで自動設定
:size文字サイズ
:c文字色 #16進数
:b太字にするか #true or false
:it斜体にするか #true or false
:slct_h選択項目の高さ #文字サイズ+4推奨
:slct_c選択マーカー色 #0:黒 1:白 2:赤 3:緑 4:青 5:黄 6:ピンク 7:水色
:slct_opacity選択マーカーの不透明度 #0~100

既知のバグ

1. 長文がはみ出る
2. 太字・斜体の設定が反映されない
3. タップしても反応しない
4. ウィンドウサイズを小さくし過ぎるとエラーが出る
5.選択肢レイアウト設定で:upと:downを両方設定すると、選択肢の数が変わる
6.選択項目が半角英数だと、選択肢ウィンドウの幅が倍の広さになる

1,2,3に関してはCoR自体のバグによるものです。どうにかしたいけど、どうにもできません。
4は仕様です。今後エラーが出ないように下限を設けたいと思います。
5は片方をnilにすることで回避できます。今後選択項目の高さを自動で調整することで対処しようと思います。
6はただ単に幅の計算方法が「文字サイズ*文字数」だからです。気になる方は:leftと:rightを両方設定してください

今後やりたいこと

  • バグの修正
4~6はなるべく早く対処したいですね。

  • 個別レイアウト設定の項目を増やす
メッセージウィンドウと選択肢ウィンドウの色を別で設定できるようにしたり、フレームの不透明度を設定できるようにしたいと思っています。

  • 不透明度はプログラムで調整
モーションを使えば画像の透明度を調整出来た気がするので、これが出来れば素材の準備も楽になります。

  • スキップ機能
Rmakeではスペースキーでメッセージを飛ばすことが出来たので、こっちでもやりたいと思ってます。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Material 303531 2 mini mochi3kan(投稿日:2021/02/07 17:10, 履歴)
ウィンドウの色が変えられるのいいですね!
関数もわかりやすくまとめられてて使いやすそうです。
Material 185033 3 mini 光楼(114)(投稿日:2021/02/09 22:12, 履歴)
ありがとうございます、是非ご利用ください。
Cdv30200 aoi icon mini aoihikawa(投稿日:2021/02/06 21:16, 履歴)
とても分かりやすいドキュメント
良いですね
Material 185033 3 mini 光楼(114)(投稿日:2021/02/09 22:11, 履歴)
ありがとうございます、Rmakeの関数リファレンスなど色々参考にしました。