package main

import (
	sg "github.com/d2fn/sumi/internal/graphics"
	"time"
)

/** Env **/
type Env struct {
	Time      time.Time
	Frame     uint
	Ports     map[string]float64
	Layout    Layout
	Viewport  *sg.Graphics
	Window    *sg.Graphics
	Controls  *sg.Graphics
	Offscreen *sg.Graphics
	Storage   *Storage
}

func NewEnv() *Env {
	return &Env{
		Time:  time.Now(),
		Frame: 0,
		Ports: make(map[string]float64),
	}
}

type Layout struct {
	// total monitor bounds
	Monitor sg.Rect
	// bounds of the application window
	Window sg.Rect
	// bounds of the ui controls area
	Controls sg.Rect
	// bounds of the region of the app window reserved for rendering the graphics buffer
	Viewport sg.Rect
	// bounds of the off screen graphics buffer where rendering happens
	Offscreen sg.Rect
}
