shapes_rectangle_scaling.bmx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. SuperStrict
  2. Framework Ray.Lib
  3. Const MOUSE_SCALE_MARK_SIZE:Int = 12
  4. ' Initialization
  5. '--------------------------------------------------------------------------------------
  6. Const screenWidth:Int = 800
  7. Const screenHeight:Int = 450
  8. InitWindow(screenWidth, screenHeight, "raylib [shapes] example - rectangle scaling mouse")
  9. Local rec:RRectangle = New RRectangle(100, 100, 200, 80)
  10. Local mousePosition:RVector2
  11. Local mouseScaleReady:Int = False
  12. Local mouseScaleMode:Int = False
  13. SetTargetFPS(60) ' Set our game to run at 60 frames-per-second
  14. '--------------------------------------------------------------------------------------
  15. ' Main game loop
  16. While Not WindowShouldClose() ' Detect window close button or ESC key
  17. ' Update
  18. '----------------------------------------------------------------------------------
  19. mousePosition = GetMousePosition()
  20. If CheckCollisionPointRec(mousePosition, rec) And ..
  21. CheckCollisionPointRec(mousePosition, New RRectangle(rec.x + rec.width - MOUSE_SCALE_MARK_SIZE, rec.y + rec.height - MOUSE_SCALE_MARK_SIZE, MOUSE_SCALE_MARK_SIZE, MOUSE_SCALE_MARK_SIZE)) Then
  22. mouseScaleReady = True
  23. If IsMouseButtonPressed(MOUSE_LEFT_BUTTON) Then
  24. mouseScaleMode = True
  25. End If
  26. Else
  27. mouseScaleReady = False
  28. End If
  29. If mouseScaleMode Then
  30. mouseScaleReady = True
  31. rec.width = (mousePosition.x - rec.x)
  32. rec.height = (mousePosition.y - rec.y)
  33. If rec.width < MOUSE_SCALE_MARK_SIZE Then
  34. rec.width = MOUSE_SCALE_MARK_SIZE
  35. End If
  36. If rec.height < MOUSE_SCALE_MARK_SIZE Then
  37. rec.height = MOUSE_SCALE_MARK_SIZE
  38. End If
  39. If IsMouseButtonReleased(MOUSE_LEFT_BUTTON) Then
  40. mouseScaleMode = False
  41. End If
  42. End If
  43. '----------------------------------------------------------------------------------
  44. ' Draw
  45. '----------------------------------------------------------------------------------
  46. BeginDrawing()
  47. ClearBackground(RAYWHITE)
  48. DrawText("Scale rectangle dragging from bottom-right corner!", 10, 10, 20, GRAY)
  49. DrawRectangleRec(rec, Fade(GREEN, 0.5))
  50. If mouseScaleReady Then
  51. DrawRectangleLinesEx(rec, 1, RED)
  52. DrawTriangle(New RVector2(rec.x + rec.width - MOUSE_SCALE_MARK_SIZE, rec.y + rec.height), ..
  53. New RVector2(rec.x + rec.width, rec.y + rec.height), ..
  54. New RVector2(rec.x + rec.width, rec.y + rec.height - MOUSE_SCALE_MARK_SIZE), RED)
  55. End If
  56. EndDrawing()
  57. '----------------------------------------------------------------------------------
  58. Wend
  59. ' De-Initialization
  60. '--------------------------------------------------------------------------------------
  61. CloseWindow() ' Close window and OpenGL context
  62. '--------------------------------------------------------------------------------------