dholmes / bga-workbench
BoardGameArena 工作台
0.2.1
2021-06-01 23:35 UTC
Requires
- php: >=7.2.0
- ext-mysqli: *
- ext-pdo_mysql: *
- classpreloader/classpreloader: ^3.1.0
- doctrine/dbal: ^2.5.12
- fzaninotto/faker: ^1.7.1
- hamcrest/hamcrest-php: ^2.0.0
- illuminate/support: >=4.0 < 6.0.0
- jasonlewis/resource-watcher: 1.2.0
- lstrojny/functional-php: >=1.6.0 <1.8.0
- nette/reflection: ^2.4.2
- phpoption/phpoption: ^1.5.0
- phpseclib/phpseclib: ^2.0.6
- squizlabs/php_codesniffer: ^3.0.0
- symfony/config: ^3.3.8
- symfony/console: ^3.3.8
- symfony/finder: ^3.3.8
- symfony/process: ^3.3.8
- symfony/yaml: ^3.3.8
Requires (Dev)
- phpunit/phpunit: ^6.2.3
README
一套用于与BoardGameArena项目协同工作的工具。
安装
通过composer
composer require --dev dholmes/bga-workbench
通过Docker
docker build -t bgawb . alias bgawb="docker run --rm -v $PWD:/data -w /data bgawb"
(最后一行应设置在您的 ~/.bashrc 中,以保持别名在新终端中生效)
要设置项目以与BGA Workbench协同工作,您需要在根目录中有一个 bgaproject.yml
文件。要生成一个,请查看bgawb init
命令。
初始化BGA项目
安装 bgawb 后,您可以运行以下命令以在当前目录中交互式地创建一个 bgaproject.yml
文件。
bgawb init
部署到BGA Studio
bgawb build --deploy
持续部署到Studio
监视开发文件,并在它们更改时部署它们。
bgawb build --deploy --watch
编译composer项目
Board Game Arena 生产框架/环境不原生支持 Composer 项目设置。通过在您的 bgaproject.yml
文件中设置 useComposer: true
,在部署前,bgawb build
(部署到BGA Studio)命令将所有非开发composer依赖项合并到您的 .game.php 文件中。
测试工具
提供了一些测试工具,以帮助测试标准BGA项目游戏的各个部分。
验证命令
将对您的项目设置运行一些基本检查。例如,您是否有在BGA平台上运行所需的文件(.game.php
,.action.php
等),您的 states.inc.php
文件是否有效等。
bgawb validate
PHPUnit TestHelp 特性
包括此特性和实现 createGameTableInstanceBuilder
方法将为每个运行的测试设置和撤销一个游戏表格实例。请注意,这使用了 setUp
和 tearDown
PHPUnit 插件。
<?php namespace Game\Tests; use PHPUnit\Framework\TestCase; use BGAWorkbench\Test\TestHelp; use Doctrine\DBAL\Connection; use BGAWorkbench\Utils; class ChooseAttackTest extends TestCase { use TestHelp; protected function createGameTableInstanceBuilder() : TableInstanceBuilder { return $this->gameTableInstanceBuilder() ->setPlayersWithIds([66, 77]) ->overridePlayersPostSetup([ 66 => ['player_color' => 'ff0000'], 77 => ['player_color' => '00ff00'] ]); } public function testAction() { $action = $this->table ->setupNewGame() ->withDbConnection(function (Connection $db) { $db->exec('INSERT battlefield_card (player_id, type, x, y) VALUES (' . join('), (', [ [77, '"infantry"', 0, -1], [66, '"infantry"', 0, 1], [66, '"artillery"', 6, 1], ]) . ')'); }) ->createActionInstanceForCurrentPlayer(66) ->stubActivePlayerId(66) ->stubArgs(['x' => 5, 'y' => 5]); $action->chooseAttack(); // TODO: Run some asserts on the db } public function testStateFunc() { $game = $this->table ->setupNewGame() ->createGameInstanceWithNoBoundedPlayer() ->stubActivePlayerId(66); $game->stNextPlayer(); } public function testGetAllDatas() { $game = $this->table ->setupNewGame() ->withDbConnection(function (Connection $db) { $db->exec('DELETE FROM deck_card'); $db->exec('DELETE FROM playable_card'); $db->exec('INSERT INTO battlefield_card (player_id, type, x, y) VALUES (66, "tank", 0, 2)'); $db->executeUpdate('UPDATE player SET player_score_aux = 1 WHERE player_id = 66'); }) ->createGameInstanceForCurrentPlayer(66); $datas = Utils::callProtectedMethod($game, 'getAllDatas'); // TODO: Some asserts on $datas } }
使用BGA Workbench的项目
开发
即如果您想对BGA Workbench项目进行一些修改。这在使用库在自己的项目中是不必要的。
需求
设置开发者机器
vagrant up
运行测试
vagrant ssh
composer test
发布新版本
- 在github上添加带有版本号的发布/标签。
- 转到packagist网址并点击“更新”:https://packagist.org.cn/packages/dholmes/bga-workbench。这应该自动完成,但如果留下不更新,则可以完成。