command

package
v0.0.0-...-3319774 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2020 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Overview

BCDiceコマンドの実行処理のパッケージ。 構文解析で得たコマンドのノードを評価して、最終的な出力のメッセージを生成することができる。

このパッケージにおいて、コマンドの種類ごとに実行の仕方を定義する。

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Result

type Result struct {
	// ゲーム識別子
	GameID string
	// メッセージの部分の配列
	MessageParts []string
	// 振られたダイス
	RolledDice []dice.Die
	// 成功判定の結果
	SuccessCheckResult SuccessCheckResultType
	// シークレットロールかどうか
	IsSecret bool
}

コマンドの実行結果の構造体

func Execute

func Execute(
	node ast.Node,
	gameID string,
	evaluator *evaluator.Evaluator,
) (*Result, error)

Execute は指定されたコマンドを実行する。

node: コマンドのノード, gameID: ゲーム識別子, evaluator: 評価器。

Example (SumRoll)

加算ロールコマンドの例。

// 構文解析する
root, parseErr := parser.Parse("ExampleExecute_sumRoll", []byte("(2*3-4)d6-1d4+1"))
if parseErr != nil {
	return
}

// コマンドと認識されたことを確認する
commandNode, rootIsCommand := root.(*ast.Command)
if !rootIsCommand {
	return
}

// コマンドを実行する
dieFeeder := feeder.NewQueue([]dice.Die{{6, 6}, {5, 6}, {2, 4}})
evaluator := evaluator.NewEvaluator(
	roller.New(dieFeeder),
	evaluator.NewEnvironment(),
)

result, execErr := Execute(commandNode, "DiceBot", evaluator)
if execErr != nil {
	return
}

// 結果のメッセージを出力する
fmt.Println(result.Message())
Output:

DiceBot : (2D6-1D4+1) > 11[6,5]-2[2]+1 > 10

func (*Result) AppendMessagePart

func (r *Result) AppendMessagePart(message string)

AppendMessagePart はメッセージの部分を追加する。

func (*Result) JoinedMessageParts

func (r *Result) JoinedMessageParts() string

JoinedMessageParts は、メッセージの部分を結合したものを返す。

func (*Result) Message

func (r *Result) Message() string

Message はコマンドの応答メッセージを返す。

type SuccessCheckResultType

type SuccessCheckResultType int

成功判定の結果の型

const (
	// 成功判定結果:未指定(既定値)
	SUCCESS_CHECK_UNSPECIFIED SuccessCheckResultType = iota
	// 成功判定結果:成功
	SUCCESS_CHECK_SUCCESS
	// 成功判定結果:失敗
	SUCCESS_CHECK_FAILURE
)

func (SuccessCheckResultType) String

func (r SuccessCheckResultType) String() string

String は成功判定結果を文字列として返す。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL