Commit graph

673 commits

Author SHA1 Message Date
Sebastian Krzyszkowiak
a74aa55409
character: allow creating characters with NULL name
Useful for shared characters that are going to be swapped between
their archetypes.
2018-11-25 04:17:00 +01:00
Sebastian Krzyszkowiak
a7d2ed55c0
character: don't log destroying shared characters
Usually leads to too much noise for no value.
2018-11-25 04:09:41 +01:00
Sebastian Krzyszkowiak
93f2be37d8
draw compositors, postdraw hooks and consoles on whole screen in full resolution (breaking change) 2018-11-22 21:01:35 +01:00
Sebastian Krzyszkowiak
56eb5a6ef4
loading: fix resetting showLoading var too early 2018-11-22 20:31:13 +01:00
Sebastian Krzyszkowiak
6c59ef1049
add support for routing the loading gamestate through compositor 2018-11-22 04:53:51 +01:00
Sebastian Krzyszkowiak
7f7c522b3c
make SetFramebufferAsTarget work also for the loading gamestate 2018-11-22 03:40:41 +01:00
Sebastian Krzyszkowiak
a6abd01ec2
libsuperderpy_start: load shaders before loading the loading gamestate
Allows the loading gamestate to use shaders created in common resources.
2018-11-22 03:37:32 +01:00
Sebastian Krzyszkowiak
80f59721f2
fix a clang warning 2018-11-20 22:01:39 +01:00
Sebastian Krzyszkowiak
a68e15e274
tween: add ability to store a custom tweening function with the Tween object 2018-11-20 20:30:48 +01:00
Sebastian Krzyszkowiak
9d9d23dfe8
tween: pre/post-delay support, StaticTween helper 2018-11-17 12:06:05 +01:00
Sebastian Krzyszkowiak
4754d8dd4e
shader: don't try to build a shader that already failed to be attached 2018-11-15 17:41:56 +01:00
Sebastian Krzyszkowiak
e04a52ea35
init: set libsuperderpy's default mixer as Allegro's default one 2018-11-02 06:10:15 +01:00
Sebastian Krzyszkowiak
f922ffe997
android: log into logcat 2018-11-02 06:07:49 +01:00
Sebastian Krzyszkowiak
bbba7da52f
AllocateGamestate: fix uninitialized memory
Fixes a segfault when resizing a window in between allocating and
loading the gamestate.
2018-11-01 23:56:37 +01:00
Sebastian Krzyszkowiak
b67d146cdb
maemo: rewrite mouse events into touch ones 2018-10-30 18:05:54 +01:00
Sebastian Krzyszkowiak
de835593c8
set the default window size according to the viewport aspect ratio 2018-10-27 05:18:02 +02:00
Sebastian Krzyszkowiak
e12bc10840
cmake: add an option to build libsuperderpy as a static library
Might be useful when packaging games for distribution repositories.
2018-10-23 03:53:54 +02:00
Sebastian Krzyszkowiak
7c30291d95
Load shaders created before libsuperderpy_start already when starting 2018-10-11 06:15:07 +02:00
Sebastian Krzyszkowiak
d20b81d104
update clang-tidy diagnostics 2018-10-10 21:37:54 +02:00
Sebastian Krzyszkowiak
532727b15c
Add some missing guards and debug messages for gamestate handling 2018-09-10 04:36:18 +02:00
Sebastian Krzyszkowiak
3e7d9812a3
Refactor the engine's main loop. 2018-09-10 03:22:45 +02:00
Sebastian Krzyszkowiak
c5fcba57cb
Fix a segfault when there's no postdraw handler 2018-09-10 03:12:19 +02:00
Sebastian Krzyszkowiak
916094b371
debug: decouple livereload from autopause 2018-08-09 00:42:53 +02:00
Sebastian Krzyszkowiak
7d4575308d
add config switches for various debug options 2018-08-09 00:05:25 +02:00
Sebastian Krzyszkowiak
e5dd715eb2
fix and update debug function keys 2018-08-08 23:59:38 +02:00
Sebastian Krzyszkowiak
6684847424
send filename, line number and function name to PrintConsole and FatalError for verbose debug output 2018-08-08 22:19:50 +02:00
Sebastian Krzyszkowiak
942fd043fd
lock the timeline debug view to debug mode 2018-08-07 00:43:42 +02:00
Sebastian Krzyszkowiak
b3a9186c6a
character: don't include frame offset in character's transform
Fixes handling of subcharacters.
2018-08-05 04:27:26 +02:00
Sebastian Krzyszkowiak
9953d3f171
gamestate: add optional Gamestate_Tick function for logic with fixed interval 2018-08-05 02:01:21 +02:00
Sebastian Krzyszkowiak
4c12939afe
set ALLEGRO_NO_PRESERVE_TEXTURE by default on desktop platforms
This almost halves RAM usage on desktop. On mobile, a more elaborate
approach will have to be developed.
2018-08-05 01:17:41 +02:00
Sebastian Krzyszkowiak
1f71f03ef8
add LIBSUPERDERPY_GAME_GIT_REV define for game's git revision 2018-08-05 00:50:54 +02:00
Sebastian Krzyszkowiak
a03a031c6c
call postdraw hook also after drawing loading screen 2018-08-05 00:23:05 +02:00
Sebastian Krzyszkowiak
51d9fad1d6
export libsuperderpy's git revision and print on initializing 2018-08-04 18:25:30 +02:00
Sebastian Krzyszkowiak
0c5fee3cbb
character: apply spritesheet offset after scaling and rotating
I'm not 100% sure yet, but I think this makes more sense.
2018-08-04 03:21:55 +02:00
Sebastian Krzyszkowiak
7bde25fe84 add a public field with in-game total passed time 2018-08-03 13:15:06 +02:00
Sebastian Krzyszkowiak
341aa1d823 character: add ability to specify per-frame color tint 2018-08-03 05:26:28 +02:00
Sebastian Krzyszkowiak
093a808dc2 character: reuse already loaded bitmaps 2018-08-03 05:02:44 +02:00
Sebastian Krzyszkowiak
05c75a9437 init: set app name as window title by default 2018-08-03 01:39:05 +02:00
Sebastian Krzyszkowiak
b60bcfda54 character: support sub-characters (characters positioned relatively to parent character) 2018-08-02 23:32:03 +02:00
Sebastian Krzyszkowiak
a730281bb8 add QuitGame function for quiting or sending game to the background (depending on the platform) 2018-07-31 21:25:07 +02:00
Sebastian Krzyszkowiak
8ff2a57b64 fix broken fullscreen toggle on Windows 2018-07-30 17:00:31 +02:00
Sebastian Krzyszkowiak
c337e3435f character: add ability to specify spritesheet wide pixel offset 2018-07-29 00:41:14 +02:00
Sebastian Krzyszkowiak
3c3730f9d5 maths: Sign can return an integer 2018-07-26 17:41:31 +02:00
Sebastian Krzyszkowiak
f215bc0c83 mute audio by setting main mixer gain to 0.0
using al_set_mixer_playing causes high CPU usage for some reason
2018-07-26 16:19:32 +02:00
Sebastian Krzyszkowiak
7c92d1e05e add global audio mute config option 2018-07-26 15:33:02 +02:00
Sebastian Krzyszkowiak
6587d14530 don't pause/resume gamestates on execution pause that aren't started 2018-07-21 14:07:58 +02:00
Sebastian Krzyszkowiak
1c2e27f2b7 fix potential crash shown by clang-tidy warning 2018-07-19 01:39:53 +02:00
Sebastian Krzyszkowiak
31f6b8454d don't live-reload gamestates that don't come from dynamic libraries 2018-07-18 19:58:34 +02:00
Sebastian Krzyszkowiak
f4ca431238 gmaestate: automatically load unloaded gamestate when trying to start it 2018-07-18 19:50:35 +02:00
Sebastian Krzyszkowiak
91a3bd1efa call Gamestate_Pause and Gamestate_Resume on window focus change in debug mode (autoreload) 2018-07-18 19:47:56 +02:00
Sebastian Krzyszkowiak
3b2a675d23 don't Reload gamestates that aren't loaded 2018-07-18 19:46:59 +02:00
Sebastian Krzyszkowiak
fb7089b001 maths: restore DotProduct function missing after e5cf17a1a6 2018-07-18 01:57:31 +02:00
Sebastian Krzyszkowiak
98eaf73f8c utils: add PunchNumber utility 2018-07-18 01:49:19 +02:00
Sebastian Krzyszkowiak
6061b8d1bb tween: swap around style and duration arguments in Tween constructor 2018-07-18 01:40:23 +02:00
Sebastian Krzyszkowiak
fc404465d4 internal: rework console drawing code for better bounding rect handling
Also fixes broken timeline debug view when scaling.
2018-07-18 01:23:02 +02:00
Sebastian Krzyszkowiak
52da2d53e4 utils: move GetGameName to internal 2018-07-13 18:38:02 +02:00
Sebastian Krzyszkowiak
e5cf17a1a6 utils: add Fract util function and move math utils to separate unit 2018-07-12 20:18:23 +02:00
Sebastian Krzyszkowiak
d6f6f32e00 include math.h header in libsuperderpy.h 2018-07-12 00:03:00 +02:00
Sebastian Krzyszkowiak
7a5c2f9ed3 loading: stop time in loading when converting memory bitmaps
Avoids annoying framedrops, just stops the animation for a while instead.
2018-07-06 23:29:16 +02:00
Sebastian Krzyszkowiak
dba2ef80da add correct file extension for wasm gamestates 2018-07-06 23:17:09 +02:00
Sebastian Krzyszkowiak
ce76a53939 fix compilation on emscripten 2018-07-06 03:55:32 +02:00
Sebastian Krzyszkowiak
ab17bd8050 timeline: add TM_AddActionAfter 2018-07-05 22:31:18 +02:00
Sebastian Krzyszkowiak
c4ceb188f5 gamestate: move loading time counter to main thread to include PostLoad 2018-07-05 20:59:54 +02:00
Sebastian Krzyszkowiak
521e6bf431 gamestate: add optional PostLoad hook for stuff that needs to be done on GPU thread 2018-07-05 20:55:32 +02:00
Sebastian Krzyszkowiak
a314ad2d6d don't reload shaders multiple times when loading multiple gamestates 2018-07-05 20:47:30 +02:00
Sebastian Krzyszkowiak
e293047aba gamestate: make some API endpoints optional 2018-07-05 20:42:51 +02:00
Sebastian Krzyszkowiak
125ff97fba loading: show loading time and warn if ProgressCount isn't right 2018-07-05 19:39:11 +02:00
Sebastian Krzyszkowiak
49628de381 LoadSpritesheets: call progress function after each spritesheet 2018-07-05 19:38:31 +02:00
Sebastian Krzyszkowiak
ab8dc0f143 character: fix predecessor memory leak 2018-07-05 16:57:03 +02:00
Sebastian Krzyszkowiak
ce965a2643 character: add ability to set character destructor to free custom data 2018-07-05 16:43:13 +02:00
Sebastian Krzyszkowiak
96ab7a12ce use ALLEGRO_FRAMELESS for fullscreen windows only on Android
It will be needed for immersive mode, while it can break
fullscreen toggling on other platforms.
2018-07-05 03:28:32 +02:00
Sebastian Krzyszkowiak
2d905ce3c0 update the timestamp after Gamestate_Start to prevent high delta jump 2018-07-05 02:33:59 +02:00
Sebastian Krzyszkowiak
d512b31889 shader: downgrade GLSL to 1.20 because of macOS 2018-07-05 02:32:58 +02:00
Sebastian Krzyszkowiak
3a04729fb6 shader: automatically prepend #version line
GL: "#version 130" (3.0)
GLES: "#version 100" (2.0)
2018-07-05 01:05:50 +02:00
Sebastian Krzyszkowiak
5888cd2575 FatalError, PrintConsole: properly mark format argument as such
Thanks to that static analysis can catch nonliteral format errors.
2018-07-05 01:04:54 +02:00
Sebastian Krzyszkowiak
dcf1375e6f LoadSpritesheets: decrease the verboseness of logs in non-debug mode 2018-07-05 01:03:45 +02:00
Sebastian Krzyszkowiak
a29c7b4d2c fix clang-tidy issues 2018-07-04 19:08:39 +02:00
Sebastian Krzyszkowiak
4d5fdcffbb character: add more logging on spritesheet loading 2018-07-04 06:55:48 +02:00
Sebastian Krzyszkowiak
88ea60dd7b add missing symbol exports for ShowCharacter and HideCharacter
Fixes MinGW
2018-07-04 06:55:12 +02:00
Sebastian Krzyszkowiak
c2f6aa73cd utils: add Sign function 2018-07-03 04:22:30 +02:00
Sebastian Krzyszkowiak
7b93ced844 it's libsuperderpy 2 now 2018-07-03 04:22:12 +02:00
Sebastian Krzyszkowiak
23ffcae034 better handling of joystick, mouse and font initialization failures
Now libsuperderpy works on FreeBSD \o/
2018-07-03 00:41:57 +02:00
Sebastian Krzyszkowiak
4b4e6cc023 timeline: capitalise TM_ACTION macro to prevent confusion with function declaration 2018-06-30 16:37:43 +02:00
Sebastian Krzyszkowiak
c7fac39b79 timeline: use macros to get action name by default 2018-06-30 02:52:06 +02:00
Sebastian Krzyszkowiak
d5faec85ac mark loading.inProgress variable as volatile to prevent optimization bugs in threaded loading 2018-06-30 02:35:32 +02:00
Sebastian Krzyszkowiak
93859232d9 Fix GCC warnings 2018-06-30 01:50:29 +02:00
Sebastian Krzyszkowiak
4cf74ec0f3 timeline: delta eating
Untested. Great reason to write unit tests :)
2018-06-30 01:27:28 +02:00
Sebastian Krzyszkowiak
993a6fd2e7 Add more PrintConsoles around gamestate handling. 2018-06-30 00:59:54 +02:00
Sebastian Krzyszkowiak
40bda569b9 timeline: rework API to better handle common use cases 2018-06-30 00:50:55 +02:00
Sebastian Krzyszkowiak
b9774052eb timeline: add TM_RunningOnly convienence macro 2018-06-29 23:00:58 +02:00
Sebastian Krzyszkowiak
a4a1c356df timeline: don't use ALLEGRO_TIMERs anymore, rely on delta time instead 2018-06-29 23:00:13 +02:00
Sebastian Krzyszkowiak
b5d2b4a032 fix timeline debug mode 2018-06-28 04:38:33 +02:00
Sebastian Krzyszkowiak
ce131e50a0 character: fix switched names in CharacterCallback macro 2018-06-28 04:25:56 +02:00
Sebastian Krzyszkowiak
40df27640c character: add CharacterCallback macro for defininig animation callbacks 2018-06-27 19:30:35 +02:00
Sebastian Krzyszkowiak
12faed0921 timeline: add TM_Action macro for defining action callbacks 2018-06-27 19:30:18 +02:00
Sebastian Krzyszkowiak
1c66f219d8 timeline: expose the delta value to actions 2018-06-27 19:00:48 +02:00
Sebastian Krzyszkowiak
016c482154 convert bitmaps to video textures on every progress() when loading gamestate in threaded mode 2018-06-23 04:44:36 +02:00
Sebastian Krzyszkowiak
81488f9390 character: rework IsOnCharacter to work properly regardless of pivot, rotation and scale 2018-06-04 19:10:29 +02:00
Sebastian Krzyszkowiak
291e4c73d6 use al_reset_clipping_rectangle for clarity 2018-06-03 03:39:28 +02:00
Sebastian Krzyszkowiak
897aa8b52f character: honor x/y values from frames when calculating animation size 2018-06-03 03:39:11 +02:00
Sebastian Krzyszkowiak
71ec8b396e shader: auto rebuild and auto destroy shaders 2018-05-31 20:52:16 +02:00
Sebastian Krzyszkowiak
5fe62da08f tween: add SYMBOL_EXPORT macros 2018-05-31 20:51:44 +02:00
Sebastian Krzyszkowiak
9182cabf79 Add abstraction for GPU shaders 2018-05-30 21:11:46 +02:00
Sebastian Krzyszkowiak
52883755f1 timeline: initial API change for handling time delta 2018-05-30 03:10:03 +02:00
Sebastian Krzyszkowiak
b0d2c59596 add SwitchSpritesheet 2018-04-26 14:34:00 +02:00
Sebastian Krzyszkowiak
396e07a0ce DrawCenteredTintedScaled 2018-04-24 22:06:06 +02:00
Sebastian Krzyszkowiak
34a36c2038 DrawCenteredScaled 2018-04-24 05:01:59 +02:00
Sebastian Krzyszkowiak
80f59dd749 tween: add function to just interpolate the value, without using Tween object 2018-04-23 03:24:13 +02:00
Sebastian Krzyszkowiak
0f14629a15 Introducing the tweening engine. 2018-04-22 05:30:56 +02:00
Sebastian Krzyszkowiak
01ae741558 loading: call Gamestate_Logic in single thread mode as well 2018-04-21 01:08:39 +02:00
Sebastian Krzyszkowiak
a9c318dd78 loading: call Gamestate_Logic 2018-04-21 00:11:34 +02:00
Sebastian Krzyszkowiak
0af3d8b1d0 ResumeExecution: guard against open/link failure on live reload 2018-04-18 23:14:05 +02:00
Sebastian Krzyszkowiak
08d2e544b7 character: read width/height values from ini file 2018-04-18 23:13:31 +02:00
Sebastian Krzyszkowiak
3938a78503 live reloading 2018-04-16 01:06:58 +02:00
Sebastian Krzyszkowiak
60b960ab2c character: use Spritesheet structs instead of strings with names in callbacks 2018-04-15 23:00:53 +02:00
Sebastian Krzyszkowiak
c77c91e570 character: add GetSpritesheet for getting struct by name 2018-04-15 23:00:17 +02:00
Sebastian Krzyszkowiak
c9efd7afe2 character: don't animate hidden characters 2018-04-15 22:59:42 +02:00
Sebastian Krzyszkowiak
c3adf398b1 character: support non-repeating animations (stopping at the last frame) 2018-04-13 03:00:54 +02:00
Sebastian Krzyszkowiak
4240b47380 DestroyCharacter: print to console when the destroyed character is shared 2018-04-10 14:05:03 +02:00
Sebastian Krzyszkowiak
d017956442 IsOnCharacter: support flipped characters 2018-04-10 05:18:29 +02:00
Sebastian Krzyszkowiak
88b4399cae character: fix character placement and flipping when drawing 2018-04-08 01:35:31 +02:00
Sebastian Krzyszkowiak
a8b57934db Fix the unfamous Fajer crashing issue 2018-04-08 01:34:43 +02:00
Sebastian Krzyszkowiak
d4b2e1c65a utils: rename Clip to Clamp, add Wrap 2018-04-08 01:34:26 +02:00
Sebastian Krzyszkowiak
7f420f62ad Fixes for spritesheet handling 2018-04-08 01:34:06 +02:00
Sebastian Krzyszkowiak
adb15a9caf libsuperderpy: init video addon 2018-04-08 01:33:13 +02:00
Sebastian Krzyszkowiak
df536baa32 character: save transform to character struct for easier handling by auxiliary helpers 2018-03-21 02:15:34 +01:00
Sebastian Krzyszkowiak
d88162cab4 spritesheets: support for predecessors and reversed animations 2018-03-21 02:05:22 +01:00
Sebastian Krzyszkowiak
f097ddc54a display frame duration along with the fps counter 2018-03-20 23:49:22 +01:00
Sebastian Krzyszkowiak
b31d093e8c New spritesheets 2018-03-20 21:39:37 +01:00
Sebastian Krzyszkowiak
e58fbdb560 Add a few utils from Rumina 2018-03-20 21:38:50 +01:00
Sebastian Krzyszkowiak
8d0df727cb fix gameplay speed 2018-03-20 21:38:34 +01:00
Sebastian Krzyszkowiak
c85381644c rumina hacks 3 2018-03-15 00:46:52 +01:00
Sebastian Krzyszkowiak
aa1f7f3ab9 General Characters refactor 2018-03-15 00:42:24 +01:00
Sebastian Krzyszkowiak
f0417b09f6 rumina hacks 2 2018-03-15 00:42:24 +01:00
Sebastian Krzyszkowiak
ae70770f77 rumina hacks 2018-03-15 00:42:24 +01:00
Sebastian Krzyszkowiak
686dab729a Remove ALLEGRO_RENDER_METHOD sanity check
See liballeg/allegro5#887
2018-03-03 20:50:50 +01:00
Sebastian Krzyszkowiak
bb9bb692fe config: fix compilation on MinGW 2018-03-03 20:31:44 +01:00
Sebastian Krzyszkowiak
1ac8491396 DrawConsole: use deferred bitmap drawing to speed up text rendering 2018-02-03 03:54:01 +01:00
Sebastian Krzyszkowiak
fc37ec592e Add bunch of debug output on launch 2018-02-03 03:53:52 +01:00
Sebastian Krzyszkowiak
52fbb86d2f Add pre/post logic/draw handlers 2018-02-03 03:39:30 +01:00
Sebastian Krzyszkowiak
c6b71f1686 Add delta parameter to Gamestate_Logic calls 2018-02-03 03:37:44 +01:00
Sebastian Krzyszkowiak
749bb1ef50 character: add ability to set the size of the confines
Useful when the size of the canvas being drawn to is different
than the size of the viewport (default confine).
2018-02-03 03:17:36 +01:00
Sebastian Krzyszkowiak
cb4b9638c8 utils: add missing new lines to debug/error output 2018-01-21 03:18:51 +01:00
Sebastian Krzyszkowiak
0cfef4ddca BSOD: fix placement of the second-last line 2018-01-20 02:51:37 +01:00
Sebastian Krzyszkowiak
e2d9d21f3f BSOD: fix formatting and warnings 2018-01-20 02:45:06 +01:00
Sebastian Krzyszkowiak
18efca478e FatalError: print the error message to stderr
Printing to console outputs it to stdout, but only if
debug mode is enabled. stderr seems better suited too.
2018-01-20 02:24:33 +01:00
suve
2848753083 Use left-align for the wrapped error messages 2017-12-17 15:00:02 +01:00
suve
af53d1378f Wrap long messages in FatalError() 2017-12-17 14:58:03 +01:00
suve
705f84cbf1 Reduce code redundancy in FatalError() 2017-12-17 14:19:24 +01:00
Sebastian Krzyszkowiak
499e884a62 commit Fajer's legacy, so it won't be forgotten 2017-10-30 21:22:49 +01:00