From 701205ac82c961f5db406eecdda7f03fc1d0b9c7 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Thu, 6 Jul 2023 01:20:23 +0200 Subject: [PATCH] render GetImage and replace Options prefix to Args --- domain/level.go | 6 ++++-- domain/process.go | 2 +- konstructor/engine/engine.utils.go | 19 +++-------------- konstructor/engine/engine.wrapper.go | 2 +- konstructor/engine/screen.playground.go | 2 +- konstructor/entity/entity.dialog.go | 2 +- konstructor/entity/entity.domain.go | 4 ++-- konstructor/entity/entity.engine.go | 4 ++-- konstructor/entity/entity.font.go | 6 +++--- konstructor/entity/entity.item.go | 4 ++-- konstructor/entity/entity.menu.go | 1 - konstructor/entity/entity.npc.go | 4 ++-- konstructor/entity/entity.object.go | 4 ++-- konstructor/entity/entity.player.go | 8 +++---- konstructor/entity/entity.playground.go | 15 ++++--------- konstructor/entity/entity.render.go | 28 +++++++++++++++++++++++++ konstructor/konstructor.go | 2 +- 17 files changed, 61 insertions(+), 52 deletions(-) create mode 100644 konstructor/entity/entity.render.go diff --git a/domain/level.go b/domain/level.go index 7b870aa..150fb30 100644 --- a/domain/level.go +++ b/domain/level.go @@ -9,7 +9,9 @@ func (d *Domain) InitLevel() { Name: "Level I.", Playgrounds: []entity.Playground{ { - Background: "assets/images/playgrounds/level_1_playground_1.png", + Render: entity.Render{ + Image: "assets/images/playgrounds/level_1_playground_1.png", + }, Objects: []entity.Object{ { ID: "test_object", @@ -20,7 +22,7 @@ func (d *Domain) InitLevel() { }, Type: entity.ObjectType{ ID: "test_object_type", - RenderOptions: entity.RenderOptions{ + Render: entity.Render{ Image: "assets/images/objects/test_object.png", Width: 30, Height: 30, diff --git a/domain/process.go b/domain/process.go index ab5def4..a36006c 100644 --- a/domain/process.go +++ b/domain/process.go @@ -2,6 +2,6 @@ package domain import "game/konstructor/entity" -func (d *Domain) Process(options entity.DomainProcessOptions) { +func (d *Domain) Process(options entity.DomainProcessArgs) { } diff --git a/konstructor/engine/engine.utils.go b/konstructor/engine/engine.utils.go index 2e28c84..1bed34a 100644 --- a/konstructor/engine/engine.utils.go +++ b/konstructor/engine/engine.utils.go @@ -1,9 +1,7 @@ package engine import ( - "bytes" - "image" - "io/ioutil" + "game/konstructor/entity" "log" _ "image/png" @@ -11,22 +9,11 @@ import ( "github.com/hajimehoshi/ebiten" ) -func LoadImage(path string) *ebiten.Image { - - file, err := ioutil.ReadFile(path) - if err != nil { - log.Fatal(err) - } - - img, _, err := image.Decode(bytes.NewReader(file)) - if err != nil { - log.Fatal(err) - } - +func (e *Engine) GetImage(render_options entity.Render) *ebiten.Image { + img := render_options.GetImage() out, err := ebiten.NewImageFromImage(img, 0) if err != nil { log.Fatal(err) } - return out } diff --git a/konstructor/engine/engine.wrapper.go b/konstructor/engine/engine.wrapper.go index b31e6d1..b8ee993 100644 --- a/konstructor/engine/engine.wrapper.go +++ b/konstructor/engine/engine.wrapper.go @@ -10,7 +10,7 @@ type EngineWrapper struct { Engine Engine } -func (ew *EngineWrapper) Init(options entity.EngineOptions) { +func (ew *EngineWrapper) Init(options entity.EngineArgs) { ew.Engine = Engine{ KContext: options.KContext, Domain: options.Domain, diff --git a/konstructor/engine/screen.playground.go b/konstructor/engine/screen.playground.go index dcb7193..de3dbe0 100644 --- a/konstructor/engine/screen.playground.go +++ b/konstructor/engine/screen.playground.go @@ -8,7 +8,7 @@ import ( func (e *Engine) PlaygroundUpdate() { level := e.Domain.GetLevel(e.KContext.CurrentLevel) - e.Domain.Process(entity.DomainProcessOptions{ + e.Domain.Process(entity.DomainProcessArgs{ Level: &level, KContext: e.KContext, }) diff --git a/konstructor/entity/entity.dialog.go b/konstructor/entity/entity.dialog.go index 8d71e7b..12f8867 100644 --- a/konstructor/entity/entity.dialog.go +++ b/konstructor/entity/entity.dialog.go @@ -5,7 +5,7 @@ import "image/color" type DialogMap map[string]Dialog type DialogLayout struct { - Background string + Render Render ChoiceFont FontLayout } diff --git a/konstructor/entity/entity.domain.go b/konstructor/entity/entity.domain.go index 659e88b..ec361f3 100644 --- a/konstructor/entity/entity.domain.go +++ b/konstructor/entity/entity.domain.go @@ -18,10 +18,10 @@ type DomainInterface interface { RemoveFromInventory(item *Item) bool UseInventoryItem(item *Item) bool - Process(DomainProcessOptions) + Process(DomainProcessArgs) } -type DomainProcessOptions struct { +type DomainProcessArgs struct { Level *Level KContext *KContext } diff --git a/konstructor/entity/entity.engine.go b/konstructor/entity/entity.engine.go index 6b26cda..e386899 100644 --- a/konstructor/entity/entity.engine.go +++ b/konstructor/entity/entity.engine.go @@ -1,12 +1,12 @@ package entity -type EngineOptions struct { +type EngineArgs struct { Domain DomainInterface KContext *KContext Settings *Settings } type EngineWrapperInterface interface { - Init(options EngineOptions) + Init(options EngineArgs) Run() } diff --git a/konstructor/entity/entity.font.go b/konstructor/entity/entity.font.go index aedaede..6683a82 100644 --- a/konstructor/entity/entity.font.go +++ b/konstructor/entity/entity.font.go @@ -18,11 +18,11 @@ type FontLayout struct { func (fl *FontLayout) GetFontFace() font.Face { file, _ := ioutil.ReadFile(fl.Path) - tt, _ := opentype.Parse(file) - face, _ := opentype.NewFace(tt, &opentype.FaceOptions{ + true_type, _ := opentype.Parse(file) + font_face, _ := opentype.NewFace(true_type, &opentype.FaceOptions{ Size: fl.DPI, DPI: fl.Size, Hinting: font.HintingVertical, }) - return face + return font_face } diff --git a/konstructor/entity/entity.item.go b/konstructor/entity/entity.item.go index 09bf7b5..b4ec38c 100644 --- a/konstructor/entity/entity.item.go +++ b/konstructor/entity/entity.item.go @@ -1,8 +1,8 @@ package entity type ItemType struct { - ID string - RenderOptions RenderOptions + ID string + Render Render } type Item struct { diff --git a/konstructor/entity/entity.menu.go b/konstructor/entity/entity.menu.go index 903a6c6..c5e8ac5 100644 --- a/konstructor/entity/entity.menu.go +++ b/konstructor/entity/entity.menu.go @@ -5,7 +5,6 @@ import "image/color" type MenuMap map[string]Menu type MenuLayout struct { - Background string MenuItemFont FontLayout } diff --git a/konstructor/entity/entity.npc.go b/konstructor/entity/entity.npc.go index fc6ac37..51c8124 100644 --- a/konstructor/entity/entity.npc.go +++ b/konstructor/entity/entity.npc.go @@ -1,8 +1,8 @@ package entity type NPCType struct { - ID string - RenderOptions RenderOptions + ID string + Render Render } type NPC struct { diff --git a/konstructor/entity/entity.object.go b/konstructor/entity/entity.object.go index 3e454bb..9425f4f 100644 --- a/konstructor/entity/entity.object.go +++ b/konstructor/entity/entity.object.go @@ -1,8 +1,8 @@ package entity type ObjectType struct { - ID string - RenderOptions RenderOptions + ID string + Render Render } type Object struct { diff --git a/konstructor/entity/entity.player.go b/konstructor/entity/entity.player.go index 2119557..b0e025d 100644 --- a/konstructor/entity/entity.player.go +++ b/konstructor/entity/entity.player.go @@ -11,8 +11,8 @@ type Inventory struct { } type Player struct { - ID string - RenderOptions RenderOptions - Position Position - Inventory Inventory + ID string + Render Render + Position Position + Inventory Inventory } diff --git a/konstructor/entity/entity.playground.go b/konstructor/entity/entity.playground.go index 41dd1bd..d17e78a 100644 --- a/konstructor/entity/entity.playground.go +++ b/konstructor/entity/entity.playground.go @@ -6,18 +6,11 @@ type Position struct { Z int } -type RenderOptions struct { - Image string - Width int - Height int - Visible bool -} - type Playground struct { - Background string - Objects []Object - NPCs []NPC - Items []Item + Render Render + Objects []Object + NPCs []NPC + Items []Item } type Level struct { diff --git a/konstructor/entity/entity.render.go b/konstructor/entity/entity.render.go new file mode 100644 index 0000000..ea0ed35 --- /dev/null +++ b/konstructor/entity/entity.render.go @@ -0,0 +1,28 @@ +package entity + +import ( + "bytes" + "image" + "io/ioutil" + "log" +) + +type Render struct { + Image string + Width int + Height int + Visible bool +} + +func (ro *Render) GetImage() image.Image { + file, err := ioutil.ReadFile(ro.Image) + if err != nil { + log.Fatal(err) + } + + img, _, err := image.Decode(bytes.NewReader(file)) + if err != nil { + log.Fatal(err) + } + return img +} diff --git a/konstructor/konstructor.go b/konstructor/konstructor.go index b6f84cc..712df8b 100644 --- a/konstructor/konstructor.go +++ b/konstructor/konstructor.go @@ -13,7 +13,7 @@ type Konstructor struct { func (k Konstructor) Init() { k.Domain.Init() - k.EngineWrapper.Init(entity.EngineOptions{ + k.EngineWrapper.Init(entity.EngineArgs{ Domain: k.Domain, KContext: k.KContext, Settings: k.Settings,