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

「Studio function reference」の版間の差分

提供:Board Game Arena
ナビゲーションに移動 検索に移動
 
(2人の利用者による、間の10版が非表示)
1行目: 1行目:
This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to).
This page references useful server side and client side functions (and some interesting class variables), so that nobody needs to reinvent the wheel (unless he wants to).
 
This list is not exhaustive, in particular functions already well described by comments in the 'EmptyGame' game template may not be described again below.


== Server side (PHP functions) ==
== Server side (PHP functions) ==


=== APP_GameAction class (<gamename>.action.php) ===
== Client side (Javascript functions) ==


; function isArg( $argName )
; this.player_id
: Is this argument filled ?
: Id of the player on whose browser the code is running.
; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false  )
: Get script argument with the correct type
: bCanFail means than a validation failure is possible (user input)
: The main argType values are as follows.
<pre>
define( 'AT_int', 0 );        //  an integer
define( 'AT_posint', 1 );    //  a positive integer
define( 'AT_float', 2 );      //  a float
define( 'AT_email', 3 );      //  an email 
define( 'AT_url', 4 );        //  a URL
define( 'AT_bool', 5 );      //  1/0/true/false
define( 'AT_enum', 6 );      //  argTypeDetails list the possible values
define( 'AT_alphanum', 7 );  //  only 0-9a-zA-Z_ and space
</pre>


=== Table class (<gamename>.game.php) ===
; this.isSpectator
: Flag set to true if the user at the table is a spectator (not a player).


; function _( $text )
; this.gamedatas
: Transparent function, used to mark strings to be translated on the server side (ex: error message)
: Contains your initial set of datas to init the game, created at game start or game refresh (F5)
; function clienttranslate( $string )
: You can update it as needed to keep an up to date reference of the game on the client side.
: Transparent function: used to mark string to be translated on client side (ex: notification message)
; function getPlayersNumber()
: Returns the number of players playing at the table
; function checkAction( $actionName, $bThrowException=true )
: Check if action is valid regarding current game state (exception if fails)
: if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception
; function getActivePlayerId()
: Get the "active_player", whatever what is the current state type
: Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer"
; function getActivePlayerName()
: Get the "active_player" name
; function getCurrentPlayerId()
: Get the "current_player". The current player is the one from which the action originated. It is not always the active player.
; function getCurrentPlayerName()
: Get the "current_player" name
; function getCurrentPlayerColor()
: Get the "current_player" color
; function isCurrentPlayerZombie()
: Check the "current_player" zombie status
; function activeNextPlayer()
: Make the next player active
; function activePrevPlayer()
: Make the previous player active
; function giveExtraTime( $player_id, $specific_time=null )
: Give standard extra time to this player (standard extra time is a game option)
; function initStat( $table_or_player, $name, $value, $player_id=null )
: Create a statistic entry for the specified statistics with a default value
: In case of a "player" entry, if player_id is not specified, all players are set to the same value
; function setStat( $value, $name, $player_id = null )
: Set statistic value
; function incStat( $delta, $name, $player_id = null )
: Increment (or decrement) specified value
; function DbQuery( $sql )
: Executes sql query on the database
; function getCollectionFromDB( $sql, $bSingleValue=false )
: Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty.
; protected function getNonEmptyCollectionFromDB( $sql )
: Idem, but raise an exception if the collection is empty
; function getUniqueValueFromDB( $sql )
: Returns a unique value from DB or null if no value is found
: Raise an exception if more than 1 row is returned
; function getObjectFromDB( $sql )
: Returns one row for the sql query as an associative array or null if there is no result
: Raise an exception if the query return more than one row
; function getNonEmptyObjectFromDB( $sql )
: Idem, but raise an exception if the query doesn't return exactly one row


=== Exceptions you can throw ===
; slideToObject: function( mobile_obj, target_obj, duration, delay )
: Return an dojo.fx animation that is sliding a DOM object from its current position over another one
: Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo.


; throw new BgaUserException ( $error_message)
; slideToObjectPos: function( mobile_obj, target_obj, target_x, target_y, duration, delay )
: Base class to notify a user error
: Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object.
; throw new BgaSystemException ( $error_message)
: Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information.
; throw new BgaSystemVisibleException ( $error_message)
: Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user.


== Client side (Javascript functions) ==
; updateCounters(counters)
: Useful for updating game counters in the player panel (such as resources).
: 'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ]
: All counters must be referenced in this.gamedatas.counters and will be updated.
: DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'.


