86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
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 = "<b>In " + town.Name + "</b>"
|
|
}
|
|
|
|
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,
|
|
})
|
|
}
|