// Binary smoketest runs a very simple cardsim thing. package main import ( "fmt" "git.chromaticdragon.app/kistaro/CardSimEngine/cardsim" "github.com/kr/pretty" ) func main() { p := cardsim.InitPlayer( &SmokeTestCollection{ Number: cardsim.Stored[int]{ Name: "Number", Value: 0, }, Total: cardsim.Stored[int64]{ Name: "Total", Value: 0, }, Turns: cardsim.Invisible[int]{ Name: "Turns", Value: 0, }, Flavor: cardsim.Stored[string]{ Name: "Flavor", Value: "Lemon", }, }, ) p.Name = "Dave" p.HandLimit = 3 p.ActionsPerTurn = 2 installRules(p.Rules) initDeck(p.Deck) installPermanentActions(&p.PermanentActions) p.InfoPanels = []cardsim.InfoPanel[*SmokeTestCollection]{ &cardsim.BasicStatsPanel[*SmokeTestCollection]{ Name: cardsim.MsgStr("Stats"), Intro: cardsim.MsgStr("Hi! These are the smoke test stats."), }, ruledumper{}, } p.Prompt = prompt{} p.DebugLevel = 5 err := cardsim.RunSimpleTerminalUI(p) if err != nil { fmt.Println("Terminated with error:") fmt.Println(err) } else { fmt.Println("Terminated without error.") } } type prompt struct{} func (prompt) Title(p *cardsim.Player[*SmokeTestCollection]) cardsim.Message { return cardsim.MsgStr("Smoke Test") } func (prompt) Info(p *cardsim.Player[*SmokeTestCollection]) ([]cardsim.Message, error) { return []cardsim.Message{ cardsim.MsgStr("Here, have some stuff."), cardsim.Msgf("It's turn %d according to the player and turn %d according to me.", p.TurnNumber, p.Stats.Turns.Value), }, nil } type ruledumper struct{} func (ruledumper) Title(p *player) cardsim.Message { return cardsim.MsgStr("Rule Dumper") } func (ruledumper) Info(p *player) ([]cardsim.Message, error) { return []cardsim.Message{cardsim.Msgf("%# v", pretty.Formatter(p.Rules))}, nil }