diff --git a/assets/NormalFont.ttf b/assets/NormalFont.ttf deleted file mode 100644 index 284f684..0000000 Binary files a/assets/NormalFont.ttf and /dev/null differ diff --git a/assets/assets.go b/assets/assets.go index 52e32e4..aee5509 100644 --- a/assets/assets.go +++ b/assets/assets.go @@ -105,8 +105,8 @@ var Towers_json []byte //go:embed units.json var Units_json []byte -//go:embed NormalFont.ttf -var NormalFont_ttf []byte +//go:embed kongtext.ttf +var Kongtext_ttf []byte //go:embed LifeBarMiniProgress.png var LifeBarMiniProgress_png []byte diff --git a/assets/kongtext.ttf b/assets/kongtext.ttf new file mode 100644 index 0000000..5e4d65f Binary files /dev/null and b/assets/kongtext.ttf differ diff --git a/client/hud.go b/client/hud.go index 9dad0c4..0bd23a4 100644 --- a/client/hud.go +++ b/client/hud.go @@ -7,6 +7,8 @@ import ( "image/color" "math" "sort" + "strconv" + "strings" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/text" @@ -323,19 +325,58 @@ func (hs *HUDStore) Draw(screen *ebiten.Image) { screen.DrawImage(ebiten.NewImageFromImage(hst.SelectedTower.Faceset()), op) } + // To make the table for the players more readable we are gonna make a table, + // the table will have headers and here I'm gonna put the characters each one + // will have from left to right: + // * -Space-: 2 "|\s" + // * Name: 20 + // * -Space-: 3 "\s|\s" + // * Lives: 8 + // * -Space-: 3 "\s|\s" + // * Gold: 8 + // * -Space-: 3 "\s|\s" + // * Income: 8 + // * -Space-: 2 "\s|" + // Total of 57 psit := hs.game.Store.Players.GetState().(store.PlayersState).IncomeTimer players := hs.game.Store.Players.List() - text.Draw(screen, fmt.Sprintf("Income Timer: %ds", psit), smallFont, 0, 15, color.White) - var pcount = 2 + text.Draw(screen, fmt.Sprintf("Income Timer: %ds", psit), smallFont, 0, 16, color.White) + var pcount = 4 var sortedPlayers = make([]*store.Player, 0, 0) for _, p := range players { sortedPlayers = append(sortedPlayers, p) } sort.Slice(sortedPlayers, func(i, j int) bool { return sortedPlayers[i].LineID < sortedPlayers[j].LineID }) + text.Draw(screen, "---------------------------------------------------------", smallFont, 0, 32, color.White) + text.Draw(screen, "| Name | Lives | Gold | Income |", smallFont, 0, 48, color.White) for _, p := range sortedPlayers { - text.Draw(screen, fmt.Sprintf("Name: %s, Lives: %d, Gold: %d, Income: %d", p.Name, p.Lives, p.Gold, p.Income), smallFont, 0, 15*pcount, color.White) + var c color.Color = color.White + if p.ID == cp.ID { + c = green + } + text.Draw(screen, fmt.Sprintf( + "| %s | %s | %s | %s |", + fillIn(p.Name, 20), + fillIn(strconv.Itoa(p.Lives), 8), + fillIn(strconv.Itoa(p.Gold), 8), + fillIn(strconv.Itoa(p.Income), 8), + ), smallFont, 0, 16*pcount, c) pcount++ } + text.Draw(screen, "_________________________________________________________", smallFont, 0, 16*pcount, color.White) +} + +func fillIn(s string, l int) string { + ss := make([]string, l, l) + for i, v := range s { + ss[i] = string(v) + } + for i, v := range ss { + if string(v) == "" { + ss[i] = " " + } + } + return strings.Join(ss, "") } func (hs *HUDStore) Reduce(state, a interface{}) interface{} { diff --git a/client/new.go b/client/new.go index cbfa902..10a0a05 100644 --- a/client/new.go +++ b/client/new.go @@ -36,7 +36,7 @@ func init() { rand.Seed(time.Now().UnixNano()) // Initialize Font - tt, err := opentype.Parse(assets.NormalFont_ttf) + tt, err := opentype.Parse(assets.Kongtext_ttf) if err != nil { log.Fatal(err) } @@ -55,6 +55,7 @@ func init() { if err != nil { log.Fatal(err) } + } func New(ctx context.Context, ad *ActionDispatcher, rs *RouterStore, opt Options) error { diff --git a/go.mod b/go.mod index 79c04f5..9190372 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/xescugc/maze-wars go 1.21 require ( - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/gofrs/uuid v4.4.0+incompatible github.com/golang/mock v1.6.0 github.com/gorilla/handlers v1.5.2 @@ -18,6 +17,7 @@ require ( ) require ( + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.4.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect diff --git a/server/assets/wasm/maze-wars.wasm b/server/assets/wasm/maze-wars.wasm index e6a81c0..55c955a 100755 Binary files a/server/assets/wasm/maze-wars.wasm and b/server/assets/wasm/maze-wars.wasm differ