; this.slideToObjectPos( $('token_'+token.token_id), $('cp_background'), x_pix, y_pix, 10 ).play();
; addTooltip( node, _( helpString ), _( actionString ), delay );
: Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation.


; this.isSpectator
; addTooltipHtml( node, html, delay );
: Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card).


; this.player_id
; addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay );
: Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation.
: NB: all concerned nodes must have IDs to get tooltips


; this.updateCounters(gamedatas.counters)
; addTooltipHtmlToClass( cssClass, html, delay );
: Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card).
: NB: all concerned nodes must have IDs to get tooltips


; this.addTooltipToClass( 'cp_token_icon_color1', _('Green'), '' );
; addEventToClass: function( cssClassName, eventName, functionName )
: DEPRECATED (please use connectClass below)


; this.addEventToClass( "cp_token", "onclick", "onClickToken");
; connectClass: function( cssClassName, eventName, functionName )
: Same as dojo.connect(), but for all the nodes set with the specified cssClassName


; this.isCurrentPlayerActive()


; this.checkAction( 'selectTokens' )
; addStyleToClass: function( cssClassName, cssProperty, propertyValue )
: Same as dojo.style(), but for all the nodes set with the specified cssClassName


; this.showMessage( _('You must select at least two tokens'), 'error' );
; isCurrentPlayerActive()
: Returns true if the player on whose browser the code is running is currently active (it's his turn to play)


; this.scoreCtrl[ notif.args.player_id ].incValue( notif.args.score_delta );
; checkAction: function( action, nomessage )
: Check if player can do the specified action by taking into account:  _ current game state & _ interface locking
: return true if action is authorized
: return false and display an error message if not (display no message if nomessage is specified)


; this.updateCounters(notif.args.counters);
; showMessage: function( msg, type )
: Show an information message during a few seconds at the top of the page
: Type can be 'error' or 'info'


; this.ajaxcall( "/colorpop/colorpop/endgame.html", { }, this, function( result ) {} );
; this.scoreCtrl[ player_id ].incValue( score_delta );
: Adds score_delta (positive or negative integer) to the current score value for player

2013年5月6日 (月) 18:08時点における最新版

This page references useful server side and client side functions (and some interesting class variables), so that nobody needs to reinvent the wheel (unless he wants to).

This list is not exhaustive, in particular functions already well described by comments in the 'EmptyGame' game template may not be described again below.

Server side (PHP functions)

Client side (Javascript functions)

this.player_id
Id of the player on whose browser the code is running.
this.isSpectator
Flag set to true if the user at the table is a spectator (not a player).
this.gamedatas
Contains your initial set of datas to init the game, created at game start or game refresh (F5)
You can update it as needed to keep an up to date reference of the game on the client side.
slideToObject
function( mobile_obj, target_obj, duration, delay )
Return an dojo.fx animation that is sliding a DOM object from its current position over another one
Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo.
slideToObjectPos
function( mobile_obj, target_obj, target_x, target_y, duration, delay )
Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object.
updateCounters(counters)
Useful for updating game counters in the player panel (such as resources).
'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ]
All counters must be referenced in this.gamedatas.counters and will be updated.
DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'.
addTooltip( node, _( helpString ), _( actionString ), delay );
Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation.
addTooltipHtml( node, html, delay );
Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card).
addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay );
Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation.
NB: all concerned nodes must have IDs to get tooltips
addTooltipHtmlToClass( cssClass, html, delay );
Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card).
NB: all concerned nodes must have IDs to get tooltips
addEventToClass
function( cssClassName, eventName, functionName )
DEPRECATED (please use connectClass below)
connectClass
function( cssClassName, eventName, functionName )
Same as dojo.connect(), but for all the nodes set with the specified cssClassName


addStyleToClass
function( cssClassName, cssProperty, propertyValue )
Same as dojo.style(), but for all the nodes set with the specified cssClassName
isCurrentPlayerActive()
Returns true if the player on whose browser the code is running is currently active (it's his turn to play)
checkAction
function( action, nomessage )
Check if player can do the specified action by taking into account: _ current game state & _ interface locking
return true if action is authorized
return false and display an error message if not (display no message if nomessage is specified)
showMessage
function( msg, type )
Show an information message during a few seconds at the top of the page
Type can be 'error' or 'info'
this.scoreCtrl[ player_id ].incValue( score_delta );
Adds score_delta (positive or negative integer) to the current score value for player