This is a documentation for Board Game Arena: play board games online !

Маин гаме логиц: yоургаменаме.гаме.пхп

Извор: Board Game Arena
Датум измене: 10. јануар 2013. у 17:57; аутор: Pikiou (разговор | доприноси) (→‎Accessing player informations: alternative for getPlayersNumber in setupNewGame)
Пређи на навигацију Пређи на претрагу

Тхис филе ис тхе маин филе фор yоур гаме логиц. Хере yоу инитиализе тхе гаме, персист дата, имплемент тхе рулес анд нотифy цхангес то тхе цлиент интерфаце.

Филе Струцтуре

Тхе детаилс он хоw тхе филе ис струцтуред ис десцрибед дирецтлy wитх цомментс он тхе цоде скелетон провидед то yоу. Басицаллy, хере'с тхис струцтуре:

  • ЕмптyГаме (цонструцтор): wхере yоу дефине глобал вариаблес.
  • сетупНеwГаме: инитиал сетуп оф тхе гаме.
  • гетАллДатас: wхере yоу ретриеве алл гаме дата дуринг а цомплете релоад оф тхе гаме.
  • гетГамеПрогрессион: wхере yоу цомпуте тхе гаме прогрессион индицатор.
  • Утилитy фунцтионс: yоур утилитy фунцтионс.
  • Плаyер ацтионс: тхе ентрy поинтс фор плаyерс ацтионс.
  • Гаме стате аргументс: метходс то ретурн аддитионал дата он специфиц гаме статес.
  • Гаме стате ацтионс: тхе логиц то рун wхен ентеринг а неw гаме стате.
  • зомбиеТурн: wхат то до ит'с тхе турн оф а зомбие плаyер.

Аццессинг плаyер информатионс

гетПлаyерсНумбер()
Ретурнс тхе нумбер оф плаyерс плаyинг ат тхе табле
Ноте: доесн'т wорк ин сетупНеwГаме со усе цоунт($плаyерс) инстеад
гетАцтивеПлаyерИд()
Гет тхе "ацтиве_плаyер", wхатевер wхат ис тхе цуррент стате тyпе.
Ноте: ит доес НОТ меан тхат тхис плаyер ис ацтиве ригхт ноw, бецаусе стате тyпе цоулд бе "гаме" ор "мултиплаyер"
Ноте: авоид усинг тхис метход ин а "мултиплаyер" стате бецаусе ит доес нот меан анyтхинг.
гетАцтивеПлаyерНаме()
Гет тхе "ацтиве_плаyер" наме
лоадПлаyерсБасицИнфос()
Гет ан ассоциативе арраy wитх генериц дата абоут плаyерс (ие: нот гаме специфиц дата).
Тхе кеy оф тхе ассоциативе арраy ис тхе плаyер ид.
Тхе цонтент оф еацх валуе ис:
ТОДО
гетЦуррентПлаyерИд()
Гет тхе "цуррент_плаyер". Тхе цуррент плаyер ис тхе оне фром wхицх тхе ацтион оригинатед (тхе оне wхо сенд тхе реqуест).
Бе царефул: Ит ис нот алwаyс тхе ацтиве плаyер.
Ин генерал, yоу схоулдн'т усе тхис метход, унлесс yоу аре ин "мултиплаyер" стате.
гетЦуррентПлаyерНаме()
Гет тхе "цуррент_плаyер" наме
Бе царефул усинг тхис метход (сее абове).
гетЦуррентПлаyерЦолор()
Гет тхе "цуррент_плаyер" цолор
Бе царефул усинг тхис метход (сее абове).
исЦуррентПлаyерЗомбие()
Цхецк тхе "цуррент_плаyер" зомбие статус. Иф труе, плаyер леаве тхе гаме.

Аццессинг датабасе

Тхе маин гаме логиц схоулд бе тхе онлy поинт фром wхере yоу схоулд аццесс то тхе гаме датабасе. Yоу аццесс yоур датабасе усинг СQЛ qуериес wитх тхе фоллоwинг метходс:

ДбQуерy( $сqл )
Тхис ис тхе генериц метход то аццесс тхе датабасе.
Ит цан еxецуте анy тyпе оф СЕЛЕЦТ/УПДАТЕ/ДЕЛЕТЕ/РЕПЛАЦЕ qуерy он тхе датабасе.
Yоу схоулд усе ит фор УПДАТЕ/ДЕЛЕТЕ/РЕПЛАЦЕ qуерy. Фор СЕЛЕЦТ qуериес, тхе специализед метходс абове аре муцх беттер.
гетУниqуеВалуеФромДБ( $сqл )
Ретурнс а униqуе валуе фром ДБ ор нулл иф но валуе ис фоунд.
$сqл муст бе а СЕЛЕЦТ qуерy.
Раисе ан еxцептион иф море тхан 1 роw ис ретурнед.
гетЦоллецтионФромДБ( $сqл, $бСинглеВалуе=фалсе )
Ретурнс ан ассоциативе арраy оф роwс фор а сqл СЕЛЕЦТ qуерy.
Тхе кеy оф тхе ресултинг ассоциативе арраy ис тхе фирст фиелд специфиед ин тхе СЕЛЕЦТ qуерy.
Тхе валуе оф тхе ресултинг ассоциативе арраy иф ан ассоциативе арраy wитх алл тхе фиелд специфиед ин тхе СЕЛЕЦТ qуерy анд ассоциатед валуес.
Фирст цолумн муст бе а примарy ор алтернате кеy.
Тхе ресултинг цоллецтион цан бе емптy.
Иф yоу специфиед $бСинглеВалуе=труе анд иф yоур СQЛ qуерy реqуест 2 фиелдс А анд Б, тхе метход ретурнс ан ассоциативе арраy "А=>Б"

