Drag flow into view-map
This is pretty awful, but will let me wire up items more easily without needing to do the big refactor into independent menu handlers
This commit is contained in:
@@ -10,7 +10,9 @@ import (
|
||||
|
||||
"code.ur.gs/lupine/ordoor/internal/assetstore"
|
||||
"code.ur.gs/lupine/ordoor/internal/config"
|
||||
"code.ur.gs/lupine/ordoor/internal/flow"
|
||||
"code.ur.gs/lupine/ordoor/internal/scenario"
|
||||
"code.ur.gs/lupine/ordoor/internal/ship"
|
||||
"code.ur.gs/lupine/ordoor/internal/ui"
|
||||
)
|
||||
|
||||
@@ -25,6 +27,7 @@ var (
|
||||
)
|
||||
|
||||
type env struct {
|
||||
flow *flow.Flow
|
||||
scenario *scenario.Scenario
|
||||
}
|
||||
|
||||
@@ -51,27 +54,39 @@ func main() {
|
||||
log.Fatalf("Failed to load scenario %v: %v", *gameMap, err)
|
||||
}
|
||||
|
||||
env := &env{
|
||||
scenario: scenario,
|
||||
var realEnv *env
|
||||
if cfg.DefaultEngineName == "ordoor" {
|
||||
ship := &ship.Ship{}
|
||||
|
||||
flow, err := flow.New(assets, cfg, ship)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to setup flow: %v", err)
|
||||
}
|
||||
flow.SetScenario(scenario)
|
||||
realEnv = &env{flow: flow, scenario: scenario}
|
||||
} else {
|
||||
realEnv = &env{scenario: scenario}
|
||||
}
|
||||
|
||||
win, err := ui.NewWindow(env, "View Map "+*gameMap, *winX, *winY)
|
||||
win, err := ui.NewWindow(realEnv, "View Map "+*gameMap, *winX, *winY)
|
||||
if err != nil {
|
||||
log.Fatal("Couldn't create window: %v", err)
|
||||
}
|
||||
|
||||
step := 32
|
||||
win.WhileKeyDown(ebiten.KeyLeft, env.changeOrigin(-step, +0))
|
||||
win.WhileKeyDown(ebiten.KeyRight, env.changeOrigin(+step, +0))
|
||||
win.WhileKeyDown(ebiten.KeyUp, env.changeOrigin(+0, -step))
|
||||
win.WhileKeyDown(ebiten.KeyDown, env.changeOrigin(+0, +step))
|
||||
|
||||
for i := 0; i <= 6; i++ {
|
||||
win.OnKeyUp(ebiten.Key1+ebiten.Key(i), env.setZIdx(i))
|
||||
win.OnKeyUp(ebiten.Key1+ebiten.Key(i), realEnv.setZIdx(i))
|
||||
}
|
||||
|
||||
win.OnMouseClick(env.showCellData)
|
||||
win.OnMouseWheel(env.changeZoom)
|
||||
win.OnMouseClick(realEnv.showCellData)
|
||||
win.OnMouseWheel(realEnv.changeZoom)
|
||||
|
||||
if realEnv.flow == nil {
|
||||
step := 32
|
||||
win.WhileKeyDown(ebiten.KeyLeft, realEnv.changeOrigin(-step, +0))
|
||||
win.WhileKeyDown(ebiten.KeyRight, realEnv.changeOrigin(+step, +0))
|
||||
win.WhileKeyDown(ebiten.KeyUp, realEnv.changeOrigin(+0, -step))
|
||||
win.WhileKeyDown(ebiten.KeyDown, realEnv.changeOrigin(+0, +step))
|
||||
}
|
||||
|
||||
if err := win.Run(); err != nil {
|
||||
log.Fatal(err)
|
||||
@@ -79,11 +94,19 @@ func main() {
|
||||
}
|
||||
|
||||
func (e *env) Update(screenX, screenY int) error {
|
||||
return e.scenario.Update(screenX, screenY)
|
||||
if e.flow != nil {
|
||||
return e.flow.Update(screenX, screenY)
|
||||
} else {
|
||||
return e.scenario.Update(screenX, screenY)
|
||||
}
|
||||
}
|
||||
|
||||
func (e *env) Draw(screen *ebiten.Image) error {
|
||||
return e.scenario.Draw(screen)
|
||||
if e.flow != nil {
|
||||
return e.flow.Draw(screen)
|
||||
} else {
|
||||
return e.scenario.Draw(screen)
|
||||
}
|
||||
}
|
||||
|
||||
func (e *env) changeOrigin(byX, byY int) func() {
|
||||
|
Reference in New Issue
Block a user