DEV-280: Extract board generation out of rules.Ruleset (#51)

* extract board generation out of rules.Ruleset

* update comment and remove redundant interface check

* clone boardState in constrictor to respect the ModifyBoardState interface
This commit is contained in:
Rob O'Dwyer 2021-08-23 17:13:58 -07:00 committed by GitHub
parent e416384007
commit 015b681f14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 1006 additions and 917 deletions

View file

@ -1,23 +1,21 @@
package rules
import ()
type ConstrictorRuleset struct {
StandardRuleset
}
func (r *ConstrictorRuleset) CreateInitialBoardState(width int32, height int32, snakeIDs []string) (*BoardState, error) {
initialBoardState, err := r.StandardRuleset.CreateInitialBoardState(width, height, snakeIDs)
func (r *ConstrictorRuleset) ModifyInitialBoardState(initialBoardState *BoardState) (*BoardState, error) {
initialBoardState, err := r.StandardRuleset.ModifyInitialBoardState(initialBoardState)
if err != nil {
return nil, err
}
newBoardState := initialBoardState.Clone()
err = r.applyConstrictorRules(newBoardState)
if err != nil {
return nil, err
}
err = r.applyConstrictorRules(initialBoardState)
if err != nil {
return nil, err
}
return initialBoardState, nil
return newBoardState, nil
}
func (r *ConstrictorRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error) {