Reimplement cursor as a query operation
This commit is contained in:
@@ -90,7 +90,8 @@ func registerBuilder(t menus.MenuType, f builderFunc) {
|
||||
type Driver struct {
|
||||
Name string
|
||||
|
||||
menu *assetstore.Menu
|
||||
assets *assetstore.AssetStore
|
||||
menu *assetstore.Menu
|
||||
|
||||
// UI elements we need to drive
|
||||
clickables []clickable
|
||||
@@ -100,6 +101,8 @@ type Driver struct {
|
||||
paintables []paintable
|
||||
valueables []valueable
|
||||
|
||||
cursor assetstore.CursorName
|
||||
|
||||
// The cursor in two different coordinate spaces: original, and screen-scaled
|
||||
cursorOrig image.Point
|
||||
cursorScaled image.Point
|
||||
@@ -112,10 +115,12 @@ type Driver struct {
|
||||
tooltip string
|
||||
}
|
||||
|
||||
func NewDriver(menu *assetstore.Menu) (*Driver, error) {
|
||||
func NewDriver(assets *assetstore.AssetStore, menu *assetstore.Menu) (*Driver, error) {
|
||||
driver := &Driver{
|
||||
Name: menu.Name,
|
||||
menu: menu,
|
||||
|
||||
assets: assets,
|
||||
menu: menu,
|
||||
}
|
||||
|
||||
for _, record := range menu.Records() {
|
||||
@@ -307,6 +312,20 @@ func (d *Driver) Draw(screen *ebiten.Image) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Cursor() (*ebiten.Image, *ebiten.DrawImageOptions, error) {
|
||||
cursor, err := d.assets.Cursor(d.cursor)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
op := &ebiten.DrawImageOptions{}
|
||||
op.GeoM.Translate(float64(d.cursorOrig.X), float64(d.cursorOrig.Y))
|
||||
op.GeoM.Concat(d.orig2native)
|
||||
op.GeoM.Translate(float64(-cursor.Hotspot.X), float64(-cursor.Hotspot.Y))
|
||||
|
||||
return cursor.Image, op, nil
|
||||
}
|
||||
|
||||
func (d *Driver) addRecord(record *menus.Record) error {
|
||||
//log.Printf("Adding record: %#+v", record)
|
||||
children := record.Children
|
||||
|
Reference in New Issue
Block a user