62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"galaxy/client/world"
|
|
|
|
"fyne.io/fyne/v2"
|
|
)
|
|
|
|
var m = func(v int) float64 { return float64(v) / float64(world.SCALE) }
|
|
|
|
func (e *client) onTapped(ev *fyne.PointEvent) {
|
|
if e.world == nil || ev == nil {
|
|
return
|
|
}
|
|
|
|
xPx, yPx, ok := e.eventPosToPixel(ev.Position.X, ev.Position.Y)
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
params := e.getLastRenderedParams()
|
|
hits, err := e.world.HitTest(e.hits, ¶ms, xPx, yPx)
|
|
if err != nil {
|
|
e.handlerError(err)
|
|
return
|
|
}
|
|
|
|
if len(hits) == 0 {
|
|
e.calculator.UnloadPlanet()
|
|
return
|
|
}
|
|
|
|
for i := range hits {
|
|
e.onHit(hits[i])
|
|
}
|
|
}
|
|
|
|
func (e *client) onHit(hit world.Hit) {
|
|
// var coord string
|
|
// if hit.Kind == world.KindLine {
|
|
// coord = fmt.Sprintf("{%f,%f - %f,%f}", m(hit.X1), m(hit.Y1), m(hit.X2), m(hit.Y2))
|
|
// } else {
|
|
// coord = fmt.Sprintf("{%f,%f}", m(hit.X), m(hit.Y))
|
|
// }
|
|
// fmt.Println("hit:", hit.ID, "Coord:", coord)
|
|
switch hit.Kind {
|
|
case world.KindPoint:
|
|
case world.KindCircle:
|
|
e.onHitCircle(hit.ID)
|
|
case world.KindLine:
|
|
}
|
|
}
|
|
|
|
func (e *client) onHitCircle(id world.PrimitiveID) {
|
|
p, ok := e.reg.localPlanet(id)
|
|
if !ok {
|
|
return
|
|
}
|
|
e.calculator.LoadPlanet(p.Name, p.Number, p.FreeIndustry.F(), p.Material.F(), p.Resources.F())
|
|
e.calculator.Refresh()
|
|
}
|