79 lines
1.8 KiB
Go
79 lines
1.8 KiB
Go
// Binary smoketest runs a very simple cardsim thing.
|
|
package main
|
|
|
|
import (
|
|
"cardSimEngine/cardsim"
|
|
"fmt"
|
|
|
|
"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
|
|
}
|