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:
parent
e416384007
commit
015b681f14
8 changed files with 1006 additions and 917 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue