| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Treating the names inside the let-like form as just symbols caused
numerous bugs where a program would crash because it was trying to set
graphics state that was never defined due to the relevant module never
being imported. By changing with-graphics-state to require passing in
the <graphics-state-spec> object, much like how parameterize works
with parameter objects, it completely eliminates this type of bug. If
the module containing the spec variable isn't imported, there will be
an undefined variable error thrown early on.
Additionally, graphics state objects needed to have a stack added to
them to track previous values so that with-graphics-state could
restore them later. The old trick of using let to stash the previous
values no longer worked with the new macro implementation.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Thanks to Peter Elliott <pelliott@ualberta.ca> for the original
version of this patch.
|
|
|
|
|
| |
This makes it possible to a apply a viewport multiple times in a frame
without clearing each time and wiping out part of your work.
|
| |
|
|
|
|
| |
* chickadee.scm (run-game): Replace SDL mixer with OpenAL audio system.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* chickadee.scm (run-game): Remove initial iteration over game
controller hash table.
|
|
|
|
|
|
|
|
|
| |
This will allow for lots of controllers to be automatically mapped
correctly without the user having to do anything.
* data/gamecontrollerdb.txt: New file.
* Makefile.am (dist_pkgdata_DATA): Add it.
* chickadee.scm (run-game): Load game controller db file.
|
|
|
|
|
|
|
|
|
| |
I thought this was necessary to process controllers that were already
connected to the computer before a Chickadee-using program was
launched, but that doesn't seem to be the case.
* chickadee.scm (open-all-controllers): Delete.
(run-game): Remove call to open-all-controllers.
|
|
|
|
| |
* chickadee.scm (controller-name): New procedure.
|
|
|
|
|
| |
* chickadee.scm (controller-axis): Fix math so that axis values are
actually in the range [0, 1].
|
|
|
|
|
| |
Forgot to prefix imported procedures since I define procedures with
the same names.
|
|
|
|
|
|
|
| |
Not ready to document them at this time since I have not done full
tests with a USB controller yet.
* chickadee.scm (controller-button-pressed?, controller-axis): New procedures.
|
|
|
|
|
| |
* chickadee.scm (mouse-x, mouse-y, mouse-button-pressed?,
mouse-button-released?): New procedures.
|
|
|
|
|
| |
* chickadee.scm (key-pressed?, key-released?): New procedures.
* examples/grid.scm: Remove (sdl2 input keyboard) import.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I know I'm backpedaling here, but I think it was a mistake to expose
SDL2 as much as I have here. I think it's better for people just
getting started to not have to wonder what SDL means. Making things
as usable as possible for beginners is an important goal, and
abstracting SDL2 + OpenGL things from the core game loop
implementation shouldn't require sacrificing that goal.
* chickadee.scm: Switch code with...
* chickadee/game-loop.scm: ...this! Which is copied straight from...
* chickadee/sdl.scm: ...this! Which is now deleted.
* Makefile.am (SOURCES): Add game-loop.scm, remove sdl.scm.
* examples/grid.scm: Update due to API breakage.
* examples/lines.scm: Ditto.
* examples/nine-patch.scm: Ditto.
* examples/sprite.scm: Ditto.
* examples/text.scm: Ditto.
* examples/tiled.scm: Ditto.
* doc/api.texi (Kernel): Update.
|
| |
|
|
|
|
|
|
|
|
| |
* chickadee.scm (default-error-handler): Delete.
(call-with-error-handling): Don't catch errors if no handler is
specified.
(run-game): Default 'error' arg to #f.
* chickadee/sdl.scm: (run-game/sdl): Likewise.
|
|
|
|
|
|
|
| |
* chickadee.scm (call-with-error-handling): Call the correct error
handler. Return #t if an error occurred, #f otherwise.
(run-game): Reset current-time and buffer after recovering from an
error.
|
|
|
|
|
| |
Always printing a backtrace caused double backtraces to be printed
when using the default error handler that just re-throws the error.
|
|
|
|
|
|
|
| |
* chickadee.scm (default-error-handler): New procedure.
(run-game): Set default value for 'error' arg to
'default-error-handler'.
* chickadee/sdl.scm (run-game/sdl): Ditto.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is really cool! Now users can plug in whatever backend they'd
like and are not forced to use SDL and OpenGL. Thanks to Chris Webber
for showing me the Lux library for Racket that does exactly this.
* chickadee.scm (run-game): Remove all SDL/OpenGL code, replace with
generic render/update keyword arguments.
(run-game/sdl): New procedure.
* examples/lines.scm: Update for API breakage.
* examples/nine-patch.scm: Ditto.
* examples/sprite.scm: Ditto.
* examples/text.scm: Ditto.
* examples/tiled.scm: Ditto.
|
|
|
|
|
| |
* chickadee.scm (call-with-error-handling): Do not catch errors when
the error hook has nothing in it.
|
|
|
|
|
| |
* chickadee.scm (call-with-error-handling): Run hook with error key
and args.
|
|
|
|
|
|
|
| |
* chickadee.scm (error-hook): New variable.
(display-game-loop-error, call-with-error-handling): New procedures.
(run-hook*): New syntax.
(run-game): Wrap all hooks with error handling.
|
|
|
|
|
|
|
| |
Reported-By: Christopher Howard <christopher.howard@qlfiles.net>
* chickadee.scm (run-game): Invert the Y coordinate received from
SDL's mouse motion event.
|
|
|
|
| |
This reverts commit 8cbb7eed56c4b5edd780c2d51aaa0a4c3eab7350.
|
|
|
|
|
|
| |
* chickadee.scm (error-handler): New procedure.
(with-error-handling): New syntax.
(run-game): Handle errors caught when running hooks.
|
|
|
|
| |
* chickadee.scm (run-game): window-height is not a procedure!
|