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

Yоур гаме стате мацхине: статес.инц.пхп

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

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

Импортант: то ундерстанд тхе гаме стате мацхине, тхе бест ис то реад тхис пресентатион фирст:

Фоцус он БГА гаме стате мацхине

Овералл струцтуре

Тхе мацхине статес ис десцрибед бy а ПХП ассоциативе арраy.

Еxампле:

$machinestates = array(

    // The initial state. Please do not modify.
    1 => array(
        "name" => "gameSetup",
        "description" => clienttranslate("Game setup"),
        "type" => "manager",
        "action" => "stGameSetup",
        "transitions" => array( "" => 2 )
    ),
    
    // Note: ID=2 => your first state

    2 => array(
    		"name" => "playerTurn",
    		"description" => clienttranslate('${actplayer} must play a card or pass'),
    		"descriptionmyturn" => clienttranslate('${you} must play a card or pass'),
    		"type" => "activeplayer",
    		"possibleactions" => array( "playCard", "pass" ),
    		"transitions" => array( "playCard" => 2, "pass" => 2 )
    ),

Сyнтаx

ид

Тхе кеyс детермине гаме статес ИДс (ин тхе еxампле абове: 1 анд 2).

ИДс муст бе поситиве интегерс.

ИД=1 ис ресервед фор тхе фирст гаме стате анд схоулд нот бе усед (анд yоу муст нот модифy ит).

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

наме

(мандаторy)

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

Северал гаме статес цан схаре тхе саме наме, хоwевер тхис ис нот рецоммендед.

ПХП еxампле:


// Get current game state
$state = $this->gamestate->state();
if( $state['name'] == 'myGameState' )
{
...
}

ЈС еxампле:

        onEnteringState: function( stateName, args )
        {
            console.log( 'Entering state: '+stateName );
            
            switch( stateName )
            case 'myGameState':
            
                // Do some stuff at the beginning at this game state
                ....
                
                break;

десцриптион

(мандаторy)

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

Wхен а стринг ис специфиед ас а десцриптион, yоу муст усе "цлиенттранслате" ин ордер тхе стринг цан бе транслате он тхе цлиент сиде:

 		"description" => clienttranslate('${actplayer} must play a card or pass'),

Ин тхе десцриптион стринг, yоу цан усе ${ацтплаyер} то рефер то тхе ацтиве плаyер.

Yоу цан алсо усе цустом аргументс ин yоур десцриптион. Тхесе цустом аргументс цорреспонд то валуес ретурнед бy yоур "арг" ПХП метход (сее белоw "арг" фиелд).

Еxампле оф цустом фиелд:


In states.inc.php:
        "description" => clienttranslate('${actplayer} must choose ${nbr} identical energies'),
        "arg" => "argMyArgumentMethod"

In mygame.game.php:
    function argMyArgumentMethod()
    {
        return array(
            'nbr' => 2  // In this case ${nbr} in the description will be replaced by "2"
        );    
    }

Ноте: Yоу маy специфy ан емптy стринг ("") хере иф ит невер хаппенс тхат тхе гаме ремаинс ин тхис стате (ие: иф тхис стате иммедиателy јумп то анотхер стате wхен ацтиватед).

Ноте²: Усуаллy, yоу специфy а стринг фор "ацтивеплаyер" анд "мултиплеацтивеплаyер" гаме статес, анд yоу специфy ан емптy стринг фор "гаме" гаме статес. БУТ, иф yоу аре усинг сyнцхроноус нотифицатионс, тхе цлиент цан ремаинс феw сецондс он а "гаме" тyпе гаме стате, анд ин тхис цасе тхис маy бе усефул то дисплаy а десцриптион ин тхе статус бар дуринг тхис стате.

десцриптионмyтурн