53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
// 年糕历险记 —— 客户端入口。
|
||
package main
|
||
|
||
import (
|
||
"context"
|
||
"flag"
|
||
"os"
|
||
"os/signal"
|
||
|
||
"mc/internal/config"
|
||
"mc/internal/engine"
|
||
"mc/internal/logx"
|
||
)
|
||
|
||
var devMode = flag.Bool("dev", devDefault, "开发模式:直接读取 assets/(默认随构建 tag)")
|
||
|
||
// clientApp 客户端应用骨架(窗口/渲染在 Todo 4 接入)。
|
||
type clientApp struct {
|
||
cfg *config.ClientConfig
|
||
log *logx.Logger
|
||
}
|
||
|
||
// Tick 每 tick(20Hz)逻辑。
|
||
func (a *clientApp) Tick(dt float64) {}
|
||
|
||
// Render 每帧渲染(占位)。
|
||
func (a *clientApp) Render() {}
|
||
|
||
// ShouldClose 窗口关闭判定(占位)。
|
||
func (a *clientApp) ShouldClose() bool { return false }
|
||
|
||
func main() {
|
||
flag.Parse()
|
||
|
||
log, err := logx.New("logs/client.log", logx.LevelInfo)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
cfg, err := config.Load("config/client.yaml", config.DefaultClient())
|
||
if err != nil {
|
||
log.Warnf("配置加载失败,使用默认值:%v", err)
|
||
}
|
||
log.Infof("%s 客户端启动:%dx%d,语言 %s,视距 %d", cfg.Client.WindowTitle, cfg.Client.WindowWidth, cfg.Client.WindowHeight, cfg.Client.Language, cfg.Client.RenderDistance)
|
||
|
||
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
|
||
defer stop()
|
||
|
||
app := &clientApp{cfg: cfg, log: log}
|
||
engine.Run(ctx, app, app)
|
||
log.Infof("客户端已退出")
|
||
}
|