Scenario viewpoint, Z index management, and arrow controls
This commit is contained in:
@@ -97,6 +97,24 @@ func (f *Flow) Update(screenX, screenY int) error {
|
||||
return f.exit
|
||||
}
|
||||
|
||||
// Keybindings for map control
|
||||
// FIXME: this needs a big rethink
|
||||
if f.current != nil && f.scenario != nil && !f.current.IsInDialogue() {
|
||||
step := 32
|
||||
if ebiten.IsKeyPressed(ebiten.KeyLeft) {
|
||||
f.scenario.Viewpoint.X -= step
|
||||
}
|
||||
if ebiten.IsKeyPressed(ebiten.KeyRight) {
|
||||
f.scenario.Viewpoint.X += step
|
||||
}
|
||||
if ebiten.IsKeyPressed(ebiten.KeyUp) {
|
||||
f.scenario.Viewpoint.Y -= step
|
||||
}
|
||||
if ebiten.IsKeyPressed(ebiten.KeyDown) {
|
||||
f.scenario.Viewpoint.Y += step
|
||||
}
|
||||
}
|
||||
|
||||
if f.scenario != nil {
|
||||
if err := f.scenario.Update(screenX, screenY); err != nil {
|
||||
return err
|
||||
@@ -265,6 +283,14 @@ func (f *Flow) hideDialogue(driver driverName) func() {
|
||||
return f.drivers[driver].HideDialogue
|
||||
}
|
||||
|
||||
func (f *Flow) withScenario(then func()) func() {
|
||||
return func() {
|
||||
if f.scenario != nil {
|
||||
then()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Flow) reset() {
|
||||
if f.exit != nil {
|
||||
return
|
||||
|
@@ -6,9 +6,9 @@ package flow
|
||||
func (f *Flow) linkMainGame() {
|
||||
f.linkMainGameActionMenu()
|
||||
f.linkMainGameInterfaceOptionsMenu()
|
||||
|
||||
// 5: Holding menu
|
||||
// 6: View menu
|
||||
f.linkMainGameViewMenu()
|
||||
|
||||
// 7: General character menu
|
||||
f.onClick(mainGame, "7.4", func() { // More button
|
||||
f.setActiveNow(mainGame, "7", false)
|
||||
@@ -26,10 +26,10 @@ func (f *Flow) linkMainGame() {
|
||||
// 11: Psyker spell dialogue
|
||||
// 12: Inventory dialogue
|
||||
f.onClick(mainGame, "12.21", f.hideDialogue(mainGame)) // Exit
|
||||
|
||||
// 13: exchange menu
|
||||
|
||||
// 14: Map
|
||||
// FIXME: Map should be right-aligned
|
||||
// 14.1: MAP_SPRITE
|
||||
// 14.2: Multiplier button (2x)
|
||||
f.onClick(mainGame, "14.3", f.setActive(mainGame, "14", false))
|
||||
@@ -46,8 +46,6 @@ func (f *Flow) linkMainGame() {
|
||||
// and the dead space is filled by the "interface wing" sprites in the
|
||||
// background. Should we replicate this, or keep with the current scaling
|
||||
// behaviour? Which is better?
|
||||
//
|
||||
// FIXME: the menu bar should be at the bottom, not top, of the screen
|
||||
f.exit = maybeErr(mainGame, f.setActiveNow(mainGame, "15", false)) // Interface wing left
|
||||
f.exit = maybeErr(mainGame, f.setActiveNow(mainGame, "16", false)) // Interface wing right
|
||||
// 17: Grenade dialogue
|
||||
@@ -90,7 +88,10 @@ func (f *Flow) linkMainGameActionMenu() {
|
||||
func (f *Flow) linkMainGameInterfaceOptionsMenu() {
|
||||
// 4: Interface options menu
|
||||
f.onClick(mainGame, "4.1", f.setReturningDriver(mainGame, options)) // Options button
|
||||
f.onClick(mainGame, "4.2", f.toggleActive(mainGame, "14")) // Map button
|
||||
|
||||
// FIXME: map should be shown top-right, not top-left. We need to support 2x
|
||||
// mode as well.
|
||||
f.onClick(mainGame, "4.2", f.toggleActive(mainGame, "14")) // Map button
|
||||
|
||||
// FIXME: mission objectives should be shown top-left, not centered
|
||||
f.onClick(mainGame, "4.3", f.toggleActive(mainGame, "18")) // Mission objectives
|
||||
@@ -100,3 +101,56 @@ func (f *Flow) linkMainGameInterfaceOptionsMenu() {
|
||||
// 4.6: Next enemy
|
||||
// 4.7: Total enemy text
|
||||
}
|
||||
|
||||
func (f *Flow) linkMainGameViewMenu() {
|
||||
// FIXME: all these buttons should show current state as well as have an
|
||||
// effect
|
||||
f.onClick(mainGame, "6.1", f.withScenario(func() { // View 100%
|
||||
f.scenario.Zoom = 1.0
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.2", f.withScenario(func() { // View 50%
|
||||
f.scenario.Zoom = 0.5
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.3", f.withScenario(func() { // View 25%
|
||||
f.scenario.Zoom = 0.25
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.4", f.withScenario(func() { // Z index up
|
||||
f.scenario.ChangeZIdx(+1)
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.5", f.withScenario(func() { // Z index down
|
||||
f.scenario.ChangeZIdx(-1)
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.6", f.withScenario(func() { // Z index 1
|
||||
f.scenario.ZIdx = 0
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.7", f.withScenario(func() { // Z index 2
|
||||
f.scenario.ZIdx = 1
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.8", f.withScenario(func() { // Z index 3
|
||||
f.scenario.ZIdx = 2
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.9", f.withScenario(func() { // Z index 4
|
||||
f.scenario.ZIdx = 3
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.10", f.withScenario(func() { // Z index 5
|
||||
f.scenario.ZIdx = 4
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.11", f.withScenario(func() { // Z index 6
|
||||
f.scenario.ZIdx = 5
|
||||
}))
|
||||
|
||||
f.onClick(mainGame, "6.12", f.withScenario(func() { // Z index 7
|
||||
f.scenario.ZIdx = 6
|
||||
}))
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user