Remove internal/conv

This sets font rendering back a little bit, but not much.
This commit is contained in:
2020-03-21 13:37:20 +00:00
parent 4c0355ac4f
commit be4229b8fe
8 changed files with 145 additions and 220 deletions

View File

@@ -2,7 +2,6 @@ package main
import (
"flag"
"fmt"
"image"
"log"
"os"
@@ -10,24 +9,23 @@ import (
"github.com/hajimehoshi/ebiten"
"code.ur.gs/lupine/ordoor/internal/conv"
"code.ur.gs/lupine/ordoor/internal/assetstore"
"code.ur.gs/lupine/ordoor/internal/data"
"code.ur.gs/lupine/ordoor/internal/fonts"
"code.ur.gs/lupine/ordoor/internal/menus"
"code.ur.gs/lupine/ordoor/internal/ui"
)
var (
gamePath = flag.String("game-path", "./orig", "Path to a WH40K: Chaos Gate installation")
menuFile = flag.String("menu", "", "Path to a .mnu file, e.g. ./orig/Menu/MainGame.mnu")
menuFile = flag.String("menu", "", "Name of a menu, e.g. Main")
)
type env struct {
menu *menus.Menu
objects []*conv.Object
objects []*assetstore.Object
fonts []*conv.Font
fontObjs []*conv.Object
// fonts []*assetstore.Font
// fontObjs []*assetstore.Object
step int
state state
@@ -39,41 +37,6 @@ type state struct {
winBounds image.Rectangle
}
func loadObjects(names ...string) ([]*conv.Object, error) {
objs := make([]*conv.Object, 0, len(names))
for _, name := range names {
objFile := filepath.Join(filepath.Dir(*menuFile), name)
rawObj, err := data.LoadObject(objFile)
if err != nil {
log.Fatalf("Failed to load %s: %v", name, err)
}
obj, err := conv.ConvertObject(rawObj, name)
if err != nil {
return nil, err
}
objs = append(objs, obj)
}
return objs, nil
}
func loadFonts(names ...string) ([]*conv.Font, error) {
var out []*conv.Font
for _, name := range names {
fnt, err := fonts.LoadFont(filepath.Join(*gamePath, "Fonts", name+".fnt"))
if err != nil {
return nil, fmt.Errorf("%v: %v", name, err)
}
out = append(out, conv.ConvertFont(fnt))
}
return out, nil
}
func main() {
flag.Parse()
@@ -82,6 +45,11 @@ func main() {
os.Exit(1)
}
assets, err := assetstore.New(*gamePath)
if err != nil {
log.Fatal(err)
}
menu, err := menus.LoadMenu(*menuFile)
if err != nil {
log.Fatalf("Couldn't load menu file %s: %v", *menuFile, err)
@@ -93,21 +61,26 @@ func main() {
menu.Internationalize(i18n)
}
loadedFonts, err := loadFonts(menu.FontNames...)
if err != nil {
log.Fatalf("Failed to load font: %v", err)
}
// loadedFonts, err := loadFonts(menu.FontNames...)
// if err != nil {
// log.Fatalf("Failed to load font: %v", err)
// }
menuObjs, err := loadObjects(menu.ObjectFiles...)
if err != nil {
log.Fatalf("Failed to load objects: %v", err)
var menuObjs []*assetstore.Object
for _, filename := range menu.ObjectFiles {
obj, err := assets.ObjectByPath(filepath.Join(*gamePath, "Menu", filename))
if err != nil {
log.Fatalf("Failed to load %v: %v", filename, err)
}
menuObjs = append(menuObjs, obj)
}
state := state{}
env := &env{
menu: menu,
objects: menuObjs,
fonts: loadedFonts,
menu: menu,
objects: menuObjs,
// fonts: loadedFonts,
state: state,
lastState: state,
}
@@ -156,8 +129,6 @@ func (e *env) Draw(screen *ebiten.Image) error {
}
func (e *env) drawRecord(record *menus.Record, screen *ebiten.Image, offset ebiten.GeoM) error {
origOffset := offset
// Draw this record if it's valid to do so. FIXME: lots to learn
if len(record.SpriteId) >= 0 {
spriteId := record.SpriteId[0]
@@ -187,8 +158,10 @@ func (e *env) drawRecord(record *menus.Record, screen *ebiten.Image, offset ebit
// FIXME: Need to handle multiple objects
obj := e.objects[0]
sprite := obj.Sprites[spriteId]
sprite, err := obj.Sprite(spriteId)
if err != nil {
return err
}
x = x + float64(sprite.XOffset)
y = y + float64(sprite.YOffset)
@@ -205,9 +178,9 @@ func (e *env) drawRecord(record *menus.Record, screen *ebiten.Image, offset ebit
// FIXME: we probably shouldn't draw everything?
// FIXME: handle multiple fonts
if len(e.fonts) > 0 && record.Desc != "" {
e.fonts[0].Output(screen, origOffset, record.Desc)
}
// if len(e.fonts) > 0 && record.Desc != "" {
// e.fonts[0].Output(screen, origOffset, record.Desc)
// }
}
out:
// Draw all children of this record