Commit graph

71 commits

Author SHA1 Message Date
Andrei Alexeyev
be5ee1900d
replace remaining Fade usage in non-stage code 2020-03-04 22:26:46 +02:00
Andrei Alexeyev
dc8ecc0dc7
use new RNG api in boss.c, enemy.c, item.c 2020-03-04 22:26:43 +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
laochailan
5f6ada9e7e Item indicators (#172)
* indicators indicate indication

* optimize

* preload the right resource

* integrate point indicators into atlas
2019-06-25 07:27:57 +03:00
Andrei Alexeyev
36c5d6974b
optimize and simplify object pools 2019-04-12 11:36:40 +03:00
Andrei Alexeyev
488ff43f85
add optional floating scoring text 2019-04-07 01:55:13 +03:00
Andrei Alexeyev
c8e281bc02
fix all items being autocollected immediately 2019-03-09 18:25:34 +02:00
Andrei Alexeyev
f87ac189ef
replace item spawning functions with type-safe versions 2019-03-03 13:53:45 +02:00
Andrei Alexeyev
8fc5abb78a
The Powersurge game mechanic and scoring system (#159) 2019-02-22 01:56:03 +02:00
Andrei Alexeyev
fa802dbd94
Some refactoring
* Added (and fixed) a few useful warnings
    * Removed some dead code
    * Cleaned up the build system files a bit
    * Once again separated ZIP support from data packaging
    * Converted macOS cross-compilation options into cross-file properties
2019-01-24 22:24:43 +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
795668be87
fix delete_items not properly unregistering entities 2018-08-31 06:20:47 +03:00
laochailan
a9048d22b1
relayer the particle clearing lasagna 2018-08-07 18:42:41 +02:00
Andrei Alexeyev
12a9acbc71
Add more functions to query player state properly (is alive, is vulnerable, is bombing)
There are some minor changes to the logic to keep things consistent.
2018-07-31 10:07:34 +03:00
Andrei Alexeyev
8490576810
Premultiplied alpha (#133)
* WIP premultiplied alpha

* WIP color API rework (doesn't build yet; lots of things left to convert)

* convert everything remaining to new Color api except stage*_event.c files

* convert the stages to new Color api. builds & runs now; still many rendering errors

* fix the bullet shader for premultiplied alpha

* fix masterspark, graphs and stage 1 fog clouds

* fix marisa_b and most of spellcards

* Add deprecation warnings for BLEND_ADD and PFLAG_DRAWADD

* fix a segfault in stage 6

undo accidental earlier change

* fix text_hud.frag.glsl

* fix scuttle bg and remaining stage3 BLEND_ADDs

* fix marisa laser opacity

* hacky fix for myon

The old implementation relied on alpha being stored inside p->color. In
premul alpha this doesn’t work and functions like color_set_opacity
can’t solve this i think.

So I tried messing around with it until it looked somewhat similar.

* fix marisa_b stars

* remove color_set_opacity i overlooked

* more plrmode blending changes

* fixup additive blending in stage 1

* various premultiplied alpha fixups for bosses and enemies

* stage 2 premul alpha fixups

* stage 4 premul alpha fixups

* stage 5 premul alpha fixups

* stage 6 premul alpha fixups

* make lasers also use the PMA blend mode

* remove PFLAG_DRAWADD and PFLAG_DRAWSUB

* fix remaining PMA issues in menus

* lame extraspell bg workaround

* fix item alpha

* make marisaA lasers look somewhat like in master

* fix marisaA bomb background fadeout

* fixup various r_color4 calls

* fix myon

* remove dead code

* fix use of BLEND_ADD in player death effect

* fix myon shot trails (broken on master as well)

* fix myon shot fade-in

* extend the sprite shaders custom parameter to a vec4

* fix youmuB stuff and make it look somewhat better.

the code looks even worse though.
2018-07-23 20:07:59 +03: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
c967fafa96
give items slightly more upwards velocity on spawn 2018-05-16 21:08:21 +03:00
Andrei Alexeyev
ebd751b25f
fix power items dropped on death instantly disappearing under some conditions 2018-05-16 20:55:03 +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
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
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
d73f8d28a3
add head version of list_insert_at_priority, use it for proj_insert_colorprio (slightly faster) 2018-01-09 21:54:03 +02:00
Andrei Alexeyev
485c9a8ed6
Happy New Year! 2018-01-04 19:14:31 +02:00
Andrei Alexeyev
e355e57fb5
make the list api require less insane casts all over the place
by sealing the spirit of insanity in its header file, that is
2017-12-24 08:16:25 +02:00
Andrei Alexeyev
29acd5f58a meson: intel intrinsics, various improvements 2017-12-21 03:58:54 +01:00
Andrei Alexeyev
abbc62b49c
object pools 2017-12-13 21:08:23 +02:00
Andrei Alexeyev
7b53d9e731
redesign list api 2017-11-21 16:45:01 +02:00
Andrei Alexeyev
b61ef0bffc
more strict warnings; fixed some subtle bugs 2017-11-11 19:33:44 +02:00
Andrei Alexeyev
586af9a6b0
huge projectile API changes and optimizations (#93) 2017-11-10 22:49:16 +02:00
Andrei Alexeyev
00bd11ea89
item tweaks; improved after-death grace period
* items bounce off the viewport "walls"
    * autocollect is interrupted on death
    * all projectiles are continuously cleared during the death and
    respawn process
2017-10-31 15:47:20 +02:00
Andrei Alexeyev
62c34e3b5a
WIP fucking badass Marisa lasers 2017-10-31 08:57:32 +02:00
laochailan
5686b45201 fixed full power at stage start 2017-09-19 11:52:18 +02:00
Andrei "Akari" Alexeyev
7fc2839fcb
various gameplay/balance adjustments and fixes
mostly it's boss HP buffs. very roughly playtested, so may be far from
ideal.

improved spread of item drops

fixed extraspell deaths affecting lives, power, bombs, etc.

increased the value of spell bonuses very substantially

made some tweaks to Elly's non-spells
2017-09-13 16:41:28 +03:00
Andrei "Akari" Alexeyev
7c9e54a71d
update copyright and credits 2017-09-12 04:28:15 +03:00
Andrei "Akari" Alexeyev
33cdd71be0 Spawn life/bomb fragments every 50k/20k points earned
numbers subject to change
2017-03-25 20:18:24 +02:00
Andrei "Akari" Alexeyev
31bbef7aae made spawn_items more consistent and documented it 2017-03-25 08:46:20 +02:00
Andrei "Akari" Alexeyev
02afd3117c redesigned spawn_items for extensibility and clarity
so that we don't have to change it every time we add a new item or
remember the order of arguments.
2017-03-24 22:07:19 +02:00
Andrei "Akari" Alexeyev
748043c8ca Added the life/bomb fragment items 2017-03-24 21:42:56 +02:00
Andrei "Akari" Alexeyev
263c112e8a Basic support for life/bomb fragments. Not yet used by the game. 2017-03-21 12:10:38 +02:00
Andrei "Akari" Alexeyev
67128fad8f Consistent drawing order of items based on significance
So e.g. a Life will never be obscured behind a Point
2017-03-19 05:09:41 +02:00
Andrei "Akari" Alexeyev
c82928a8da WIP transition from resource scanning to manual preloading 2017-03-11 21:36:25 +02:00
Andrei "Akari" Alexeyev
591b5258fc Improved player input handling. Smooth focus transitions at all times.
Note that the focus change may desync some old replays (particularly,
the MarisaA ones)
2017-03-06 16:24:57 +02:00
Andrei "Akari" Alexeyev
db3f474035 Got rid of all the imaginary constants
They are a non-standard GCC extension, not all compilers support them
universally. An extra character is a small price to pay for portability.
2017-02-23 12:39:31 +02:00
Andrei "Akari" Alexeyev
16cbec9ca1 Special rules for spell practice mode stages 2017-02-19 03:28:00 +01:00
Andrei "Akari" Alexeyev
0be20dab0d Improved replay consistency 2017-02-15 19:34:47 +02:00