Commit graph

127 commits

Author SHA1 Message Date
Andrei Alexeyev
8b37d1cbf2
src: the great #include massacre of 2024 2024-05-17 14:11:48 +02:00
Andrei Alexeyev
be7905d6a3
src: run upkeep 2024-05-17 04:58:47 +02:00
Andrei Alexeyev
ef92ee12fc
laser,move,projectile: annotate hot paths 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
a464aa8837
projectile: cache auto-angle of constant-velocity projectiles 2023-09-28 17:43:14 +02:00
Andrei Alexeyev
9dade8ad33
resource: lifetime management redesign (WIP) 2023-04-29 20:01:50 +02:00
Andrei Alexeyev
837d3bff39
projectile: remove old rule handling 2023-02-24 05:37:58 +01:00
Andrei Alexeyev
20db33b37a
projectile: remove deprecated fields from ProjArgs 2023-02-24 05:37:58 +01:00
Andrei Alexeyev
9cbdb3290c
projectile: rename RULE_ARGC to PROJ_DRAWRULE_NUMARGS 2023-02-24 05:37:58 +01:00
Andrei Alexeyev
14c33cfff6
projectile: remove old rule and drawrule functions 2023-02-24 05:37:58 +01:00
Andrei Alexeyev
7f2b76ceb0
projectile: remove ProjDrawCore and supporting code
Reimplement deprecated draw funcs as wrappers over their pdraw_
replaceements
2023-02-09 08:05:22 +01:00
Andrei Alexeyev
ec4a0bb2f7
projectile: remove dead declarations 2023-02-07 12:17:30 +01:00
Andrei Alexeyev
a53e0a2732
projectile: deprecate ProjDrawCore 2023-02-07 12:16:29 +01:00
Andrei Alexeyev
53bbb0b9c3
projectile: remove unused definition 2023-02-07 12:09:42 +01:00
Andrei Alexeyev
8d2ee76710
replace include guards with #pragma once 2021-08-31 23:34:46 +03:00
Andrei Alexeyev
8fed29ca68
projectile: fix warnings 2021-06-18 17:07:51 +03:00
Andrei Alexeyev
659ed15e43
Fix some issues found by clang static analysis 2021-06-18 16:11:00 +03:00
Andrei Alexeyev
8f85ee45f2
projectile: remove obsolete shader_params field 2021-02-22 03:24:06 +02:00
Andrei Alexeyev
5ea73999ef
projectile: deprecate .rule and .args in ProjArgs 2021-02-20 01:47:20 +02:00
Andrei Alexeyev
f25c88942a
projectile: add collision info interception via events
See comment in projectile.h for details
2021-02-18 20:07:52 +02:00
Andrei Alexeyev
54ca97587c
Rename cmplx32 into cmplxf for better consistency 2020-05-09 09:31:20 +03:00
Andrei Alexeyev
bd5082c0f0
Get rid of float32 and float64 typedefs
Use plain float and double when precision matters. There's no way to
consistently enforce usage of the typedefs now.
2020-05-09 09:25:38 +03:00
Andrei Alexeyev
e16e2184a3
Refactor entity system (#214)
* Smarter generic entity macros

The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated

* Get rid of "custom" entities

All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.

* Refactor guts of ENT_BOX/ENT_UNBOX

Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)

* Merge TASK_BIND_UNBOXED with TASK_BIND

