Browse Source

Play Mode: Fix Level Collision w/ Scrolling

Fixes:
* Move the call to CollidesWithGrid() inside the Canvas instead of
  outside in the PlayScene.movePlayer() so it can apply to all Actors
  in motion.
* PlayScene.movePlayer() in turn just sets the player's Velocity so the
  Canvas.Loop() can move the actor itself.
* When keeping the player inside the level boundaries: previously it was
  assuming the player Position was relative to the window, and was
  checking the WorldIndexAt and getting wrong results.
* Canvas scrolling (loopFollowActor): check that the actor is getting
  close to the screen edge using the Viewport into the world, NOT the
  screen-relative coordinates of the Canvas bounding boxes.
menus
Noah Petherbridge 2 years ago
parent
commit
6af64edf68
1 changed files with 4 additions and 1 deletions
  1. +4
    -1
      label.go

+ 4
- 1
label.go View File

@@ -68,11 +68,14 @@ func (w *Label) Compute(e render.Engine) {
// Max rect to encompass all lines of text.
var maxRect = render.Rect{}
for _, line := range lines {
if line == "" {
line = "<empty>"
}

text.Text = line // only this line at this time.
rect, err := e.ComputeTextRect(text)
if err != nil {
panic(fmt.Sprintf("%s: failed to compute text rect: %s", w, err)) // TODO return an error
return
}

if rect.W > maxRect.W {


Loading…
Cancel
Save