package components import ( "dk/internal/helpers" "dk/internal/middleware" "dk/internal/router" "dk/internal/spells" "dk/internal/template" "dk/internal/towns" ) // LeftAside generates the left sidebar content func LeftAside(ctx router.Ctx) string { user := middleware.GetCurrentUser(ctx) if user == nil { return "" } tmpl, err := template.Cache.Load("leftside.html") if err != nil { return "leftside failed to load?" } cardinalX := "E" if user.X < 0 { cardinalX = "W" } cardinalY := "S" if user.Y < 0 { cardinalY = "N" } townname := "" if user.Currently == "In Town" { town, err := towns.ByCoords(user.X, user.Y) if err != nil { townname = "error finding town" } townname = "
In " + town.Name + "
" } townlist := "" townIDs := user.GetTownIDs() if len(townIDs) > 0 { townlist = "Teleport to:
" for _, id := range townIDs { town, err := towns.Find(id) if err != nil { continue } townlist += `` + town.Name + "
" } } else { townlist = "No town maps" } return tmpl.RenderNamed(map[string]any{ "user": user.ToMap(), "cardinalX": cardinalX, "cardinalY": cardinalY, "townname": townname, "townlist": townlist, }) } // RightAside generates the right sidebar content func RightAside(ctx router.Ctx) string { user := middleware.GetCurrentUser(ctx) if user == nil { return "" } tmpl, err := template.Cache.Load("rightside.html") if err != nil { return "" } hpPct := helpers.ClampPct(float64(user.HP), float64(user.MaxHP), 0, 100) mpPct := helpers.ClampPct(float64(user.MP), float64(user.MaxMP), 0, 100) tpPct := helpers.ClampPct(float64(user.TP), float64(user.MaxTP), 0, 100) hpColor := "" if hpPct < 35 { hpColor = "danger" } else if hpPct < 75 { hpColor = "warning" } weaponName := "No weapon" if user.WeaponName != "" { weaponName = user.WeaponName } armorName := "No armor" if user.ArmorName != "" { armorName = user.ArmorName } shieldName := "No shield" if user.ShieldName != "" { shieldName = user.ShieldName } slot1Name := "" if user.Slot1Name != "" { slot1Name = user.Slot1Name } slot2Name := "" if user.Slot2Name != "" { slot2Name = user.Slot2Name } slot3Name := "" if user.Slot3Name != "" { slot3Name = user.Slot3Name } magicList := "" list := user.GetSpellIDs() if len(list) > 0 { for i := range list { spell, err := spells.Find(i) if err != nil { continue } if spell.IsHealing() { magicList += `` + spell.Name + "" } } } else { magicList = "No healing spells known" } return tmpl.RenderNamed(map[string]any{ "user": user.ToMap(), "hppct": hpPct, "hpcolor": hpColor, "mppct": mpPct, "tppct": tpPct, "weaponname": weaponName, "armorname": armorName, "shieldname": shieldName, "slot1name": slot1Name, "slot2name": slot2Name, "slot3name": slot3Name, "magiclist": magicList, }) }