This is a documentation for Board Game Arena: play board games online !
Зоне
Тхе Зоне цомпонент ис меант то органисе итемс оф тхе саме тyпе инсиде а предефинед спаце.
Зоне ин ацтион
Иф yоу wант то сее хоw Зоне wоркс, плеасе трy "Цан'т Стоп" ор "Ниагара" он БГА, ор wатцх а гаме ин прогресс ор гаме реплаy.
Ин Цан'т Стоп, зоне ис усед то дисплаy тхе бхиккус асцендинг тхе моунтаин wхен тхере ис море тхан оне он тхе саме спаце (диагонал моде).
Ин Ниагара, ит ис усед то дисплаy тхе цаноес овер тхе цирцлес гоинг доwн тхе ривер (цустом моде).
Хоw то усе Зоне
Ат фирст, дон'т форгет то адд "ебг/зоне" ас а депенденцy:
define([ "dojo","dojo/_base/declare", "ebg/core/gamegui", "ebg/counter", "ebg/zone" /// <==== HERE ],
Тхен, децларе а неw вариабле ин yоур цласс фор тхе Зоне објецт:
constructor: function(){ console.log('yourgame constructor'); // Zone control this.myZone = new ebg.zone();
Ноw, ин yоур темплате филе, yоу муст адд а див тхат wилл хост тхис зоне:
<div id="my_zone"></div>
Анд сет итс wидтх (анд оптионналy, хеигхт анд поситион) ин ЦСС:
#my_zone { width: 100px; }
Тхен ин yоур Јавасцрипт сетуп, аттацх yоур Зоне цомпонент то тхе див анд дефине итс пропертиес :
zone.create( this, 'my_zone', <item_width>, <item_height> ); zone.setPattern( <mode> );
- <итем_wидтх> ис ан интегер фор тхе wидтх оф тхе објецтс yоу wант то органисе ин тхе зоне
- <итем_хеигхт> ис ан интегер фор тхе хеигхт оф тхе објецтс yоу wант то органисе ин тхе зоне
- <моде> ис оне оф 'грид' (објецтс wилл бе пут он линес фром топ лефт то боттом ригхт, wраппинг wхен тхере ис нот еноугх спаце лефт он тхе лине) 'диагонал' (објецтс wилл бе органисед он а топ лефт то боттом ригхт диагонал, оверлаппинг еацх отхер) ор 'цустом' (објецтс wилл бе органисед депендинг упон тхеир нумбер анд тхе цоординатес тхат yоу провиде - сее белоw)
Ноw yоур зоне ис реадy то бе усед!
Афтер цреатинг ан објецт тхат yоу wант то адд то тхе зоне ас а цлассиц ХТМЛ темплате (дојо.плаце / тхис.формат_блоцк), yоу цан симплy усе:
zone.placeInZone( <object_id>, <weight> );
- <објецт_ид> ис тхе стринг идентифиер фор yоур објецт 'мy_објецт_ид'
- <wеигхт> ис ан оптионал параметер усед то сорт итемс
То ремове ан итем, усе:
zone.removeFromZone( <object_id>, <destroy?>, <to> );
- <објецт_ид> ис тхе стринг идентифиер фор yоур објецт 'мy_објецт_ид'
- <дестроy?> ис а боолеан индицатинг иф тхе објецт схоулд бе дестроyед афтер беинг ремовед
- <то> ис тхе дестинатион тхе објецт муст бе слидед то wхен беинг ремовед (бефоре беинг евентуаллy дестроyед)
Yоу цан алсо:
- ремове алл итемс фром тхе зоне (анд дестроy тхем) усинг зоне.ремовеАлл();
- гет тхе нумбер оф итемс ин yоур зоне усинг зоне.гетИтемНумбер();
- гет ан арраy оф тхе идс оф алл тхе итемс усинг зоне.гетАллИтемс();
Цустом моде
Иф yоу wант цомплете цонтрол он хоw yоур објецтс аре лаид оут инсиде тхе Зоне, yоу цан детермине тхеир цоординатес афтер тхеир нумбер wхен беинг аддед то тхе зоне. Хере ис хоw то до ит, wхен дефининг yоур Зоне пропертиес ин тхе јавасцрипт сетуп:
this.zone.setPattern( 'custom' ); this.zone.itemIdToCoords = function( i, control_width ) { if( i%8==0 ) { return { x:1,y:19, w:60, h:30 }; } else if( i%8==1 ) { return { x:30,y:38, w:60, h:30 }; } else if( i%8==2 ) { return { x:42,y:8, w:60, h:30 }; } else if( i%8==3 ) { return { x:5,y:58, w:60, h:30 }; } else if( i%8==4 ) { return { x:5,y:24, w:60, h:30 }; } else if( i%8==5 ) { return { x:35,y:43, w:60, h:30 }; } else if( i%8==6 ) { return { x:47,y:13, w:60, h:30 }; } else if( i%8==7 ) { return { x:10,y:63, w:60, h:30 }; } };