From 48215d06a6cc0753a839e58c3403d34f69c250d4 Mon Sep 17 00:00:00 2001 From: ewy Date: Fri, 14 Aug 2026 12:32:05 +0200 Subject: add components in addition to gameobject interfaces --- objs/cursor.go | 23 ++++++++++++++++------- objs/root.go | 4 ++-- 2 files changed, 18 insertions(+), 9 deletions(-) (limited to 'objs') diff --git a/objs/cursor.go b/objs/cursor.go index 2a676fe..bf4d624 100644 --- a/objs/cursor.go +++ b/objs/cursor.go @@ -9,6 +9,12 @@ import ( type Cursor struct { *ecs.GameObject MaxX, MaxY float32 + Trail []sdl.FPoint + Pressed bool +} + +func (c *Cursor) ProcessMousePress(ev events.MousePress) { + c.Pressed = ev.IsPressed } func (c *Cursor) ProcessWindowChange(ev events.WindowChange) { @@ -17,7 +23,12 @@ func (c *Cursor) ProcessWindowChange(ev events.WindowChange) { } func (c *Cursor) Render(renderer *sdl.Renderer) { - renderer.SetDrawColor(255, 0, 0, 255) + if c.Pressed { + c.Trail = append(c.Trail, c.Position) + } else { + c.Trail = nil + } + c.Safe(renderer.SetDrawColor(255, 0, 0, 255)) size := float32(13) r := &sdl.FRect{ X: c.Position.X - size/2, @@ -25,7 +36,10 @@ func (c *Cursor) Render(renderer *sdl.Renderer) { W: size, H: size, } - renderer.RenderRect(r) + c.Safe(renderer.RenderRect(r)) + if c.Trail != nil { + c.Safe(renderer.RenderLines(c.Trail)) + } } func (c *Cursor) ProcessMouseMotion(ev events.MouseMotion) { @@ -44,11 +58,6 @@ func (c *Cursor) ProcessMouseMotion(ev events.MouseMotion) { c.Position.Y = c.MaxY } } - -func (c *Cursor) GO() *ecs.GameObject { - return c.GameObject -} - func NewCursor() ecs.IsGameObject { return &Cursor{ GameObject: &ecs.GameObject{}, diff --git a/objs/root.go b/objs/root.go index 44309ac..92f3804 100644 --- a/objs/root.go +++ b/objs/root.go @@ -11,8 +11,8 @@ type Root struct { } func (root *Root) Render(r *sdl.Renderer) { - r.SetDrawColor(0, 0, 0, 255) - r.Clear() + root.Safe(r.SetDrawColor(0, 0, 0, 255)) + root.Safe(r.Clear()) } func NewRoot(window *sdl.Window, children ...ecs.IsGameObject) ecs.IsGameObject { -- cgit v1.3.1