Commit graph

205 commits

Author SHA1 Message Date
laochailan
32f1aeceed loop player shot sounds for consistent timing 2018-06-13 21:12:57 +02:00
Andrei Alexeyev
83a8961df6
use "anchored" lists for most game objects
these have a pointer to the last element, thus appending is fast
2018-06-01 21:40:18 +03:00
Andrei Alexeyev
eb43370c1d
Give projectiles EVENT_BIRTH and call them with t==0 more consistently
The only case of t==0 being skipped is if the projectile was somehow
created after the projectile processing loop for this frame has been
finished. Currently that is only possible if a particle spawns a
non-particle projectile, which, ideally, should never happen. The same
problem exists with other types of entities. For example, if you have a
funny projectile rule that spawns an Enemy, that Enemy will have the 0th
frame skipped. One way to fix this is to maintain a list of all entities
in the game and process them all in a single loop, where newly spawned
entities would be appended to the tail of the list. This is also
probably the only good way to fix this, too.

Handling of all projectile events has been made mandatory to facilitate
easier debugging of subtle and/or hard to track bugs. If t<0, then the
projectile rule MUST return ACTION_ACK, signifying that it acknowledged
the event and handled it appropriately. Otherwise, it SHOULD return
ACTION_NONE or ACTION_DESTROY. In a perfect world, those just wouldn't
be conflated in the same function with update logic.