Еxампле 1:

self::getCollectionFromDB( "SELECT player_id id, player_name name, player_score score FROM player" );

Result:
array(
 1234 => array( 'id'=>1234, 'name'=>'myuser0', 'score'=>1 ),
 1235 => array( 'id'=>1235, 'name'=>'myuser1', 'score'=>0 )
)

Еxампле 2:

self::getCollectionFromDB( "SELECT player_id id, player_name name FROM player", true );

Result:
array(
 1234 => 'myuser0',
 1235 => 'myuser1'
)

гетНонЕмптyЦоллецтионФромДБ( $сqл )
Идем тхан превиоус оне, бут раисе ан еxцептион иф тхе цоллецтион ис емптy
фунцтион гетОбјецтФромДБ( $сqл )
Ретурнс оне роw фор тхе сqл СЕЛЕЦТ qуерy ас ан ассоциативе арраy ор нулл иф тхере ис но ресулт
Раисе ан еxцептион иф тхе qуерy ретурн море тхан оне роw
self::getObjectFromDB( "SELECT player_id id, player_name name, player_color color FROM player WHERE player_id='1234'" );

Result:
array(
 'id' => 1234,
 'name' => 'myuser1',
 'color' => 'ff0000'
)


фунцтион гетНонЕмптyОбјецтФромДБ( $сqл )
Идем, бут раисе ан еxцептион иф тхе qуерy доесн'т ретурн еxацтлy оне роw


Ноте: сее Едитинг Гаме датабасе модел: дбмодел.сqл то кноw хоw то дефине yоур датабасе модел.

Гаме статес анд ацтиве плаyерс

фунцтион цхецкАцтион( $ацтионНаме, $бТхроwЕxцептион=труе )
Цхецк иф ацтион ис валид регардинг цуррент гаме стате (еxцептион иф фаилс)
иф "бТхроwЕxцептион" ис сет то "фалсе", тхе фунцтион ретурн фалсе ин цасе оф фаилуре инстеад оф тхроwинг анд еxцептион
фунцтион ацтивеНеxтПлаyер()
Маке тхе неxт плаyер ацтиве
фунцтион ацтивеПревПлаyер()
Маке тхе превиоус плаyер ацтиве


Нотифy плаyерс

Гаме статистицс

фунцтион инитСтат( $табле_ор_плаyер, $наме, $валуе, $плаyер_ид=нулл )
Цреате а статистиц ентрy фор тхе специфиед статистицс wитх а дефаулт валуе
Ин цасе оф а "плаyер" ентрy, иф плаyер_ид ис нот специфиед, алл плаyерс аре сет то тхе саме валуе
фунцтион сетСтат( $валуе, $наме, $плаyер_ид = нулл )
Сет статистиц валуе
фунцтион инцСтат( $делта, $наме, $плаyер_ид = нулл )
Инцремент (ор децремент) специфиед валуе


Транслатионс

фунцтион _( $теxт )
Транспарент фунцтион, усед то марк стрингс то бе транслатед он тхе сервер сиде (еx: еррор мессаге)
фунцтион цлиенттранслате( $стринг )
Транспарент фунцтион: усед то марк стринг то бе транслатед он цлиент сиде (еx: нотифицатион мессаге)

Рефлеxион тиме

фунцтион гивеЕxтраТиме( $плаyер_ид, $специфиц_тиме=нулл )
Гиве стандард еxтра тиме то тхис плаyер (стандард еxтра тиме ис а гаме оптион)


Манагинг еррорс анд еxцептионс

тхроw неw БгаУсерЕxцептион ( $еррор_мессаге)
Басе цласс то нотифy а усер еррор
тхроw неw БгаСyстемЕxцептион ( $еррор_мессаге)
Басе цласс то нотифy а сyстем еxцептион. Тхе мессаге wилл бе хидден фром тхе усер, бут схоw ин тхе логс. Усе тхис иф тхе мессаге цонтаинс тецхницал информатион.
тхроw неw БгаСyстемВисиблеЕxцептион ( $еррор_мессаге)
Саме ас превиоус, еxцепт тхат тхе мессаге ис висибле бy тхе усер. Yоу цан усе тхис иф тхе мессаге ис ундерстандабле бy тхе усер.