Update Database
Database is more usable now. All pages have been updated to use the database, and share an application configuration. Page Stack has been removed, no more pages hanging around in memory. Replaced with a 'Router' which uses an Enum to determine which page should be displayed, destroys the old page and initializes the new page all in one go. No more push, pop, rollback, etc. No more holding instances of pages. Logger has been updated with proper timestamps and sorting now works as expected."
This commit is contained in:
+12
-24
@@ -12,29 +12,16 @@ import (
|
||||
|
||||
// Page defines the contract for all application screens.
|
||||
type Page interface {
|
||||
Init(app ApplicationInterface) error
|
||||
Init(ctx *PageCtx) error
|
||||
HandleEvent(event *sdl.Event) error
|
||||
Update(dt float32) error
|
||||
Render() error
|
||||
// Destroy cleans up the page's resources. The Application's page manager
|
||||
// is responsible for calling this method
|
||||
Destroy() error
|
||||
}
|
||||
|
||||
// ApplicationInterface defines the set of methods that a page can use to
|
||||
// interact with the main application.
|
||||
type ApplicationInterface interface {
|
||||
SwitchPage(p Page)
|
||||
PushPage(p Page)
|
||||
UnwindToPage(p Page)
|
||||
GetDrawableSize() (int32, int32)
|
||||
SchedulePop()
|
||||
Quit()
|
||||
}
|
||||
|
||||
// Base is a helper struct that pages can embed to get common functionality.
|
||||
type Base struct {
|
||||
App ApplicationInterface
|
||||
Context *PageCtx
|
||||
QuadVAO uint32
|
||||
QuadVBO uint32
|
||||
Projection mgl32.Mat4
|
||||
@@ -45,9 +32,8 @@ type Base struct {
|
||||
}
|
||||
|
||||
// Init stores the application context and sets up common resources.
|
||||
func (p *Base) Init(app ApplicationInterface) error {
|
||||
p.App = app
|
||||
|
||||
func (p *Base) Init(ctx *PageCtx) error {
|
||||
p.Context = ctx
|
||||
vertices := []float32{
|
||||
// pos(x,y) tex(u,v)
|
||||
0.0, 1.0, 0.0, 1.0,
|
||||
@@ -59,12 +45,14 @@ func (p *Base) Init(app ApplicationInterface) error {
|
||||
1.0, 0.0, 1.0, 0.0,
|
||||
}
|
||||
|
||||
screenWidth, screenHeight := p.App.GetDrawableSize()
|
||||
p.Projection = mgl32.Ortho(0, float32(screenWidth), 0, float32(screenHeight), -1, 1)
|
||||
p.ScreenHeight = screenHeight
|
||||
p.ScreenWidth = screenWidth
|
||||
p.ScreenCenterX = screenWidth / 2
|
||||
p.ScreenCenterY = screenHeight / 2
|
||||
W := p.Context.W
|
||||
H := p.Context.H
|
||||
|
||||
p.Projection = mgl32.Ortho(0, float32(W), 0, float32(H), -1, 1)
|
||||
p.ScreenHeight = H
|
||||
p.ScreenWidth = W
|
||||
p.ScreenCenterY = H / 2
|
||||
p.ScreenCenterX = W / 2
|
||||
|
||||
gl.GenVertexArrays(1, &p.QuadVAO)
|
||||
gl.GenBuffers(1, &p.QuadVBO)
|
||||
|
||||
Reference in New Issue
Block a user