dholmes/bga-workbench 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dholmes/bga-workbench

最新稳定版本:0.2.1

Composer 安装命令:

composer require dholmes/bga-workbench

包简介

BoardGameArena Workbench

README 文档

README

Build Latest Stable Version

A set of tools to work with BoardGameArena projects.

Installation

Via composer:

composer require --dev dholmes/bga-workbench

Via Docker:

docker build -t bgawb .
alias bgawb="docker run --rm -v $PWD:/data -w /data bgawb"

(this last line should be set in your ~/.bashrc to keep the alias working in a new terminal)

To set up your project to work with BGA Workbench you need to have a bgaproject.yml file in the root. To generate one see the bgawb init command.

Initialise BGA Project

Once you've installed bgawb you can run the below command to interactively create a bgaproject.yml file in your current directory.

bgawb init

Deploying to BGA Studio

bgawb build --deploy

Continuous Deployment to Studio

Watches development files and deploys them as they change.

bgawb build --deploy --watch

Compiling composer projects

The Board Game Arena production framework/environment doesn't natively support a Composer project setup. By having useComposer: true set in your bgaproject.yml file, the [bgawb build](Deploying to BGA Studio) command will merge all non-dev composer dependencies inline into your .game.php file before deploying.

Testing Utilities

Some testing utilities are provided to help test various parts of a standard BGA project game.

The Validate Command

Will run some basic checks on your project setup. e.g. whether you have the required files to function on the BGA platform (.game.php, .action.php, etc), whether your states.inc.php file is valid, etc.

bgawb validate

PHPUnit TestHelp trait

Including this trait and implementing the createGameTableInstanceBuilder method will set up and tear down a game table instance for each test that is run. Note that this makes use of the setUp and tearDown PHPUnit hooks

<?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
    }
}

Projects Using BGA Workbench

Development

i.e. if you want to make some changes to the BGA Workbench project. This is not required for using the library in your own project.

Requirements

Setting up Developer Machine

vagrant up

Running Tests

vagrant ssh
composer test

Publishing a New Version

  1. Add a release/tag on github with the version number.
  2. Go to the packagist url and click "Update": https://packagist.org/packages/dholmes/bga-workbench. This should be done automatically though if just left.

统计信息

  • 总下载量: 5.27k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 37
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 37
  • Watchers: 4
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-09-21

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固