DEV-1761: New rules API (#118)

* DEV-1761: Clean up Ruleset interface (#115)

* remove legacy ruleset types and simplify ruleset interface

* remove unnecessary settings argument from Ruleset interface

* decouple rules.Settings from client API and store settings as strings

* DEV 1761: Add new BoardState and Point fields (#117)

* add Point.TTL, Point.Value, GameState and PointState to BoardState

* allow maps to access BoardState.GameState,PointState

* add PreUpdateBoard and refactor snail_mode with it

* fix bug where an extra turn was printed to the console

* fix formatting

* fix lint errors

Co-authored-by: JonathanArns <jonathan.arns@googlemail.com>
This commit is contained in:
Rob O'Dwyer 2022-10-28 16:49:49 -07:00 committed by GitHub
parent 639362ef46
commit 82e1999126
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 1349 additions and 1610 deletions

View file

@ -27,7 +27,7 @@ func TestPipelineRuleset(t *testing.T) {
name: "test",
pipeline: p,
}
ended, err := pr.IsGameOver(&BoardState{})
ended, _, err := pr.Execute(&BoardState{}, nil)
require.NoError(t, err)
require.True(t, ended)
@ -37,7 +37,7 @@ func TestPipelineRuleset(t *testing.T) {
name: "test",
pipeline: p,
}
ended, err = pr.IsGameOver(&BoardState{})
ended, _, err = pr.Execute(&BoardState{}, nil)
require.NoError(t, err)
require.False(t, ended)
@ -56,10 +56,10 @@ func TestPipelineRuleset(t *testing.T) {
pipeline: p,
}
require.Empty(t, b.Food)
b, err = pr.ModifyInitialBoardState(b)
_, b, err = pr.Execute(b, nil)
require.NoError(t, err)
require.Empty(t, b.Food, "food should not be added on initialisation phase")
b, err = pr.CreateNextBoardState(b, mockSnakeMoves())
_, b, err = pr.Execute(b, mockSnakeMoves())
require.NoError(t, err)
require.NotEmpty(t, b.Food, "fodo should be added now")
}