tmlib-rpg キャラクターの作成(2) rpg.Character / rpg.SpriteCharacter


素材(Asset)の定義ができたので、それを使って、歩行アニメーションとかもろもろを実装中。

使い方は以下のような感じ。

tm.define 'MainScene',
  superClass: rpg.SceneBase

  init: ->
    # 親の初期化
    @superInit()

    @characters = [
      new rpg.Character()
      new rpg.Character()
      new rpg.Character()
      new rpg.Character()
    ]
    rpg.SpriteCharacter(c).addChildTo(@) for c in @characters

    @characters[0].moveTo(5,5).direction = 'left'
    @characters[1].moveTo(6,5).direction = 'right'
    @characters[2].moveTo(7,5).direction = 'up'
    @characters[3].moveTo(8,5).direction = 'down'

new 演算子を使ってるのは、内部のクラスは、tmlib を使ってないから…
せっかく CoffeeScript を使うようになったし内部クラスは、依存性を低めに…

rpg.SpriteCharacter が参照している rpg.Character クラスを変更すると、それを監視して、表示される。

裏でいろいろデータを変更して、表示時にそれをすべて反映させるために的な?
もともとRGSSがこう言う作りってのもあるけど、処理が分離されてて、良いと思う。

RPGのイベントとか、町の人とかの移動ルート設定関連は、内部で全部解決という感じにできるはず…
あとは、マップを作成して、表示領域にも対応しないとスクロールとかとか。まだまだつくるものいっぱい。

ついでに、grunt でテストをするようにしました。

参考にしたのは、こちら
Mocha + Chai で CoffeeScript を Grunt で自動テスト

direction はプロパティにしたけど、setDirection(...) とかあったほうが、チェーンできて良いかも?
両方つくればいいのかな。あまり用意すると混乱しそうだけど…
setter/getterがプロパティ対応で作れるので面白いと思うけど、混乱の元な気がしないでもない
便利なんだけど。
プロパティで作れるから、さらに set/get 系のメソッドは作りたくないって感じも~
へふ~