package tables import ( "bytes" "encoding/json" "mazeratsgen/internal/dice" "text/template" ) type Name struct { FirstName string LastName string FullName string Gender string Class string Seed int64 } func GenRandomName(seed int64) Name { var class string var gender string roller := dice.NewRoller(seed) classRoll, _ := roller.Roll("1d2") if classRoll[0] == 1 { class = "Upperclass" } else { class = "Lowerclass" } genderRoll, _ := roller.Roll("1d2") if genderRoll[0] == 1 { gender = "Male" } else { gender = "Female" } return GenName(class, gender, seed) } func GenName(class string, gender string, seed int64) Name { name := Name{Seed: seed} roller := dice.NewRoller(seed) npcTable := NPCTable{Roller: roller} if gender == "Male" { name.Gender = "Male" name.FirstName = npcTable.MaleName(roller.TableRoll()) } else { name.Gender = "Female" name.FirstName = npcTable.FemaleName(roller.TableRoll()) } if class == "Upper" { name.Class = "Upper" name.LastName = npcTable.UpperClassSurname(roller.TableRoll()) } else { name.Class = "Lower" name.LastName = npcTable.LowerClassSurname(roller.TableRoll()) } name.FullName = name.FirstName + " " + name.LastName return name } // ConvertToJSON takes a interface and unmarshals it func ConvertToJSON(o interface{}) ([]byte, error) { json, err := json.MarshalIndent(o, "", " ") if err != nil { return []byte{}, err } return json, nil } func ConvertToText(o interface{}, t string) (string, error) { tmpl, _ := template.New("textTemplate").Parse(t) var d bytes.Buffer err := tmpl.Execute(&d, &o) if err != nil { return "", err } return d.String(), nil }