.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: [проект] Tower Defense на WebGL
Делай массив индексов для мапы, а то такой формат как у тебя солько же будет занимать?
Вот так лучше будет ( http://files.moka.co/map.json ):
{ "tiles": [ "grass-trees", "rock-trees", "grass", "road", "snow-trees", "rock", "snow" ], "width": 15, "height": 15, "map": [ 4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,3,3,3,3,3,3,4,1,1,1,1,4,4,3,3,3,3,3,3,3,3,3,3,1,1,1,4,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,6,6,6,6,3,3,3,3,1,1,3,3,3,6,6,6,6,6,6,5,5,3,3,3,1,3,3,4,4,4,4,4,4,4,5,5,3,3,3,1,4,4,4,4,4,4,0,1,1,1,5,5,3,3,1,4,4,4,4,4,0,0,1,1,1,5,5,3,3,1,1,4,3,3,3,0,0,0,2,2,2,3,3,3,1,1,4,3,3,3,0,2,2,2,2,2,3,3,3,1,1,1,3,3,3,3,2,2,2,3,3,3,3,2,0,1,1,3,3,3,3,3,3,3,3,3,3,3,2,0,1,1,1,3,3,3,3,3,3,3,3,2,2,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 ] }
Да и в BSON'е такое ваще хранить сказка, можно сделать tile максимум 8, или 16, тем самым юзать соответственно 1 или 2 байта на тайл.
А можно его вообще одной строкой а не массивом выводить.
Читаем:
for(var y = 0; y < level.height; ++y) { for(var x = 0; x < level.width; ++x) { var tileInd = level.map[x + y * level.height]; var tile = level.tiles[tileInd]; } }
Или если один цикл (ну кому как):
for(var i = 0, len = level.width * level.height; i < len; ++i) { var x = i % level.width; var y = Math.floor(i / level.width); var tileInd = level.map[i]; var tile = level.tiles[tileInd]; }
Результат будет (tileInd):
4 4 4 4 4 4 4 4 4 4 4 1 1 1 1 4 4 4 4 3 3 3 3 3 3 4 1 1 1 1 4 4 3 3 3 3 3 3 3 3 3 3 1 1 1 4 3 3 3 3 3 3 3 3 3 3 3 3 1 1 3 3 3 3 3 6 6 6 6 3 3 3 3 1 1 3 3 3 6 6 6 6 6 6 5 5 3 3 3 1 3 3 4 4 4 4 4 4 4 5 5 3 3 3 1 4 4 4 4 4 4 0 1 1 1 5 5 3 3 1 4 4 4 4 4 0 0 1 1 1 5 5 3 3 1 1 4 3 3 3 0 0 0 2 2 2 3 3 3 1 1 4 3 3 3 0 2 2 2 2 2 3 3 3 1 1 1 3 3 3 3 2 2 2 3 3 3 3 2 0 1 1 3 3 3 3 3 3 3 3 3 3 3 2 0 1 1 1 3 3 3 3 3 3 3 3 2 2 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Так в разы экономнее.
ЗЫ, с div'ами ты конечно прикольнулся в редакторе, не мог канвой сделать?
|