diff --git a/character.go b/character.go index 15d5f5e..b28e6f1 100644 --- a/character.go +++ b/character.go @@ -2,14 +2,59 @@ package main import ( - "github.com/antonholmquist/jason" + "encoding/json" "io/ioutil" "os" "strconv" "strings" ) -var charmap map[string]*jason.Object +type Character struct { + irc string + personal PersonalData + equipment EquipmentData + stats StatData + wealth WealthData +} + +type PersonalData struct { + name string + lvl int + race string + xp int + height int + alignment string + classes []string + weight int + sex string + hp int + ac int + age int +} + +type EquipmentData struct { + armour []string + weapons []string + items []string + missiles []string +} + +type StatData struct { + con int + str int + intl int + cha int + wis int + dex int +} + +type WealthData struct { + coins int + other []string + gems []string +} + +var charmap map[string]*Character func importChar(nick string) bool { file, err := ioutil.ReadFile("json/" + nick + ".json") @@ -18,10 +63,12 @@ func importChar(nick string) bool { return false } - char, _ := jason.NewObjectFromBytes(file) + var char Character + json.Unmarshal(file, char) + charmap = map[string]*jason.Object{ - nick: char, + char.irc: char, } return true @@ -31,19 +78,33 @@ func printChar(nick string, cat string, scat string, item string) string { if _, err := os.Stat("json/" + nick + ".json"); os.IsNotExist(err) { return "does not exist" } + + var fixedCat string + + + + switch (cat) { + case "personal": + fixedCat = "PersonalData" + break + case "equipment": + fixedCat = "EquipmentData" + break + case "stats": + fixedCat = "StatData" + break + case "wealth": + fixedCat = "WealthData" + break + case "nil": + fixedCat = "nil" + break + default: + return "invalid category" + } if scat == "nil" { - test, _ := charmap[nick].GetString(cat, item) - - if len(test) == 0 { - val, _ := charmap[nick].GetInt64(cat, item) - return strconv.FormatInt(val, 10) - } else { - val, _ := charmap[nick].GetString(cat, item) - return val - } - - return "does not exist" + return charmap[nick].fixedCat. } else { test, _ := charmap[nick].GetString(cat, scat, item)