InitPlayer
InitPlayer creates very not-ready Player with its basic data structures initialized to an empty, ready-for-data state.
This commit is contained in:
parent
09fdf19948
commit
9e659ecf41
@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -73,7 +74,7 @@ type Player[C StatsCollection] struct {
|
|||||||
Name string
|
Name string
|
||||||
|
|
||||||
// Rand is a source of randomness that other components can use.
|
// Rand is a source of randomness that other components can use.
|
||||||
Rand rand.Rand
|
Rand *rand.Rand
|
||||||
|
|
||||||
Deck *Deck[C]
|
Deck *Deck[C]
|
||||||
Hand []Card[C]
|
Hand []Card[C]
|
||||||
@ -151,6 +152,27 @@ const (
|
|||||||
GameStalled
|
GameStalled
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// InitPlayer returns a mostly-uninitialized Player with the fields
|
||||||
|
// that require specific initialization already configured and the
|
||||||
|
// provided StatsCollection (if any) already assigned to its Stats.
|
||||||
|
// Most fields are not configured and need to be assigned after this.
|
||||||
|
//
|
||||||
|
// The Player is initialized with an empty deck, empty rule collection,
|
||||||
|
// a hand limit of 1, an actions-per-turn limit of 1, and a random
|
||||||
|
// number generator seeded with the nanosecond component of the current time.
|
||||||
|
// The Deck shares this random number generator.
|
||||||
|
func InitPlayer[C StatsCollection](stats C) *Player[C] {
|
||||||
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
return &Player[C]{
|
||||||
|
Stats: stats,
|
||||||
|
Rand: r,
|
||||||
|
Deck: &Deck[C]{rand: r},
|
||||||
|
HandLimit: 1,
|
||||||
|
ActionsPerTurn: 1,
|
||||||
|
Rules: NewRuleCollection[C](),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Over returns whether this state represents a game that is over.
|
// Over returns whether this state represents a game that is over.
|
||||||
func (g GameState) Over() bool {
|
func (g GameState) Over() bool {
|
||||||
return g == GameLost || g == GameWon || g == GameCrashed || g == GameStalled
|
return g == GameLost || g == GameWon || g == GameCrashed || g == GameStalled
|
||||||
|
Loading…
Reference in New Issue
Block a user