I've also cleaned up the stage_logic routine a bit. Moved most of the
dialog handling into dialog.c and gave higher priority to boss
processing. The later is currently necessary to let boss-spawned
projectiles and particles to get called with t==0.
2018-05-16 02:38:47 +03:00
Andrei Alexeyev
ba1e54112a
GAS GAS GAS, I'M GONNA STEP ON THE GAS 2018-05-08 08:42:43 +03:00
Andrei Alexeyev
45da133768
player property system; adjust character speeds and PoC 2018-05-02 09:08:32 +03:00
Andrei Alexeyev
f67396423e
Projectile prototypes system (#118)
* wip projectile prototypes

* Partial fix for replay desyncs

* some YoumuA fixes

* fix various ToE problems

* fix MarisaB

* fix master spark

* fix iku slave particle position

* this timeout was somehow halved during the changes

* remove some v1.2 compat hacks
2018-05-02 07:46:48 +03:00
Andrei Alexeyev
fd06ad3026
fix some of the set_ortho/draw_fbo madness 2018-04-26 02:50:48 +03:00
Andrei Alexeyev
8ef5ffd32c
Flexible draw order; entity "base class" for all game objects 2018-04-15 09:43:11 +03:00
Andrei Alexeyev
59cf8f6300
Rendering system rewrite, tons of refactoring, optimizations, and other cool stuff (#116) 2018-04-12 17:08:48 +03:00
Andrei Alexeyev
a9561d7baf
Sprites and texture atlases; upgrade most graphics to a higher resolution (optimized for 1600x1200) (#113) 2018-02-06 08:19:25 +02:00
Andrei Alexeyev
e5c391175b
fix MarisaB's stars interfering with other DRAWADD projs 2018-01-12 21:43:27 +02:00
Andrei Alexeyev
513d613387
Consistent indentation: indent with tabs, align with spaces (#104)
I would've preferred to just go with 4-spaces for indent and no tabs,
but lao is a bit conservative about it. :^)

Still, this is a ton better than mixing different styles all over the
place, especially within the same file.
2018-01-12 20:26:07 +02:00
Andrei Alexeyev
f4cd177b1a
add option to disable most particle effects. use PFLAG_REQUIREDPARTICLE to ignore it 2018-01-11 22:40:46 +02:00
Andrei Alexeyev
0e907c9c58
make the stage1 noreflect hack less bad 2018-01-11 22:16:18 +02:00
laochailan
8a42aa6d76
messing around with the stage 3 spell bgs 2018-01-06 21:56:27 +01:00
laochailan
5f17bfffd0
maribomb stretches over the whole screen now 2018-01-06 16:36:59 +01:00
Andrei Alexeyev
485c9a8ed6
Happy New Year! 2018-01-04 19:14:31 +02:00
Andrei Alexeyev
6181c83daf
Make YoumuB Great Again 2018-01-04 13:32:20 +02:00
Andrei Alexeyev
f8cf13bdf3
more efficient FBO handling 2018-01-03 16:38:42 +02:00
laochailan
61ed98dfba
make Masterspark thicc
as per Ultroloth’s suggestion
2017-12-30 09:26:35 +01:00
Andrei Alexeyev
141c9da071
MarisaA: piercing lasers, reduced main shot dmg on higher pwr, lasers sway a bit when moving 2017-12-28 12:40:40 +02:00
Andrei Alexeyev
d55695739e
revamp projectile collision system; make trace_projectile more flexible 2017-12-28 11:05:54 +02:00
Andrei Alexeyev
3bef204dbd
include youmu header 2017-12-24 17:55:27 +02:00
Andrei Alexeyev
29acd5f58a meson: intel intrinsics, various improvements 2017-12-21 03:58:54 +01:00
laochailan
6b6428662a
properly stop bomb shake view 2017-12-17 09:38:38 +01:00
Andrei Alexeyev
3d5c4707c3
fix some preloading issues 2017-12-14 17:07:24 +02:00
Andrei Alexeyev
12733cdda6
remove unused function 2017-12-13 21:11:30 +02:00
Andrei Alexeyev
643b9444f3
post-rebase cleanup 2017-12-10 10:57:12 +02:00
Andrei Alexeyev
7dbee96dc1
Buff MarisaA lasers 2017-12-10 10:54:44 +02:00
laochailan
682640a6bd
fix silly time normalization mistakes 2017-12-10 08:53:48 +01:00
laochailan
eebfbde7c3
missing resource 2017-12-10 08:53:47 +01:00
laochailan
9869c7dc5a
youmu bomb renewal 2017-12-10 08:53:47 +01:00
laochailan
1fe86e4445
fix integer division 2017-12-10 08:53:47 +01:00
laochailan
28b4ec4449
wip youmu a bomb 2017-12-10 08:53:47 +01:00
laochailan
fd65e922fd
marisa b new bomb 2017-12-10 08:51:41 +01:00
laochailan
be785e963c
started marisa b bomb 2017-12-10 08:44:44 +01:00
laochailan
cb0a1f3eb1
tweaked the masterspark effect 2017-12-10 08:44:44 +01:00
laochailan
16f443e54c
redo masterspark 2017-12-10 08:44:37 +01:00
Andrei Alexeyev
e7b1b9f22a
MarisaB changes 2017-12-06 01:34:15 +02:00
Andrei Alexeyev
a3404b30f6
fix math fail 2017-12-06 01:34:14 +02:00
Andrei Alexeyev
8b6d1eafc8
YoumuA changes 2017-12-06 01:34:14 +02:00
Andrei Alexeyev
7d98edaa54
extended youmuA controls: release fire to recall myon 2017-12-06 01:34:14 +02:00
Andrei Alexeyev
db632a710a
YoumuB changes 2017-12-06 01:34:14 +02:00
Andrei Alexeyev
fbf61e5ef4
fade marisaA's laser emitters when too close to bullets 2017-11-17 02:07:52 +02:00
Andrei Alexeyev
76ee80b6da
(attempt to) prevent draw code from altering state 2017-11-16 22:25:03 +02:00
Andrei Alexeyev
586af9a6b0
huge projectile API changes and optimizations (#93) 2017-11-10 22:49:16 +02:00
Andrei Alexeyev
48ae69bd24
generalize trace_laser into reusable trace_projectile 2017-11-01 06:47:36 +02:00
Andrei Alexeyev
3b45e5f010
double enemy 'hitbox' radius 2017-10-31 08:58:39 +02:00
Andrei Alexeyev
68f17ec3f3
fuck this shit, i'm not a color engineer 2017-10-31 08:57:35 +02:00
Andrei Alexeyev
62c34e3b5a
WIP fucking badass Marisa lasers 2017-10-31 08:57:32 +02:00
Andrei Alexeyev
7f72c1c09a
smooth(er) bomb cancellations
speed up the bomb animation when the boss spell is approaching, but only
if it can't be finished properly in time
2017-10-17 23:27:35 +03:00
Andrei Alexeyev
9d7a534983 fix declarations of marisa plrmodes 2017-10-10 08:23:36 +03:00
Andrei Alexeyev
0b40ec0d44 fix missing include for windows 2017-10-10 08:23:36 +03:00
Andrei Alexeyev
db50f671fa plrmodes: streamline bomb sounds, improve preloads 2017-10-10 08:23:36 +03:00
Andrei Alexeyev
1992a62592 desperate attempt at refactoring plrmodes 2017-10-10 08:23:36 +03:00