2010年 08月19日(Thu) [長年日記]
_ [DXRuby][ruby][プログラム]【CGSS】CGSSメモ
以前Card Games Support Systemsと銘打ってカードゲーム用のフレームワークを作ろうとしていたのだけど、実はとてもゆっくりながら進んでいたりする。
そんなCGSSの使い方メモ。といっても現物はまだ私の手元にしか無いし、全然未完成だし、そもそも何書いてるかすら不明だろうと思われるので、なんか書いてるなーと思っておいてください。
configファイルの書き方
基本内部DSL。
[オブジェクトの種類] [オブジェクト名] do [コマンド] end
といった具合に書く。
- オブジェクトの種類
- 現状window, fieldの2種
- オブジェクト名
- 省略可。名前はSymbolか文字列で。:hogeとか'foo'みたいに。
- 名前を付けると$hoge, $fooという変数名でconfigファイル内において参照することができる。具体的にはあるオブジェクトのコマンド内で他のオブジェクトの情報やコマンドを利用したい場合に使う。
- コマンド
- オブジェクト毎にいくつかのコマンドが存在する。
windowオブジェクトのコマンド
- caption [文字列]
- ウィンドウのキャプション
- bgcolor [r, g, b]
- 背景色
- width [数値]
- ウィンドウの幅
- height [数値]
- ウィンドウの高さ
- add_menu [メニュー]
- メニューを追加(未実装)
fieldオブジェクトのコマンド
- init [x, y, w, h]
- 座標(x, y)に幅w,高さhのフィールドを配置
- offset [x, y]
- フィールド内のカード配置のオフセット座標
- bgcolor [r, g, b]
- 背景色
- color [r, g, b]
- 枠線、カード枚数の表示色
- show_num [x, y, size]
- 座標(x, y)に文字サイズsizeでカード枚数を表示
- attribute [属性]
- カードの並び方 :deck, :horizontal, :verticalのどれかを指定
- owner [オーナー]
- :public, :mine, :othersのどれかを指定 :publicは誰でも触れる :mineは自分のみ :othersは触れない
- shuffle
- シャッフルする
- add_menu [メニュー]
- ポップアップメニューを追加
- add [カードブロック]
- ブロック内で定義したカードを追加する
ポップアップメニューのブロック内では以下のコマンドが表記できる
- add_top [カード]
- カードを先頭に追加
- delete [カード]
- カードをフィールドから削除
move_cardとかadd_tailとか必要かも。フィールド内のカードの一覧表示も必要だけど、他のフィールドに表向きで移動させれば一応可能ではある。一時的にフィールドを作成したり削除できると良いのかも?
addコマンド内のブロックにはカードのプロパティとして以下のコマンドが表記できる
- width [数値]
- カードの幅
- height [数値]
- カードの高さ
- back [パス]
- カードの裏面画像のパス
- face [パス]
- カードの表面画像のパス
- state [状態]
- :faceなら表向き :backなら裏向き
- add_menu [メニュー]
- ポップアップメニューを追加
ポップアップメニューのブロック内では以下のコマンドが表記できる
- faceup
- 表向きに
- facedown
- 裏向きに
- flip
- 表向きなら裏向きに 裏向きなら表向きに
- rot [数値]
- 数値1毎に90度時計回りに回転
- tap
- タップしてたらアンタップ それ以外ならタップ
- reverse
- リバースしていたら元に戻す それ以外ならリバース
現状こんなところ。もう少しでTCGの一人回し程度ができるレベルになるんじゃないかな。動いてる動画とか見せたいが面倒くさいw