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

Гаме оптионс анд преференцес: гамеоптионс.инц.пхп

Извор: Board Game Arena
Пређи на навигацију Пређи на претрагу

Ин тхис филе, yоу цан дефине yоур гаме оптионс (= гаме вариантс) анд усер преференцес.

Ноте: Иф yоур гаме хас но вариантс ор преференцес, yоу дон'т хаве то модифy тхис филе.

ИМПОРТАНТ: афтер yоу едитед тхис филе ин yоур СФТП фолдер yоу хаве то го то тхе цонтрол панел анд пресс "Релоад гаме оптионс цонфигуратион" фор yоур цхангес то таке еффецт.

Гаме Оптионс

Гаме оптионс ис сометхинг селецтед бy табле цреатор анд усуаллy цорреспонд то гаме вариант, фор еxампле иф гаме инцлудес еxпансион ор цертаин специал руле.

Тхесе вариантс дефинед ин гамеоптионс.инц.пхп ас вариабле

 $game_options = array(...); // exactly named that

Еацх оптион ис паир нумбер => 'оптион десцриптион арраy'.

Алл оптионс дефинед ин тхис филе схоулд хаве а цорреспондинг "гаме стате лабел" wитх тхе саме ИД (сее "инитГамеСтатеЛабелс" ин yоургаме.гаме.пхп)

            self::initGameStateLabels ( array (
                       ...
                       "my_first_game_variant" => 100,
             ) );

Тхат ис хоw yоу аццесс тхем дуринг рунтиме:

             $this->gamestate->table_globals[100]

Тхе фоллоwинг аре тхе параметерс оф оптион десцриптион арраy:

  • наме - мандарторy. Тхе наме оф тхе оптион висибле фор табле цреатор. Валуе муст бе wраппед ин тотранслате фунцтион.
  • валуес - мандарторy. Тхе арраy (мап) оф валуес wитх аддитионал параметерс пер валуе.
    • наме - мандарторy. Стринг репресентатион оф тхе нумериц валуе висибле то табле цреатор. Валуе муст бе wраппед ин тотранслате фунцтион.
    • тмдисплаy - Стринг репресентатион оф тхе оптион висибле ин тхе табле десцриптион, усуаллy иф вариант "намес" аре Он анд Офф, бут тхе десцриптион wоулд бе саме ас оптион наме wхен Он, анд нотхинг wхен Офф.
    • нобегиннер - Сет то труе иф нот рецоммендед фор беггинерс
    • бета - Оптион ин бета стаге он девелопмент
    • премиум - Оптион цан бе онлy усед бy премиум мемберс
  • дисплаyцондитион - цхецкс тхе цондитионс бефоре дисплаyинг тхе оптион фор селецтион. Алл цондитионс муст бе труе фор тхе оптион то дисплаy. Суппортед цондитион тyпес:
    • отхероптион цондитион енсурес анотхер оптион ис сет то тхис гивен валуес. Фрамеwорк оптионс - 201 - ЕЛО ОФФ.
    • отхероптиониснот цондитионс енсуре анотхер оптион ис НОТ сет то тхис гивен валуес
  • стартцондитион - цхецкс тхе цондитионс (он оптионс ВАЛУЕС) бефоре стартинг тхе гаме. Алл цондитионс муст бе труе фор тхе гаме то старт, отхерwисе плаyерс wилл гет а ред еррор мессаге wхен аттемптинг то бегин тхе гаме. Суппортед цондитион тyпес:
    • минплаyерс цондитион енсурес ат леаст тхис манy плаyерс
    • маxплаyерс цондитионс енсуре ат мост тхис манy плаyерс
    • отхероптион цондитионс енсуре анотхер оптион ис сет то тхис гивен валуес. Тхат wоркс тхе саме ас ин дисплаyцондитион.
    • отхероптиониснот цондитионс енсуре анотхер оптион ис НОТ сет то тхис гивен валуе. Тхат wоркс тхе саме ас ин дисплаyцондитион.
  • нотдисплаyедмессаге - иф оптион ис нот суппосе то бе висибле бецаусе оф дисплаyцондитион бут тхис ис сет, тхе теxт wилл бе висибле инстеад оф цомбо дроп доwн
 $game_options = array(
     100 => array(
         'name' => totranslate('my game option'),
         'values' => array(
             // A simple value for this option:
             1 => array(
                 'name' => totranslate('option 1')
             ),

             // A simple value for this option.
             // If this value is chosen, the value of "tmdisplay" is displayed in the game lobby
             2 => array(
                 'name' => totranslate('option 2'),
                 'tmdisplay' => totranslate('option 2')
             ),

             // Another value, with other options:
             //  beta=true => this option is in beta version right now.
             //  nobeginner=true  =>  this option is not recommended for beginners
             3 => array(
                 'name' => totranslate('option 3'),
                 'beta' => true,
                 'nobeginner' => true
             ),
         )
     ),
     
     101 => array(
         'name' => totranslate('Draft variant'),
         'values' => array(
             1 => array(
                 'name' => totranslate('No draft')
             ),
             2 => array(
                 'name' => totranslate('Draft'),
                 'tmdisplay' => totranslate('Draft'),
                 'premium' => true,
                 'nobeginner' => true
             ),
         ),
         'displaycondition' => array( 
             // Note: do not display this option unless these conditions are met
             array(
                 'type' => 'otheroption',
                 'id' => 100, // Game specific option defined in the same array above
                 'value' => array(2, 3, 4)
             ),
             // Note: do not display this option unless these conditions are met
            array( 'type' => 'otheroption', 
                 'id' => 201, // ELO OFF hardcoded framework option
                 'value' => 1 // 1 if OFF
            )
         ),

         'startcondition' => array(
             1 => array(),
             2 => array(
                 array(
                     'type' => 'maxplayers',
                     'value' => 3,
                     'message' => totranslate('Draft option is available for 3 players maximum.')
                 )
             ),
         ),
         'disable' => true
     ),
     
     102 => array(
         'name' => totranslate('Takeovers'),
         'values' => array(
             2 => array(
                 'name' => totranslate('No takeover')
             ),
             1 => array(
                 'name' => totranslate('Allow takeovers'),
                 'tmdisplay' => totranslate('Takeovers'),
                 'premium' => true,
                 'nobeginner' => true
             ),
         ),
         'displaycondition' => array( // Note: do not display this option unless these conditions are met
             array(
                 'type' => 'otheroption',
                 'id' => 100,
                 'value' => array(3, 4)
             )
         ),
         'startcondition' => array(
             2 => array(),
             1 => array(
                 array(
                     'type' => 'maxplayers',
                     'value' => 2,
                     'message' => totranslate('Rebel vs Imperium Takeover Scenario is available for 2 players only.')
                 )
             ),
         ),
         'disable' => true
     )
 );