* s/YoumuMyon/YoumuAMyon for consistency
2020-04-17 10:18:53 +03:00
Andrei Alexeyev
e9085a7a4d
add PFLAG_INDESTRUCTIBLE and PFLAG_NOAUTOREMOVE 2020-04-08 08:39:45 +03:00
Andrei Alexeyev
0d08042c39
Add angle_delta projectile property
for spinning in PFLAG_MANUALANGLE mode, or angle offset in auto-angle mode
2020-03-08 17:13:09 +02:00
Andrei Alexeyev
62e39e7a40
add "cleared" event to projectiles 2020-03-04 22:26:52 +02:00
Andrei Alexeyev
77a65432d6
fix remaining deprecations (except in legacy stages) 2020-03-04 22:26:48 +02:00
Andrei Alexeyev
9fd9dfcf94
fix some trivial deprecations 2020-03-04 22:26:48 +02:00
Andrei Alexeyev
a1177bb817
remove DeathShrink 2020-03-04 22:26:47 +02:00
Andrei Alexeyev
3259a844fa
new bullet clear effect 2020-03-04 22:26:45 +02:00
Andrei Alexeyev
3d1c0eee4e
WIP proj draw rule revamp; YoumuB revamp; misc changes; giant mess
cursed commit
2020-03-04 22:26:45 +02:00
Andrei Alexeyev
1f1db18076
New RNG API, with crude semi-automatic misuse detection 2020-03-04 22:26:42 +02:00
Andrei Alexeyev
3dcc3dbfa1
add PFLAG_NOMOVE and PFLAG_MANUALANGLE 2020-03-04 22:06:38 +02:00
Andrei Alexeyev
13b5e33b0c
add 'killed' event for projectiles 2020-03-04 21:50:51 +02:00
Andrei Alexeyev
2a34f7bad4
generalize common bullet motion rules; add some math helpers 2020-03-04 21:50:50 +02:00
Andrei Alexeyev
439d8ea339
add kill_projectile() as a kind-of ACTION_DESTROY substitute 2020-03-04 21:50:50 +02:00
Andrei Alexeyev
80b1026d08
Don't redefine standard complex macro; use a new cmplx typedef
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
2019-11-22 05:38:48 +02:00
Andrei Alexeyev
5a23fb95fc
make upkeep script preserve existing copyrights 2019-08-03 20:44:22 +03:00
Andrei Alexeyev
3055901998
update my email 2019-07-03 21:00:56 +03:00
Andrei Alexeyev
fd09bf02c8
Enforce explicit form and .proto usage for PROJECTILE/PARTICLE calls
Remove kludge code converting sprite names to prototypes
2019-04-11 07:12:17 +03:00
Andrei Alexeyev
6b3b1fd3e0
document ProjFlags 2019-03-28 19:05:35 +02:00
Andrei Alexeyev
990f7cfda2
remove legacy PFLAG_GRAZESPAM flag 2019-03-28 18:48:48 +02:00
Andrei Alexeyev
3f70efb8b5
use more convenional naming for ProjType enum 2019-03-28 18:42:07 +02:00
Andrei Alexeyev
080b8f12fd
retire FakeProj 2019-03-28 18:40:04 +02:00
Andrei Alexeyev
4e7c37976f
Fantasy Seal dmg buff and minor adjustments 2019-03-26 13:57:01 +02:00
Andrei Alexeyev
8fc5abb78a
The Powersurge game mechanic and scoring system (#159) 2019-02-22 01:56:03 +02:00
Andrei Alexeyev
34d7cb7ae3
fix CLEAR_HAZARDS_NOW and refs to items corrupting memory
also a few other entity-related fuck-ups
2019-01-26 03:54:57 +02:00
Andrei Alexeyev
4159ea1249
'upkeep' target for maintenance tasks; back to include guards; happy new year! 2019-01-23 22:10:43 +02:00
Andrei Alexeyev
49d0d54a2e
Lots of disorganized (mostly) visual overhaul (#156)
* WIP some projectile effects

* fix segfault

* Laser smoothing and glow via post-processing blur magic

TODO: make it optional

* fix memory corruption

* fix memory corruption for realsies now

* fix color_get_hsl for out-of-range colors

* some more bullet flare tweaks

* some lame clear effect workarounds

* spawn bullet flares after frame 0; looks better and fixes some problems

* New baryon explosion; fix petal_explosion; leanify everything

* Add missing bullet flare sprite, rebuild main atlas

* improve batching efficiency with bullet spawn flares

* forgot git add

* Group projectiles/particles by shader where possible

* Another take on baryon explosion; make fg framebuffers 16bit

* WIP some settings for toasters

* remove stupid debug log

* microoptimization that probably does nothing anyway

* somewhat more intuitive quality settings

* Whitelist more particles (MarisaB is on hold)

* Whitelist (and fix) some more stage6 particles (mostly ToE)

* Add a spell name background

* Experimental radial healthbar for bosses

* healthbar tweaks

* thiccer healthbars in response to feedback

* remove healthbar survival timer; just fade out on survivals

* Add linear healthbars option; WIP other boss HUD tweaks

* Use the proper spell card name format

* New font and some random garbage to go along with it

* Generate static font outlines for use in text shaders

* Use outlines in overlay text shader

* Complete boss HUD/healthbar fading logic

* fix boss timer limit

* stage5 bombs explosion effect

* split PFLAG_NOSPAWNZOOM into PFLAG_NOSPAWNFLARE and PFLAG_NOSPAWNFADE;

introduce PFLAG_NOSPAWNEFFECTS which disables both (it's just the two
values OR'd together)

simplify vampiric vapor bullet spawning effect

* Remove spawn fade-in from super-fast stage5 fairy projectiles (limiters)

* lower particle density in v.vapor in minimal mode

* graze effect tweaks

* fix text shortening, tweak replay menu layout

* stupid debug spam

* revisit grazing effects again

* dumb debug spam again

* improve boss attack timer

* overlay effect for boss deaths (similar to the player one)

* spice up spellcard declaration (HUD)

* don't spawn boss death overlay if fleed

* modify Exo2 font to use tabular figures

* adjust replay menu for the font change

* draw timer & power with standard font (phasing out the numbers font)

* WIP new HUD; random fixes/tweaks

* hud: move difficulty indicator

* hud: move debug stuff around

* preloads, mostly

* fix youmuA batching conflict

* shitty workaround for the shitty screenshake shit

* remove extraspell lag by stopping to draw stagebg sooner

which is possible because extra spells have a different spellcard_intro timing. Fun fact of the day: the duration of spellcard_intro is always ATTACK_START_DELAY_EXTRA even for normal spells!

* new stain particle

*  i disabled background rendering…

* "batch" marisa_b masterspark draws

* remove these once a new atlas is generated

* make toe quick again

* hopefully fix all occurences of changed stain and ScaleFade behavior

* tweaking reimu_a and toe boson launch effects

* make lhc fast again

* softer involnerability effect

* fix stage 1 snow on the water bug (and improve performance)

translated the time to the future a bit because it only seemed to be an issue for small time values

* remove unnecessary spawnflare from toe

* tone down extra spell start effect

* experimental ReimuB gap shader optimization

* fix python3 shebangs

* generate simple blur shaders w/ hardcoded kernels

* New loading screen

* lasers: fix incorrect draw hook registration

* add webp support for atlas generator

* Use ImageMagick for atlas composition (adds 16-bit support)

* Atlas maintenance

* make the vampiric vapor bullets less prone to invisibility

* Revert a few particles to the quadratic fade curve

* experimental baryon effect

* improve baryon sprites

* disable the baryon effect on minimal postprocessing setting
2019-01-05 00:59:39 +02:00
Andrei Alexeyev
d4650d4b92
Allow projectile rules to delete other projectiles; add stage_clear_hazards enhancements 2018-08-05 20:58:50 +03:00
Andrei Alexeyev
e9ef77abee
basic entity damage generalization 2018-07-30 10:04:39 +03:00