Source the palette name from data

This commit is contained in:
2020-06-01 01:24:44 +01:00
parent c1268e8d57
commit 3866ee07a8
8 changed files with 35 additions and 22 deletions

View File

@@ -9,7 +9,6 @@ import (
"strconv"
"strings"
"code.ur.gs/lupine/ordoor/internal/palettes"
"code.ur.gs/lupine/ordoor/internal/util/asciiscan"
)
@@ -143,7 +142,7 @@ func (p *Properties) Point() image.Point {
return image.Point{}
}
func LoadMenu(filename string) (*Menu, error) {
func LoadMenu(filename string, palette color.Palette) (*Menu, error) {
name := filepath.Base(filename)
name = strings.TrimSuffix(name, filepath.Ext(name))
name = strings.ToLower(name)
@@ -163,7 +162,7 @@ func LoadMenu(filename string) (*Menu, error) {
return nil, err
}
if err := loadProperties(out, scanner); err != nil {
if err := loadProperties(out, scanner, palette); err != nil {
return nil, err
}
@@ -189,7 +188,7 @@ func loadObjects(menu *Menu, scanner *asciiscan.Scanner) error {
return nil
}
func loadProperties(menu *Menu, scanner *asciiscan.Scanner) error {
func loadProperties(menu *Menu, scanner *asciiscan.Scanner, palette color.Palette) error {
for {
ok, err := scanner.PeekProperty()
@@ -218,9 +217,9 @@ func loadProperties(menu *Menu, scanner *asciiscan.Scanner) error {
switch strings.ToUpper(k) {
case "BACKGROUND COLOR":
menu.BackgroundColor = palettes.DefaultPalette()[vInt]
menu.BackgroundColor = palette[vInt]
case "HYPERTEXT COLOR":
menu.HypertextColor = palettes.DefaultPalette()[vInt]
menu.HypertextColor = palette[vInt]
case "FONT TYPE":
menu.FontType = vInt
default:
@@ -319,7 +318,7 @@ func loadRecords(baseDir string, menu *Menu, scanner *asciiscan.Scanner) error {
return nil
}
func LoadMenus(dir string) (map[string]*Menu, error) {
func LoadMenus(dir string, palette color.Palette) (map[string]*Menu, error) {
fis, err := ioutil.ReadDir(dir)
if err != nil {
return nil, err
@@ -337,7 +336,7 @@ func LoadMenus(dir string) (map[string]*Menu, error) {
continue
}
built, err := LoadMenu(filepath.Join(dir, relname))
built, err := LoadMenu(filepath.Join(dir, relname), palette)
if err != nil {
return nil, fmt.Errorf("%s: %v", filepath.Join(dir, relname), err)
}