|
|
@ -305,8 +305,8 @@ |
|
|
|
(var g-current-puzzle (* puzzle-data) null) |
|
|
|
|
|
|
|
(defun-local game-piece-grid-position-to-screen-position (piece (* (const board-piece)) &return vec2) |
|
|
|
(var piece-position vec2 (array (type-cast (vec-x (path piece > grid-position)) float) |
|
|
|
(type-cast (vec-y (path piece > grid-position)) float))) |
|
|
|
(var piece-position vec2 (array (to-float (vec-x (path piece > grid-position))) |
|
|
|
(to-float (vec-y (path piece > grid-position))))) |
|
|
|
;; Transfer to pixel space |
|
|
|
(set piece-position (vec2-multiply (array (repeat g-game-board-cell-size-px)) piece-position)) |
|
|
|
;; Add board offset |
|
|
@ -322,8 +322,8 @@ |
|
|
|
(defun-local game-piece-get-screen-size (piece (* (const board-piece)) &return vec2) |
|
|
|
(var piece-grid-size vec2 |
|
|
|
(array |
|
|
|
(? (path piece > is-vertical) 1.f (type-cast (path piece > num-cells) float)) |
|
|
|
(? (path piece > is-vertical) (type-cast (path piece > num-cells) float) 1.f))) |
|
|
|
(? (path piece > is-vertical) 1.f (to-float (path piece > num-cells))) |
|
|
|
(? (path piece > is-vertical) (to-float (path piece > num-cells)) 1.f))) |
|
|
|
(var piece-size vec2 (array (repeat g-game-board-cell-size-px))) |
|
|
|
(set piece-size (vec2-multiply piece-size piece-grid-size)) |
|
|
|
(return piece-size)) |
|
|
@ -564,7 +564,7 @@ |
|
|
|
(return)) |
|
|
|
(set g-num-progression-puzzles g-num-puzzles) |
|
|
|
(create-progression-puzzles) |
|
|
|
(each-in-range i g-num-progression-puzzles |
|
|
|
(each-in-range g-num-progression-puzzles i |
|
|
|
(set (field (at i g-progression-puzzles) index) i) |
|
|
|
(set (field (at i g-progression-puzzles) is-solved) false))) |
|
|
|
|
|
|
@ -612,7 +612,7 @@ |
|
|
|
(create-progression-puzzles) |
|
|
|
(var num-unsolved-puzzles int 0) |
|
|
|
(each-in-range |
|
|
|
i g-num-progression-puzzles |
|
|
|
g-num-progression-puzzles i |
|
|
|
(var current-puzzle progression-puzzle) |
|
|
|
(SDL_RWread progression-file (addr current-puzzle) (sizeof current-puzzle) 1) |
|
|
|
(when (field current-puzzle is-solved) |
|
|
@ -677,10 +677,8 @@ |
|
|
|
texture (* SDL_Texture) ;; Assumes whole texture drawn |
|
|
|
&return bool) ;; Returns whether clicked |
|
|
|
(when (and renderer texture) |
|
|
|
(var dest-rect SDL_Rect (array (type-cast (vec-x position) int) |
|
|
|
(type-cast (vec-y position) int) |
|
|
|
(type-cast (vec-x size) int) |
|
|
|
(type-cast (vec-y size) int))) |
|
|
|
(var dest-rect SDL_Rect (array (vec-xy-to-int position) |
|
|
|
(vec-xy-to-int size))) |
|
|
|
(unless (= 0 (SDL_RenderCopy renderer texture null (addr dest-rect))) |
|
|
|
(sdl-print-error))) |
|
|
|
|
|
|
@ -743,22 +741,22 @@ |
|
|
|
(unless num-render-drivers |
|
|
|
(return false)) |
|
|
|
(var i int 0) |
|
|
|
(while (< i num-render-drivers) |
|
|
|
(var driver-info SDL_RendererInfo (array 0)) |
|
|
|
(unless (= 0 (SDL_GetRenderDriverInfo i (addr driver-info))) |
|
|
|
(return false)) |
|
|
|
(SDL_Log "Renderer [%d]: %s\n |
|
|
|
(each-in-range |
|
|
|
num-render-drivers i |
|
|
|
(var driver-info SDL_RendererInfo (array 0)) |
|
|
|
(unless (= 0 (SDL_GetRenderDriverInfo i (addr driver-info))) |
|
|
|
(return false)) |
|
|
|
(SDL_Log "Renderer [%d]: %s\n |
|
|
|
\tHardware accelerated: %s\n |
|
|
|
\tRender to texture: %s\n |
|
|
|
\tMax texture width: %d\n |
|
|
|
\tMax texture height: %d\n |
|
|
|
\n" |
|
|
|
i (field driver-info name) |
|
|
|
(? (bit-and (field driver-info flags) SDL_RENDERER_ACCELERATED) "yes" "no") |
|
|
|
(? (bit-and (field driver-info flags) SDL_RENDERER_TARGETTEXTURE) "yes" "no") |
|
|
|
(field driver-info max_texture_width) |
|
|
|
(field driver-info max_texture_height)) |
|
|
|
(incr i)) |
|
|
|
i (field driver-info name) |
|
|
|
(? (bit-and (field driver-info flags) SDL_RENDERER_ACCELERATED) "yes" "no") |
|
|
|
(? (bit-and (field driver-info flags) SDL_RENDERER_TARGETTEXTURE) "yes" "no") |
|
|
|
(field driver-info max_texture_width) |
|
|
|
(field driver-info max_texture_height))) |
|
|
|
|
|
|
|
(var macoy-beast-driver (const int) 0) |
|
|
|
(var selected-renderer int macoy-beast-driver) |
|
|
@ -808,7 +806,7 @@ |
|
|
|
(var current-counter-ticks Uint64 (SDL_GetPerformanceCounter)) |
|
|
|
(var frame-diff-ticks Uint64 (- current-counter-ticks start-num-perf-ticks)) |
|
|
|
(var delta-time float (/ frame-diff-ticks |
|
|
|
(type-cast performance-num-ticks-per-second float))) |
|
|
|
(to-float performance-num-ticks-per-second))) |
|
|
|
|
|
|
|
(SDL_Log "--- %s at %f seconds\n" label delta-time)) |
|
|
|
|
|
|
@ -1039,7 +1037,7 @@ Rush Hour database from Michael Fogleman.\n\n") |
|
|
|
(var mouse-x int 0) |
|
|
|
(var mouse-y int 0) |
|
|
|
(var mouse-button-state Uint32 (SDL_GetMouseState (addr mouse-x) (addr mouse-y))) |
|
|
|
(var mouse-position vec2 (array (type-cast mouse-x float) (type-cast mouse-y float))) |
|
|
|
(var mouse-position vec2 (array (to-float mouse-x) (to-float mouse-y))) |
|
|
|
(scope ;; Scale mouse position to match logical rendering positions |
|
|
|
(var window-width int 1) |
|
|
|
(var window-height int 1) |
|
|
@ -1151,7 +1149,7 @@ Rush Hour database from Michael Fogleman.\n\n") |
|
|
|
(while (< row g-game-board-grid-size) |
|
|
|
(var column int 0) |
|
|
|
(while (< column g-game-board-grid-size) |
|
|
|
(var current-cell vec2 (array (type-cast row float) (type-cast column float))) |
|
|
|
(var current-cell vec2 (array (to-float row) (to-float column))) |
|
|
|
(var cell-position vec2 |
|
|
|
(vec2-add g-game-board-inner-top-left-px |
|
|
|
(vec2-multiply (array (repeat g-game-board-cell-size-px)) |
|
|
@ -1245,7 +1243,7 @@ Rush Hour database from Michael Fogleman.\n\n") |
|
|
|
(set recent-n-perf-counts-write-head 0)) |
|
|
|
|
|
|
|
(set delta-time (/ frame-diff-ticks |
|
|
|
(type-cast performance-num-ticks-per-second float))) |
|
|
|
(to-float performance-num-ticks-per-second))) |
|
|
|
;; (SDL_Log "%lu %f %fhz\n" frame-diff-ticks delta-time (/ 1.f delta-time)) |
|
|
|
(SDL_Delay todo-arbitrary-delay-ms)) |
|
|
|
|
|
|
@ -1255,7 +1253,7 @@ Rush Hour database from Michael Fogleman.\n\n") |
|
|
|
(each-in-array |
|
|
|
recent-n-perf-counts i |
|
|
|
(var delta-time float (/ (at i recent-n-perf-counts) |
|
|
|
(type-cast performance-num-ticks-per-second float))) |
|
|
|
(to-float performance-num-ticks-per-second))) |
|
|
|
(unless delta-time (continue)) |
|
|
|
(SDL_Log "\t%f %fhz\n" delta-time (/ 1.f delta-time)))) |
|
|
|
|
|
|
@ -1388,12 +1386,12 @@ Rush Hour database from Michael Fogleman.\n\n") |
|
|
|
output |
|
|
|
(scope |
|
|
|
(var num-elements int (array-size (token-splice array-name))) |
|
|
|
(each-in-range (token-splice iterator-name) num-elements |
|
|
|
(each-in-range num-elements (token-splice iterator-name) |
|
|
|
(token-splice-rest body tokens)))) |
|
|
|
(return true)) |
|
|
|
|
|
|
|
;; TODO: Needs temp var to prevent double eval if range is an expression |
|
|
|
(defmacro each-in-range (iterator-name symbol range symbol &rest body any) |
|
|
|
(defmacro each-in-range (range symbol iterator-name symbol &rest body any) |
|
|
|
(tokenize-push |
|
|
|
output |
|
|
|
(scope |
|
|
|