Skip to content

MapSpriteで各レイヤー毎にTileset画像を指定できるようにしたい #122

Description

@emadurandal

こんにちはー。

表題の通りの要望ですー。
以下の様な感じにできると素敵だなーと思いまして。

  MAP_DATA = {
    'map.001': {
      name: '001',
      width: 10,
      height: 10,
      tilewidth: 64,
      tileheight: 64,
      tilesets: [
        {
          name: 'layer1',
          image: 'hoge.jpg'
        },
        {
          name: 'layer2',
          image: 'hoge2.jpg'
        }
      ],
      layers: [
        {
          type: 'layer',
          name: 'layer1',
          data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 
                 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        },
        {
          type: 'layer',
          name: 'layer2',
          data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 
                 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
                 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        }
      ]
    }
  };

tmlibのコードのtm.display.MapSpriteの定義内のコードを以下のような感じにしたら(すっごい初心者なコード(汗))、とりあえず行けたのですが、

        _buildLayer: function(layer) {
            var self        = this;
            var mapSheet    = this.mapSheet;
            var tilesetUrl = "";
            for(var i = 0; i<mapSheet.tilesets.length; i++) {
                if(mapSheet.tilesets[i].name === layer.name) {
                    tilesetUrl = mapSheet.tilesets[i].image;
                    break;
                }
            }
            var texture     = tm.asset.Manager.get(tilesetUrl);
            .....

他のコード部分との整合性とか大丈夫か自信がなかったのでプルリクでなくイシューで上げさせていただきました。

ご検討よろしくお願いいたします。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions