package components import ( "dk/internal/helpers" "dk/internal/middleware" "dk/internal/router" "dk/internal/template" "dk/internal/towns" "dk/internal/users" ) // LeftAside generates the left sidebar content func LeftAside(ctx router.Ctx) string { if !middleware.IsAuthenticated(ctx) { return "" } leftSideTmpl, err := template.Cache.Load("leftside.html") if err != nil { return "leftside failed to load?" } currentUser := middleware.GetCurrentUser(ctx) if currentUser == nil { return "no currentUser?" } user, err := users.Find(currentUser.ID) if err != nil { return "user not found?" } 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 + "" } leftSideData := map[string]any{ "user": user.ToMap(), "cardinalX": cardinalX, "cardinalY": cardinalY, "townname": townname, "townlist": "@TODO", } return leftSideTmpl.RenderNamed(leftSideData) } // 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) return tmpl.RenderNamed(map[string]any{ "user": user.ToMap(), "hppct": hpPct, "mppct": mpPct, "tppct": tpPct, }) }