Accounted for user interaction and switched to other color package

This commit is contained in:
Nox Sluijtman 2022-08-20 22:01:13 +02:00
parent 417762a74d
commit 48b0972f30
3 changed files with 90 additions and 22 deletions

7
go.mod
View file

@ -3,3 +3,10 @@ module gitlab.com/EternalWanderer/sheet-parser/v2
go 1.19 go 1.19
require gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa require gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa
require (
github.com/fatih/color v1.13.0 // indirect
github.com/mattn/go-colorable v0.1.9 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
)

11
go.sum
View file

@ -1,6 +1,17 @@
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220819131953-2d560c42a087 h1:0UCn74xm94G26W+6/LNb+Zc2dFFHKVgCVhVgam4zw/A= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220819131953-2d560c42a087 h1:0UCn74xm94G26W+6/LNb+Zc2dFFHKVgCVhVgam4zw/A=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220819131953-2d560c42a087/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220819131953-2d560c42a087/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820113707-1e57a27bcf70 h1:Q3qDUsGJ+tEXz2vlC2ypIoipkcP34TvMs1vPw2p09LE= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820113707-1e57a27bcf70 h1:Q3qDUsGJ+tEXz2vlC2ypIoipkcP34TvMs1vPw2p09LE=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820113707-1e57a27bcf70/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820113707-1e57a27bcf70/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa h1:sSHBJ9+7N9m1gk+npe6wqs2Ghn4bYhyMN5eXWsKBH5Y= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa h1:sSHBJ9+7N9m1gk+npe6wqs2Ghn4bYhyMN5eXWsKBH5Y=
gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs= gitlab.com/EternalWanderer/dice-roller v0.0.0-20220820120015-fa11a906e0aa/go.mod h1:SNEEOhMarhxX2gBUZ4RIDgEvlKaZorPKfhaqpD09/bs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

94
main.go
View file

@ -7,25 +7,26 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"gitlab.com/EternalWanderer/dice-roller/Colors" "github.com/fatih/color"
"gitlab.com/EternalWanderer/dice-roller/Dice" "gitlab.com/EternalWanderer/dice-roller/Dice"
) )
var ( var (
path, skillString, saveString, checkString string path, skillString, saveString, statString string
modifier, diceThrows, surfaces int modifier, diceThrows, surfaces int
char Character X, Y int
skillMap = make(map[string]int) char Character
statMap = make(map[string]int) skillMap = make(map[string]int)
advantage, disadvantage bool statMap = make(map[string]int)
advantage, disadvantage bool
) )
func parseFlags() { func parseFlags() {
flag.StringVar(&path, "file", "stats.json", "fock me") flag.StringVar(&path, "file", "stats.json", "fock me")
flag.StringVar(&path, "f", "stats.json", "fock me") flag.StringVar(&path, "f", "stats.json", "fock me")
flag.StringVar(&skillString, "skill", "athletics", "Skill to parse") flag.StringVar(&skillString, "skill", "", "Skill to parse")
flag.StringVar(&checkString, "check", "strength", "Stat check") flag.StringVar(&statString, "stat", "", "Stat check")
flag.StringVar(&saveString, "save", "strength", "Saving throw to... throw") flag.StringVar(&saveString, "save", "", "Saving throw to... throw")
flag.BoolVar(&advantage, "advantage", advantage, "Roll with advantage") flag.BoolVar(&advantage, "advantage", advantage, "Roll with advantage")
flag.BoolVar(&disadvantage, "disadvantage", disadvantage, "Roll with disadvantage") flag.BoolVar(&disadvantage, "disadvantage", disadvantage, "Roll with disadvantage")
flag.Parse() flag.Parse()
@ -65,14 +66,58 @@ func main() {
readJson() readJson()
initMaps() initMaps()
fmt.Println("Skill check:", skillString) switch {
fmt.Println(skillCheck(getSkill(skillString))) case advantage && disadvantage:
fmt.Println("Stat check", checkString) fmt.Println("You can't roll with both advantage and disadvantage")
fmt.Println(statCheck(getStat(checkString))) os.Exit(1)
fmt.Println("Saving throw", saveString) case len(saveString) > 0:
fmt.Println(savingThrow(getStat(saveString))) result := savingThrow(getStat(saveString))
fmt.Println("Proficiency") if advantage {
fmt.Println(getProficiency()) color.Yellow("Rolling %s saving throw with advantage...", saveString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Green("%d\n", result)
} else if disadvantage {
color.Yellow("Rolling %s saving throw with disadvantage...", saveString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Red("%d\n", result)
} else {
color.Yellow("Rolling %s saving throw...", saveString)
color.Green("%d\n", result)
}
case len(skillString) > 0:
result := skillCheck(getSkill(skillString))
if advantage {
color.Yellow("Rolling %s saving throw with advantage...", skillString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Green("%d\n", result)
} else if disadvantage {
color.Yellow("Rolling %s saving throw with disadvantage...", skillString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Red("%d\n", result)
} else {
color.Yellow("Rolling %s check...", skillString)
color.Green("%d\n", result)
}
case len(statString) > 0:
result := statCheck(getStat(statString))
if advantage {
color.Yellow("Rolling %s check with advantage...", statString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Green("%d\n", result)
} else if disadvantage {
color.Yellow("Rolling %s check with disadvantage...", statString)
fmt.Printf("x: %d\ty: %d\n", X, Y)
color.Red("%d\n", result)
} else {
color.Yellow("Rolling %s check...", statString)
color.Green("%d\n", result)
}
default:
fmt.Println("bollock")
}
} }
func getProficiency() int { func getProficiency() int {
@ -94,16 +139,21 @@ func getModifier(stat Stat) int {
} }
func rollDice() int { func rollDice() int {
var die, x, y int var die int
switch { switch {
case advantage: case advantage:
die, x, y = Dice.Advantage() die, X, Y = Dice.Advantage()
case disadvantage: case disadvantage:
die, x, y = Dice.Disadvantage() die, X, Y = Dice.Disadvantage()
default: default:
die = Dice.SimpleCast() die = Dice.SimpleCast()
} }
fmt.Printf("%s%d%s\tx: %d\ty: %d\n", Colors.ColorGreen, die, Colors.ColorReset, x, y) switch die {
case 20:
color.Magenta("Natural 20!\n")
case 1:
color.Magenta("Natural 1!\n")
}
return die return die
} }