aboutsummaryrefslogtreecommitdiff
path: root/selection.go
diff options
context:
space:
mode:
Diffstat (limited to 'selection.go')
-rw-r--r--selection.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/selection.go b/selection.go
new file mode 100644
index 0000000..9b6dbb2
--- /dev/null
+++ b/selection.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "github.com/hajimehoshi/ebiten/v2"
+ "golang.org/x/exp/slog"
+)
+
+type Selection struct {
+ IsSelected bool
+ SelectedImage *ebiten.Image
+}
+
+func (e *Entity) SelectMultiple(cursor Point, selection GlobalSelection) {
+ if e.Selection.IsEnabled {
+ e.Selection.Value.IsSelected = false
+ selectionBounds := Rectangle{selection.Start, cursor}.Canon()
+ if selectionBounds.Overlaps(e.Bounds()) {
+ e.Selection.Value.IsSelected = true
+ slog.Info("entity selected", slog.String("position", e.Position.Value.String()))
+ }
+ }
+}
+
+func (e *Entity) SelectSingle(cursor Point, canBeSelected bool) bool {
+ if e.Selection.IsEnabled {
+ e.Selection.Value.IsSelected = false
+ if canBeSelected && cursor.In(e.Bounds()) {
+ e.Selection.Value.IsSelected = true
+ slog.Info("entity selected", slog.String("position", e.Position.Value.String()))
+ return true
+ }
+ }
+ return false
+}