Jeremy Penner
c60013f21f
edn serialization
2013-05-08 20:35:22 -04:00
Jeremy Penner
4d5e8c2c43
Blobs are stored in gs and are movable with the mouse!
2013-05-04 00:20:13 -04:00
Jeremy Penner
27fa774f7b
rework question API to use arbitrary functions for dispatch
2013-05-04 00:19:46 -04:00
Jeremy Penner
8b3c2d99b0
First cut at simple GUI event dispatch system
2013-05-04 00:19:20 -04:00
Jeremy Penner
b0bf0746c0
add assoc-in-entity / update-in-entity
2013-05-04 00:18:42 -04:00
Jeremy Penner
69c533ceec
fix state machine bugs
2013-05-04 00:18:22 -04:00
Jeremy Penner
5548363a06
Implement the concept of "questions" one can ask of an arbitrary entity (ad-hoc components)
...
Not entirely convinced that this design is the way to go, but am currently without better ideas.
Perhaps each "key" (answerer) could/should provide a dispatch function?
2013-04-30 17:18:50 -04:00
Jeremy Penner
4d0dd8ba8d
Change "value" of stm to be the stm itself, since it couldn't be nil anyway
2013-04-30 17:15:41 -04:00
Jeremy Penner
de29d67036
replace input state machine with much simpler one autogenerated from stm minilanguage
2013-04-05 21:17:15 -04:00
Jeremy Penner
a239d83dfa
state machine macro bugfixes
2013-04-05 21:10:54 -04:00
Jeremy Penner
4b6519aa13
state machine minilanguage - first cut (buggy)
2013-04-04 23:39:25 -04:00
Jeremy Penner
eb089cacbc
Store event queue in stm; allows enter-state to post fake events
...
allow returning nil from enter-state, on-event
change on-call to return a [stmid value] rather than an arbitrary stm, too much weird shit can go wrong
function to remove a state machine's code
starting to build helper macros for defining state machines
2013-04-02 23:31:18 -04:00
Jeremy Penner
e646c8f7e6
Initial state machine skeleton with testcase
2013-03-31 14:40:11 -04:00
Jeremy Penner
d7c4cac751
bugfix
2013-03-31 14:39:53 -04:00
Jeremy Penner
9d95bc980b
Actual blob shading yaaay
2013-03-27 22:04:40 -04:00
Jeremy Penner
326bd01c7a
simple shader test
2013-03-26 23:56:27 -04:00
Jeremy Penner
35373a45bb
Shader resource support
2013-03-26 23:56:00 -04:00
Jeremy Penner
7033ac5c9b
Create do-sim function which integrates discrete and continuous processing broken up by external events
2013-03-23 23:08:46 -04:00
Jeremy Penner
2ddec2370e
Fix eval for :game to allow modifying state again
2013-03-23 23:07:04 -04:00
Jeremy Penner
0e9de617fa
First cut at a time travel screen (woooooooo!!)
2013-03-19 21:50:11 -04:00
Jeremy Penner
bfe42007f3
Default spec-to-screen conversions
2013-03-19 21:49:38 -04:00
Jeremy Penner
bb183c9869
support more keys
2013-03-19 21:46:55 -04:00
Jeremy Penner
2fd394b6c1
Implement a "nearest time" function for timelines
2013-03-19 21:46:43 -04:00
Jeremy Penner
1b8cb4c148
better stack trace on eval failure (though repl still dies horribly)
2013-03-18 23:31:28 -04:00
Jeremy Penner
bf41a54aec
Screen stack support
...
- rename "game-state" to "screen" (like "title screen", "options screen", etc)
- rename :state to :id
- provide helpers to load a screen given a "spec", deserialize a screen back to a spec, manage a screen stack
- rework test repl helper to allow setting the screen directly, instead of tweaking game state
- have start-game take a spec by default
2013-03-18 23:31:10 -04:00
Jeremy Penner
cc62dfb054
Gamestate API improvements
...
- always include the id as an attribute
- implement query operators that return the whole entity, rather than just the ids
- implement update / delete functions which extract the id from the given entity
2013-03-18 22:33:26 -04:00
Jeremy Penner
1e2de1dd99
Implement new input event model.
...
Input events are now represented as maps containing the complete current state of the user's input devices.
The update method is called with a timeline of all input events since the last call to update.
This neatly solves the "stuck key" problem by making state transitions implicit.
It also solves the problem of different game states (ie. in-game and paused with menu) dealing with input differently.
If part of a game cares about keeping track of all of its input history, and part doesn't, they don't have to fight or know about each other.
2013-03-18 22:15:25 -04:00
Jeremy Penner
eaedaee31a
Some more timeline helpers
2013-03-18 22:06:37 -04:00
Jeremy Penner
7ca348442d
Add update-gs, which always returns the modified gs and is almost always what you want.
2013-03-18 22:02:16 -04:00
Jeremy Penner
dcc5d430e3
Create and provide a timeline of user input events (keyboard / mouse)
...
Make the container accessible from the game object after initialization (mostly for debugging)
Implement some test code (moving a sprite around)
2013-03-14 11:13:44 -05:00
Jeremy Penner
fcc86c782c
Implement timelines (sorted map of timestamps to values)
2013-03-14 11:04:49 -05:00
Jeremy Penner
29409585e9
Simple test "game" with data
2013-03-12 00:19:46 -05:00
Jeremy Penner
d7e0453578
Resource management / caching with optional automatic expiry on file modification
2013-03-12 00:18:01 -05:00
Jeremy Penner
e3d4129d64
refactor clear-and-get-evalqueue into the reusable reset-returning-old!
2013-03-12 00:17:10 -05:00
Jeremy Penner
f3f5d007f9
more id indices and a helper for building them
2013-03-11 15:34:36 -05:00
Jeremy Penner
48fbf954c9
don't bother printing illegible function pointer on eval failure
2013-03-11 15:34:09 -05:00
Jeremy Penner
87fb73f1a3
Fix binding bug in repl where the first value bound to a var when a repl command is evaled is saved in the session bindings forever
2013-03-11 14:45:41 -05:00
Jeremy Penner
339e6f5444
Implement nrepl support, catch exceptions. Hot code reload is now fully operational.
2013-03-10 03:54:09 -05:00
Jeremy Penner
246213c8a2
Initial integration with Slick2d, including hot code reloading
2013-03-09 09:27:42 -06:00
Jeremy Penner
492b5393a1
More idiomatic looping
2013-03-09 09:26:09 -06:00
Jeremy Penner
1118b012f1
Event queue functionality
2013-03-07 23:18:57 -05:00
Jeremy Penner
6b56991689
Add the ability to query arbitrary game states without using with-gs
2013-03-07 23:18:37 -05:00
Jeremy Penner
a32058babd
Initial commit with working gamestate + indexing.
2013-03-05 23:14:20 -05:00