Еxампле оф оптион тхат цондитион он ЕЛО офф

$game_options = array(

        100 => array(
                'name' => totranslate('Learning Game (No Research)'),
                'values' => array(
                        
                        1 => array( 'name' => totranslate('Off'), 'tmdisplay' => totranslate('') ),
                        2 => array( 'name' => totranslate('On'), 'tmdisplay' => totranslate('Learning Game') ),
                        
                ),
                'displaycondition' => array(
                        // Note: do not display this option unless these conditions are met
                        array( 'type' => 'otheroption',
                                'id' => 201, // ELO OFF hardcoded framework option
                                'value' => 1, // 1 if OFF

                        )
                ),
                'notdisplayedmessage' => totranslate('Learning variant available only with ELO off')
                ),

);

Еxампле оф усинг цондитион он yоур оwн оптион

        102 => array(
                'name' => totranslate('Scenarios'),
                'values' => array(
                        1 => array( 'name' => totranslate('Off'),
                                'nobeginner' => false  ),
                        2 => array( 'name' => totranslate('On'), 'tmdisplay' => totranslate('Scenarios'),
                                'nobeginner' => true  ),
                        
                ),
                'displaycondition' => array(
                        // Note: do not display this option unless these conditions are met
                        array( 'type' => 'otheroptionisnot',
                                'id' => 100, // learning variant
                                'value' => 2, // 1 if OFF,2 is ON
                                
                        )
                ),
                'notdisplayedmessage' => totranslate('Scenarios variant is not available if Learning variant is chosen')
        ),

Усер Преференцес

Усер преференцес ис сометхинг цосметиц абоут тхе гаме интерфаце wхицх хоwевер цан цреате усер wарс, со yоу цан сатисфy алл усерс бy гивинг тхем индивидуал преференцес. Yоу схоулд усе тхис онлy иф ит сигнифицантлy импровес тхе интерфаце фор а ларге пропортион оф усерс.

$game_preferences = array(
    100 => array(
			'name' => totranslate('Notation style'),
			'needReload' => true, // after user changes this preference game interface would auto-reload
			'values' => array(
					1 => array( 'name' => totranslate( 'Classic' ), 'cssPref' => 'notation_classic' ),
					2 => array( 'name' => totranslate( 'Tournament' ), 'cssPref' => 'notation_tournament' )
			)
	)
);

Тхере ис тwо wаyс то цхецк/апплy тхис. Ин јава Сцрипт

 if (this.prefs[100].value == 2) ...

Тхис цхецкс иф преференцес 100 хас селецтед валуе 2.

Сецонд, иф цссПреф специфиед ит wилл бе апплиед то тхе бодy таг. Со yоу цан усе дифферент цсс стyлинг фор тхе преференце.

Ас усер yоу хаве то селецт тхем фром тхе Геар мену wхен гаме ис стартед. Он студио онлy усер0 wилл хаве ит ацтуаллy wоркинг (буг?).